aidatatang简介及相关安装、配置等见上一篇文章:Kaldi语音识别:aidatatang_asr开源模型实现中文语音识别详细及遇到的问题【亲自跑通】
一、面临的问题
用CVTE提供的测试集试验跑通了aidatatang后,需要根据自己的需求来确定问题。
1.1 模型运行后测试结果的文本覆盖问题
问题描述:
如果不对项目文件作修改,每次跑模型都会在同一个输出文本文件中以’a’的方式写入新的识别结果,它并不会每次运行自动清空Result里的文本,这样看起来会比较乱,如下:
问题解决:
找到写result的python文件,路径/home/keep/Keep/kaldi/egs/aidatatang_asr/local/extract_decode_log.py
,将下面的代码添加到第9行至第10行之间。
with open(outfile, 'w') as n:
n.write("")
即:
这样就实现了每次运行都会自动清空result中的文本。
1.2更换WAVPath中数据后的识别结果没有更新
问题描述:
在运行完一次识别任务后,识别结果会放在指定的路径中的名为rec_2021xxxx.txt(xxx表示日期)文本文件中。更改WAVpath中的需识别的测试数据集.wav后,在第二次以及之后运行识别任务不会更改之前的识别内容,即,模型仍然将之前加载进来的测试数据作为需要识别的任务进行识别并输出。
问题解决:
待补充
二、制作自己的语音数据作输入
这里用sox工具来制作.wav数据,语音文件原格式是通过iPhone录音录制的.m4a格式。
SoX 可以读取和写入常见格式的音频文件,并在此过程中选择性的加入一些声音效果。它可以组合多个输入源及合成音效,在许多系统上也可以作为音频播放器或多轨录音机使用。
SoX 工具在大部分 Linux 系统上都可以直接通过软件包管理器安装(如sudo apt-get install sox),Mac 系统上则可以使用 brew install sox命令。
这里使用Sox转换m4a的指令后出现
sox FAIL formats: no handler for file extension `m4a'
查阅了相关资料,发现其他人说sox不能转m4a格式
# sox 不行, ffmpeg 很麻烦,用 avconv 很简单。安装 如果没有就安装
# apt-get install libav-tools
avconv -i xx.m4a xx.wav
暂时用一个在线网页版转换代替:在线转音频格式
搞到了待检测语音文件16bit,16000hz的.wav文件,将其放置在WAVpath文件夹中。
sox工具的相关使用感谢:https://blog.csdn.net/qq_39516859/article/details/87980189
三、运行识别任务
在aidatatang_asr/
中键入./run.sh WAVpath
命令后,开始识别任务。
经过了大约8~9分钟的等待(有点久,还不知道为啥),识别完毕,结果放置在目录exp/chain/tdnn_1a_sp/decode_offline_test_20211110/rec_20211110.txt
内
查看识别结果:
前面的拼音对应的就是答案标签,录制环境是在略微嘈杂的实验室内(身边同学恰好在讨论问题),识别正确率76%。