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 件のコメント:
コメントを投稿