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