##笔记记录

还没找到可以在Hololens2上离线中文转文字的好插件,所以用的是讯飞的离线中文语音。

讯飞的离线中文语音是安卓版本的,思路就是MR上发送需要转文字的语音数据到服务器上,然后服务器往安卓(离线中文语音)上发送这段语音数据,在安卓上进行转文字后再返回给服务器,服务器发给MR。

Unity- Hololens2

MR上开发获取语音数据就可以用unity的Microphone来获取麦克风输入的语音数据

au.clip = Microphone.Start("", false, 10, 16000);

au.Stop();

获取语音数据和保存文件可参考:

unity录音并保存为mp3或wav文件(pc端) - 路过暴风的个人空间 - OSCHINA - 中文开源技术交流社区

然后通过HTTP发送语音文件到服务器端。

注意:如果MR上测试麦克风输入后得到的音频音量很小,环境声音会覆盖人输入的声音,可以买个type-c麦克风插在MR上。 准备试下Hololens上的MicStream的麦克风输入的,结果卡在了MR上这部分的DLL缺失问题。

MicSteam可参考:

Voice recording/playing — Mixed Reality Developer Forum

GitHub - microsoft/MixedRealityToolkit-Unity at htk_release

I want to know how to use Microphone Stream Selector with HoloLens2 - Microsoft Q&A

服务器

建立一个与MR进行HTTP交互,与安卓进行websocket交互的服务器

安卓端-讯飞离线中文语音

再Andorid studio上开发出讯飞离线中文语音的arr包,再导入Unity进行开发安卓。

Andorid Stuidio:

导入讯飞的Msc.jar和导入untiy的classes.jar。

导入讯飞的离线中文库:两个.jet文件

基于下面这个在线语音安卓工程改成了离线的中文语音

https://download.csdn.net/download/chunyu90225/12217992?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-download-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-12217992-blog-104691921.235%5Ev40%5Epc_relevant_rights_sort&depth_1-utm_source=distribute.pc_relevant.none-task-download-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-12217992-blog-104691921.235%5Ev40%5Epc_relevant_rights_sort&utm_relevant_index=5

设置离线:

mIat.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_LOCAL);
mIat.setParameter(ResourceUtil.ASR_RES_PATH,getResourcePath());
public static String getResourcePath()
{
    StringBuffer tempBuffer = new StringBuffer();
    tempBuffer.append(ResourceUtil.generateResourcePath(UnityPlayer.currentActivity,ResourceUtil.RESOURCE_TYPE.assets,"iat/common.jet"));
    tempBuffer.append(";");
    tempBuffer.append(ResourceUtil.generateResourcePath(UnityPlayer.currentActivity,ResourceUtil.RESOURCE_TYPE.assets,"iat/sms_16k.jet"));
    return tempBuffer.toString();
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