语音识别语料归一化处理的方法

在进行语音识别模型的训练和测试语料收集的过程中,我们需要对收集到的语料进行归一化处理。

收集到的语料应每个命令词或句子单个截下来,对其进行归一化处理。因为即使是同一个人,在读不同的命令词的时候,音量也会不一样。特别是在语料录制的过程中,由于志愿者的逐渐疲惫,后面录的命令词的声音,可能会偏弱一些。

对语料进行归一化处理的基本原理是:取一段语料中幅度最大的点将其幅度拉大到接近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

 

归一化处理前好的两个语料的对比(上方为处理前语料的音轨,下方为处理好语料的音轨):

 

频谱图对比:

 

 

猜你喜欢

转载自blog.csdn.net/weixin_43094346/article/details/82846059