目录

Unity 讯飞实时语音转写(一)—— 使用WebSocket连接讯飞语音服务器
Unity 讯飞实时语音转写(二)—— 接收转写结果
Unity 讯飞实时语音转写(三)—— 分析转写结果
(应该没有后续了)

说在前面
这段时间一直在忙其他事情,所以语音识别的工作暂时交接到了同事手中,今天同事将后边的工作完成了,我就把源代码要了过来,也在此做一下记录。

分析结果如下:

上面是原文,下面是解析语音后的结果。

这个是加上了热词高亮的样子

正文

一、连接字符串
在上一篇文中说到,我们已经可以得到讯飞返回给我们的转写结果,只不过是某种格式的json字符串,可读性差,那么就需要我们将该json字符串中有用的字段提取出来。

    /// <summary>/// 获取识别并返回字符串/// </summary>/// <param name="data">所获取的识别的Json字符串</param>/// <returns>所识别的连贯的一句话</returns>void AnalysisResult(string data){Data result = JsonUtility.FromJson<Data>(data); // 等效于 JsonConvert.DeserializeObject<Data>(data)StringBuilder stringBuilder = new StringBuilder();//Debug.Log(result.cn.st.rt[0].ws.Length);for (int i = 0; i < result.cn.st.rt[0].ws.Length; i++){//******只有w字段有用,将其提取出来即可******stringBuilder.Append(result.cn.st.rt[0].ws[i].cw[0].w);}string _thisType = result.cn.st.type;string testing = stringBuilder.ToString();//Debug.Log(stringBuilder + "***" + _thisType);//type    结果类型标识  0-最终结(即这句话说完了);1-中间结果(即这句话没说完,下一句转写结果可能推翻前面的内容)if (_thisType.Equals("0")){endText = endText + testing;_text.text = endText;}else{_text.text = endText + testing;}}

这样我们就能得到一段连续的,可读性非常好的一句话。

二、个性化热词
下一步我们想要能够在转写的结果中找到一些热词,这些热词可以是当前流行的,或是某个行业的(金融、游戏等等),也可以是我们自定义的一些热词。
那如何设置自定义热词呢,讯飞官方已经给我们提供了一些接口。
打开讯飞开放平台,以此找到:语音识别-实时语音转写-个性化热词,然后按照要求填写热词,然后保存热词即可。
官方要求:
热词配置格式:每行一句热词(2000行以内,每行不多于10个字),以回车键隔开。
热词内容要求:限UTF-8 编码中文字符,不能有数字和字母。

需要注意的是中英文都是各占一个字符,比如hologarment是11个字符,就不能作为热词,可以拆分成holo,garment两个关键词。

