主観評価実験をするときに、刺激を逐次呈示して、それに対する評価を記述してもらう方法があります。10個程度の刺激ならあまり問題にはならないのですが、刺激が多くなると、いま何番目の刺激なのか、いま使っている回答欄は正しいのか、など不安になることがあります。
それに対して、画面に回答番号を表示する、回答番号を読み上げる、などの方法が考えられます。アナウンサー訓練を受けた人に番号を読み上げてもらっても良いのですが、今回は回答番号の音声ファイルを音声合成で作ってみました。
Mac OS Xではターミナルからsayコマンドを使うことで簡単に音声合成 (text-to-speech) ができます。たとえば「say 1」とやれば、選んでいる音声に応じて「one」あるいは「いち」などと読んでくれます。オプションをつけることでAIFFファイルに保存もできますし、話す速度を調整することもできます。
以下のプログラムでは、1〜Nのファイルを作成するために、Matlabからsystem関数でsayとsoxを呼び出しています。WAVファイルとして保存する必要がなければsoxは不要です。*1
fs = 44100; voice = 'kyoko'; N = 100; for n = 1:N system(sprintf('say --voice %s --rate %d --output-file=tmp %d', voice, fs, n)); system(sprintf('sox tmp.aiff %03d.wav', n)); end system('rm tmp.aiff');
「man say」で見られるマニュアルには「対応している音声では」という但し書きがあるので、上記プログラムでは44,100Hzを指定していますが実際には22,050Hzで保存されます。