天天看點

LP-PSOLA算法之(一) 語音變速一 .概述二. 語音變速步驟

本文實作語音變速的方法是基于線性預測,有人問,時域做變速方法很友善,為何要用線性預測來做?

  1. 語音編碼,得到每幀信号的lpc系數和基音頻率,就能預測出語音。
  2. 該方法可算出共振峰等參數,友善做變調的時候,對共振峰進行調整。
  3. 通過LP-PSOLA算法,學習基音檢測的原理和算法,友善開展更多工作。

一 .概述

1.1 語音變速屬語音更改範疇,兩方面研究:

1.聲學參數,如共振峰頻率,基頻,主要由聲道差異決定。

2.韻律學參數,如說話快慢,節奏,口音不同。

1.2 變速本質:

把語音在時間上縮短或者拉長,而語音的采樣頻率/基頻/共振峰不改變。

LP-PSOLA算法之(一) 語音變速一 .概述二. 語音變速步驟

如圖,上半軸表示原始語音,下半軸表示變速後的語音。上半軸大圓點表示每一幀的起始位置,下半軸小圓點表示變速後的每一幀起始位置。

語音時間減少,語速增加,縮短語音幀數fn’比原幀數少,是以要對幀數fn進行插值。

縮短語音每一幀對應的原始信号的時間,并不是原始信号的時刻,是以要對基音周期進行插值。

同樣要對線性預測系數進行插值。

二. 語音變速步驟

  • 分幀/基因檢測/計算lpc系數。
  • 按照新的語音時長,對幀數fn插值為fn‘。
  • 将ai系數轉化稱LSF參數,對LSF參數插值。
  • 将插值後的LSF系數重構為1-fn’幀線性預測系數ai’。
  • 用預測系數ai’和基音參數合成語音。

PS. 這裡講一下插值函數Interp1函數的使用:

MATLAB hep:1-D data interpolation (table lookup)

既然有interp1,那一定也有interp2/interp3,interp1用來對一維數組進行插值,但是,interp1也可用用來做二維數組的插值,也是一維一維地處理。

用框圖表示流程:

LP-PSOLA算法之(一) 語音變速一 .概述二. 語音變速步驟

三. MATLAB仿真結果

LP-PSOLA算法之(一) 語音變速一 .概述二. 語音變速步驟

說明: 注意橫坐标,原始信号得時間長度大概為2.5秒,速度放慢一倍,語音長度變為5秒,在相同采樣頻率fs = 8000Hz下,語音速度就變慢了。

參考文獻:

[1] 宋知用. Matlab在語音信号分析與合成中的應用[M]. 北京:北京航空航天大學出版社:2013.

繼續閱讀