三、热词筛选
有了热词后,接下来就是如何在程序中识别热词,并高亮显示热词。

  1. 首先在工程中新建一个txt文档,然后将网站上的热词保存进去。之后让Unity以文本资源的形式读取成字符串。
    void Start(){path = Application.streamingAssetsPath + "/hologarment.txt";ReadText();}
  1. 然后按行读取文本,并存储到一个字符串中
    public void ReadText(){string line;using (StreamReader stream = new StreamReader(path)){while ((line=stream.ReadLine())!=null){//Debug.Log(line);keyWord.Add(line.Trim());//keyWord就是热词的集合readText.text = readText.text + "\n" + line;}}}
  1. 识别热词算法如下:
/// <summary>/// 关键词标识/// </summary>/// <param name="content">待处理文本</param>/// <param name="keyWord">关键字集合</param>/// <param name="befordLabel">关键词前加入string</param>/// <param name="afterLabel">关键词后加入</param>/// <returns></returns>public string SclectKeyWord(string content,List<string> keyWord,string befordLabel, string afterLabel){char[] charArr = content.ToCharArray();List<string> keyArr = keyWord;List<char> listArr = new List<char>();int matchCount = 0;string buffWord = "";for (int i = 0; i < charArr.Length; i++){matchCount = keyArr.Where(r => r.StartsWith(buffWord + charArr[i].ToString())).Count();if (matchCount == 0){if (buffWord.Length > 0){if (keyArr.Contains(buffWord)){listArr.AddRange((befordLabel + buffWord + afterLabel).ToCharArray());}else{listArr.AddRange(buffWord.ToCharArray());}buffWord = "";matchCount = keyArr.Where(r => r.StartsWith(buffWord + charArr[i].ToString())).Count();if (matchCount > 0){buffWord += charArr[i];}else{listArr.Add(charArr[i]);}}else{listArr.Add(charArr[i]);}}else{if (matchCount == 1){if (keyArr.Contains(buffWord + charArr[i])){listArr.AddRange((befordLabel + buffWord + charArr[i] + afterLabel).ToCharArray());buffWord = "";}else{buffWord += charArr[i];}}else{buffWord += charArr[i];}}//收尾判断if (i == charArr.Length - 1){if (keyArr.Contains(buffWord)){listArr.AddRange((befordLabel + buffWord + afterLabel).ToCharArray());}else{listArr.AddRange(buffWord.ToCharArray());}}}return string.Join("", listArr);}
  1. 使用Unity的富文本红色高亮显示热词
    public string SetKeyWordColor(string contont){string resutl= SclectKeyWord(contont, keyWord, "<color=#FF0000>", "</color>");return resutl;}

至此,功能暂时告一段落。
这是我们老板的一段演讲词,我们以这段话为例

可能有小伙伴发现并非所有的热词都被识别出来了,表明热词识别算法有待优化,以后有时间再搞吧。。。

三、示例工程
考虑了一下,还是附上完整的工程文件吧,希望可以帮助正在测试该功能的小伙伴们。加油哦!
如何测试

  1. 下载后解压工程,Unity打开工程(我使用的是Unity 2019.4.9f1,需要Crack的同学可以看下我这篇文章)
  2. 找到脚本VisualCommunication.cs,在166,167行修改appid,appkey为你自己项目的对应值
  3. 启动工程,点击“开始转写”,然后对着麦克风说话;说完后点击“结束转写”,或者直接关闭程序都行,讯飞官方会在15s内没有接到转写请求时,自动关闭WebSocket连接,不用担心时长被意外耗尽

转载注明出处!!!

Unity 讯飞实时语音转写(三)—— 分析转写结果相关推荐

  1. Unity 讯飞实时语音转写(二)—— 接收转写结果

    目录 Unity 讯飞实时语音转写(一)-- 使用WebSocket连接讯飞语音服务器 Unity 讯飞实时语音转写(二)-- 接收转写结果 Unity 讯飞实时语音转写(三)-- 分析转写结果 正文 ...

  2. 讯飞实时语音转写 python3.6.1 可完美运行 解析返回的json字符串 输出所获语音文字

    百度语音识别对录音要求较高(可能是我的问题,sdk和在线api都试过了(滑稽保命)),失败后选择讯飞语音,官方提供的文档是python2版本的 ,经过修改后可在python3中运行 ,解析返回的jso ...

  3. 讯飞智能语音鼠标G50:AI语音、转写翻译、记录截图一键搞定!

    随着互联网的发展,智能鼠标已经成为我们生活和工作中不可或缺的组成部分.然而,鼠标滚轮异响.按键失灵.驱动难用.手感不合适等一系列问题仍时有发生,所以选择一款智能鼠标尤为重要,它不仅可以提高我们的工作效 ...

  4. 讯飞离线语音命令词识别

    讯飞离线语音命令词识别 强烈推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来! 网址:http://www.captainbed.net/yancyang ...

  5. Android 讯飞离线语音听写/离线语音识别SDK

    平台 Android + 讯飞离线语音SDK SDK包 下载路径及方法见讯飞官方SDK文档: 离线语音听写 Android SDK 文档 # 在开发者控制台, 可以直接下载SDK. SDK包中的文件结 ...

  6. Unity接讯飞在线语音API

    本文意在讲解如何利用讯飞官方提供的API通过讯飞服务实时的进行文字转语音. 先决条件:需要在讯飞官网注册自己的账号,拿到讯飞给的APPID.APISecret.APIKey,这三个字段是访问讯飞服务器 ...

  7. asr语音转写_python 腾讯/百度/讯飞 ASR 语音转文字

    因为项目中有需要把微信里的语音转成文本处理, 本次只说语音转文本. 需要注意的是平台对语音的格式有要求, 所以我们需要对语音进行转换格式. 语音转换 使用的工具是ffmpeg, ffmpeg的安装和配 ...

  8. 讯飞智能语音先锋者:等到人机交互与人类交流一样自然时,真正的智能时代就来了...

    作者 | 夕颜 出品 | CSDN(ID:CSDNnews) 「AI 技术生态论」 人物访谈栏目是 CSDN 发起的百万人学 AI 倡议下的重要组成部分.通过对 AI 生态顶级大咖.创业者.行业 KO ...

  9. 讯飞智能语音先锋者:等到人机交互与人类交流一样自然时,真正的智能时代就来了!...

    受访者 | 刘聪 记者 | 夕颜 出品 | CSDN(ID:CSDNnews) 「AI 技术生态论」 人物访谈栏目是 CSDN 发起的百万人学 AI 倡议下的重要组成部分.通过对 AI 生态顶级大咖. ...

  10. springboot 讯飞语音_讯飞智能语音鼠标实际体验感受

    这几天入手一个科大讯飞智能语音鼠标,我的实际体验感受就是"用嘴打字的体会,你体会不了!简称"嘴强王者"" 我拿到手的是lite版本,讯飞一共出了三款智能鼠标,分 ...

最新文章

  1. angularjs结合d3js实现资源展示
  2. jQuery 分页插件 jPages 使用
  3. serverless 框架_Serverless计算这么强大
  4. 云炬Android开发笔记 5-7网络框架优化与完善
  5. 计算机信息管理相关课题论文,计算机信息管理课题论文[].doc
  6. Jeecg-Boot上传附件异常问题处理
  7. 纯css单击事件,纯css实现点击事件
  8. echarts 曲线面积对比图
  9. 云计算学习4——Nova组件服务
  10. 【数据结构】悬空指针和野指针
  11. 校招linux基础知识,校招笔试整理 牛客网 2020小米校招(1)
  12. 首批小程序出炉,小游戏?
  13. 即席查询(Ad Hoc)如何做到又快又稳?
  14. IT行业专业术语_其他(学习笔记)
  15. myeclipse部署时An internal error occurred 错误的几种情况
  16. pmp-关键路径法之顺推和逆推
  17. 发明专利申请的必要条件
  18. php红包算法拼手气加普通红包
  19. 【大物实验数据处理】分光计的调节与应用,C++
  20. 用python批量获取cad中线段点组成的凸包 + 面积

热门文章

  1. DMG Canvas 3 for Mac 共享版 – 优秀的DMG安装包制作软件
  2. echarts雷达图显示数值
  3. PS安装失败解决方法
  4. [对于蓝桥杯要说的一二体会]
  5. 【STC单片机】STC15单片机读取MPU6050模块数据并串口输出
  6. 参数曲面matlab,MATLAB空间曲面的实现方法
  7. 网页制作 网页下拉菜单HTML+CSS制作
  8. 菜鸟驿站是什么快递_菜鸟驿站是什么快递(菜鸟驿站和快递点的区别)
  9. iis启动服务时提示在本地计算机 无法启动iis admin服务,iis 依存服务和组没法启动...
  10. 【设计心理学】格式塔理论