トップ   新規 一覧 単語検索   ヘルプ   最終更新のRSS

KlattSynthesizer のバックアップソース(No.1)

[[Miyazawa’s Pukiwiki]]

*Klatt Synthesizer の Python 版(pyklatt)を使ってみる [#k204e221]
-Klatt Synthesizer は音素の音響的パラメータを直に指定して音声合成ができる
--例えばフォルマントの値を直に指定して母音を合成する
--河原先生によれば、STRAIGHTはフォルマント値を指定した合成は対象外(可能ではあるはずだが、フォルマント周波数の定義そのものに懐疑的な立場とのこと)

-オリジナルはFORTRAN版(?)
-以下の移植版がある
--[[MATLAB Simulink:http://www.shaav.com/professional/linguistics/klatt.pdf]]
--[[Python:https://code.google.com/p/pyklatt/]]((Pyshon版は講義で作成したもののようで、完全に移植されているのかどうかは、確認が必要と思います。))
--[[C:http://www.phon.ox.ac.uk/files/lecture_2/klatt_structure.htm]]
-まずは Python 版を動かしてみよう。

**Python をインストールする [#p01d5572]
-[[Pythonインストールと環境設定:http://www.pythonweb.jp/install/]]
--[[Python の Ver2 と Ver3 でコードの書き方が違う:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14144586154]] とのこと。Pyklatt パッケージは Ver2 対応なので、Python 2.7.10 - 2015-05-23 Windows x86-64 MSI installer をダウンロードした(2015/07/03時点)
--[[環境変数PATHの設定:http://www.pythonweb.jp/install/]] まで完了。
--[[test1-1.pyの実行:http://www.pythonweb.jp/tutorial/ini/index2.html]] に成功。

**pyklatt をインストールする [#eae2921c]
-[[pyklatt:https://code.google.com/p/pyklatt/]] > [[Source:https://code.google.com/p/pyklatt/source/checkout]] を参照し、コマンドプロンプトで以下を実行((事前に svn の実行環境のインストールが必要かも))
 svn checkout http://pyklatt.googlecode.com/svn/trunk/ pyklatt-read-only
--カレントディレクトリに pyklatt-read-only ディレクトリが作られる。

***試しに使う [#m49549e8]
-pyklatt-read-only/ ディレクトリに移動して以下を実行
 python klatt.py ./data/cat.txt
--output.wav が生成される。

--pyklatt-read-only/data.txt 以下に合成用のサンプルテキストがあるが、文字化け?のために変な合成音になる。
--pyklatt-read-only/src/ipa.py に合成用の音素名リストと、各音素のパラメータが記述されている。

-/la/, /ra/ を合成してみる
--data/ 以下に &ref(lara.txt); を置く
--実行
 python klatt.py ./data/lara.txt
--&ref(lara.wav); ができる

-/la/, /ra/ の合成パラメータを変えてみる
--[[Yamada & Tohkura, 1992:http://www.ncbi.nlm.nih.gov/pubmed/1437471]] によれば、F2 は 920[Hz](/r/) ⇔ 1280[Hz](/l/)、F3 は 1200[Hz](/r/) ⇔ 3000[Hz](/l/) の間で変化させたとのこと。これを再現してみる。
--ipa.py を見て以下のパラメータを書き換える
 273行目 /r/
  'freq (1-6)': (300, 1600, 2600, 3300, 3750, 4900), から
  'freq (1-6)': (300, 920, 1200, 3300, 3750, 4900), に書き換え
 615行目 /l/
  'freq (1-6)': (310, 1050, 2880, 3300, 3750, 4900), から
  'freq (1-6)': (310, 1280, 3000, 3300, 3750, 4900), に書き換え
--&ref(lara2.wav); ができる、上と変わっていないように聞こえるが一応変化しているようだ。