2012年10月11日木曜日

pythonで、音声合成(AquesTalk2)を試してみた。

pythonで、音声合成(AquesTalk2)を試してみた。

AquesTalk2のダウンロードとインストールは、こちらを読んでね。

Linuxでの共有ライブラリーの読み込み方に苦戦しましたが、なんとか成功。
POINTERの使い方を見つけるのにめちゃくちゃ時間がかかってしまった。
評価版は、ナ行とマ行がヌに変換されるので、雰囲気をつかむだけですが、 結構快適に使えそうです。でも、作り込むなら OpenJTalk の方がよさげ。


import wave
import pyaudio
import StringIO
from ctypes import *

lib = cdll.LoadLibrary("libAquesTalk2.so.2")

str    = c_char_p("わたしたわしわたしたわ、なにぬねの、まみむめも、あかさ")
size   = c_int(10)

lib.AquesTalk2_Synthe_Utf8.restype = POINTER(c_char)
wav_p = lib.AquesTalk2_Synthe_Utf8(str,100, byref(size),0)

print("size is %d" % size.value)
output = StringIO.StringIO(wav_p[:size.value])
wf = wave.open(output, "rb")

# ストリームを開く
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

# チャンク単位でストリームに出力し音声を再生
chunk = 1024
data = wf.readframes(chunk)
while data != '':
    stream.write(data)
    data = wf.readframes(chunk)
stream.close()
p.terminate()

lib.AquesTalk2_FreeWave(wav_p)
output.close() 

0 件のコメント:

コメントを投稿

Amazon prime を利用して1ヶ月がたちました。

Amazon prime を利用して1ヶ月が経ち、無料期間が終わりましたので、いつでも解約できるよう月払いで継続しました。 プライムを利用しようと思ったきっかけは、Kindle本に読みたいビジネス書が2冊あったから。 タイムセールで安くなっていましたので買うか、プライムにする...