搞了几天,有些坑记录一下。
3个方面的知识需要学习
1、制作UE4插件
2、引入第三方库
3、讯飞听写的api
一看是参考 https://blog.csdn.net/u012793104/article/details/78067937
http://doc.xfyun.cn/msc_windows/%E8%AF%AD%E9%9F%B3%E5%90%AC%E5%86%99.html
API:http://mscdoc.xfyun.cn/windows/api/iFlytekMSCReferenceManual/qisr_8h.html
整个插件架构:录音 ->识别(讯飞语音听写,即上图架构)->本地转码 以显示
主要需要了解的API: QISRSessionBegin 需要你更改自己的参数,可以按照下载的案例改
QISRAudioWrite: 搞懂这个才能明白整个讯飞识别功能的机制
开发过程主要的问题表现为打印信息有时并不是中文,而是未转换的拼接字符串
所以好好看了看 下载的案例,和API 经过不断调试才发现就是json的问题
之前的代码 都是拼接所有 从 QISRGetResult获得的结果,然后最后一步转换,所以出现问题了.
比如录入"床前明月光"
{"sn":1,
"ls":false,
"bg":0,
"ed":0,
"ws":
[
{"bg":1,"cw":[{"sc":0.0,"w":"床"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"前"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"明"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"月光"}]}
]
}
{"sn":2,"ls":true,"bg":0,"ed":0,
"ws":
[{"bg":0,"cw":[{"sc":0.0,"w":"。"}]}]
}
如果结果为上面,则无法转换json以致原样输出,因为这是直接将两个json对象拼接了。
{"sn":1,
"ls":false,
"bg":0,
"ed":0,
"ws":
[
{"bg":1,"cw":[{"sc":0.0,"w":"床"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"前"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"明"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"月光"}]}
]
}
这种情况就会成功输出中文。
所以问题是 我获得的结果有时被加了一个句号,我想着应该是语法的缘故。
所以我换了一个方法,先解析再拼接 解决了问题。
----
ps:测试要时刻注意麦克风是否正常·,别搞自己
下载地址:
github:https://github.com/huzhongyidihao/XFPlugin