ARモデル合成

ARMAだけを用いて、簡単な音声合成もどきの実験を行ってみよう。

ARモデル推定を行ったあと、そのモデルをパルス波形に適用して、「あ、い、お」っぽい音を作ってみる。

stacksize(10000000);
fs=8000;
//
x=int(modulo((1:fs)*100,fs) / fs * 1.1);
xr=convol([1,-0.6,0.35,-0.2,0.1],x);
//
l=1:3999;
x=loadwave("a.wav");
a=armax(50,50,x(l+1),x(l));
ya=arsimul(a,xr);
//
x=loadwave("o.wav");
a=armax(50,50,x(l+1),x(l));
yo=arsimul(a,xr);
//
x=loadwave("i.wav");
a=armax(50,50,x(l+1),x(l));
yi=arsimul(a,xr);
//
b=3000;
aoi(1:b)=ya(1:b);
aoi(b+1:2*b)=yo(1:b);
aoi(2*b+1:3*b)=yi(1:b);
//
sound(aoi*.1,fs);

 

このように、すでに学んだARモデル等の計算を用いれば、音声合成もどきのプログラムも簡単に作れてしまう。

もちろん、音質はあまりよいものではない。しかし、基本となる原理は、本格的な音声合成と全く同じだ。音声合成についてさらに学べば、scilabを用いて自分でさらに音質のよい音声合成を行うこともできる。