C#音频截取与原文匹配

1.需求

上传一个音频文件(例如英语听力的音频)与音频对应的原文word文档。大概估算音频中一段对话到另一端对话的时间间隔,将音频截取为不同对话的小音频文件,通过百度语音识别转换成英文,然后与原文对比。

2.先上结果图吧。大概的效果如图所示

timespan是每段对话的开始时间戳,file_url是我上传到服务器的音频文件地址,baiduText是百度语音识别的结果,contractText是匹配之后的结果,percent是字符串相似度匹配百分比。

3.实现思路

3.1.上传文件并保存就不说了。后面会放源码。

3.2.异步循环处理音频,直到结束

3.3.读取音频文件,根据时间间隔获取需要的时间戳

这里需要先将音频文件转换为wav的波形文件。(第一版本的时候我用的NAudio,但是没用好)

根据波形数据,判断是否有声音,并记录下有声音和没声音的时间点

3.4.根据时间点,截取音频。我用的是NAudio。由于百度只能识别60s以下的音频,所以对超过60s的音频做了处理。另外百度识别音频最快的格式是pcm,所以也做了转换,音频转换也是用的NAudio

(****这里修改了一个bug,截取超过60s的音频时,要重新读音频流,然后再截取,不然后面的时间会乱。截图我就懒得换了)

3.5.百度语音识别可以看百度官网。我这边的access_token和过期时间直接写xml文件了

3.6.百度语音识别的结果与原文匹配

3.7.中文匹配,匹配的每个字符,匹配算法如下

3.8.英文匹配的每个单词

 

4.源码下载

https://github.com/zhaoshangtong/AudioTool

5.结语

目前这是第一个版本,肯定有不完善的地方。欢迎交流~

ps:不用推荐,不用点赞,要脸~~哈哈哈哈哈哈哈哈哈哈

posted @ 2018-05-24 14:55  zhaoshang  阅读(1163)  评论(0编辑  收藏  举报