在进行语音识别模型的训练和测试语料收集的过程中,我们需要对收集到的语料进行归一化处理。
收集到的语料应每个命令词或句子单个截下来,对其进行归一化处理。因为即使是同一个人,在读不同的命令词的时候,音量也会不一样。特别是在语料录制的过程中,由于志愿者的逐渐疲惫,后面录的命令词的声音,可能会偏弱一些。
对语料进行归一化处理的基本原理是:取一段语料中幅度最大的点将其幅度拉大到接近1,记录拉大的比例,再将其他所有点均按这个比例拉伸。这个操作可以在Audacity等音频处理软件中进行处理,也可以使用以下方法进行操作:(该方法由全志算法友商提供,仅供全志内部使用,不对外开放,但自己实现其实也很简单)
处理方法
(1)将do_pcm工具复制到ubuntu PC的任意目录下。chmod 777 do_pcm。此时执行该工具会打印如下帮助信息:
chenkunyao@ubuntu-chenkunyao:~/test$ ./do_pcm pcm file process: [ -h]: show help information [ -i]: input file path [ -o]: output file path [ --nchi]: number of input file channels, default 1 [ --ncho]: number of output file channels, default 1 [ --ichi]: channel index select from input file: 0,1,...(default 0,i.e, mean val) [ -b]: bitwidht default 16 [ --ri]: input sample rate, default 16000 [ --ro]: output sample rate, default 16000 [ --norm]: whether or not to do pcm offline normalization, default 0 [ -v]: get split version needed 0 [ --hp]: high pass [ --ali]: align pcm by m_sequence,default 0 [ --delay]: for two channel signal to calculate delay [ --ali_s]: align pcm ,seconds to start with,default 0 [ --ali_e]: align pcm , seconds to end with ,default -1,which means 3min inputs [ --split]: split pcm by m_sequence,default 0, 1 means split words,2 means split person by start, 3 means split person by end [ --ms_cut_s]: start pos in ms [ --ms_cut_e]: end pos in ms [ --snr]: snr calculate |
(2)使用Audacity或其他音频处理软件从采集到的语料中截取单个命令词,保存为一个.wav文件。
扫描二维码关注公众号,回复:
3584675 查看本文章
(3)在ubuntu PC上使用命令./do_pcm -i in.pcm -o out.pcm --norm对语料进行处理,得到的out.pcm则为一个处理好的语料文件,如:
幅度调整范围是-32767-72767
归一化处理前好的两个语料的对比(上方为处理前语料的音轨,下方为处理好语料的音轨):
频谱图对比: