Five Night at Freddy'sの2と3攻略してたらなんかすごい時間食った。
Five Night at Freddy's 4がもっと怖くなかったら4まで一気にクリアてたかも。
実際は怖すぎてできないけど。
今回は「Pythonで音声認識してVOICEROIDにしゃべらせる」ところまでやりましょう。
Google Cloud Speech APIなどは自分で設定すると難しいので、サポートしてくれるライブラリー、SpeechRecognitionを使います。
SpeechRecognition
オンラインとオフラインの複数のエンジンとAPIをサポートし、音声認識を実行するためのライブラリです。
インストールは
pip install SpeechRecognition
で問題ないです。
現在version3.8.1ではpython3.7には対応していないみたいですね。
自分の環境が3.6なので、3.7で確認はしていないです。
まずは、簡単なところで、wavファイルからtextを手に入れるところからやってみます。
import speech_recognition as sr
filename ="sample.wav"
r = sr.Recognizer()
with sr.AudioFile(filename) as source:
audio = r.record(source)
try:
text = "Google Speech Recognition thinks you said " + r.recognize_google(audio, language='ja-JP')
print(text)
except:
pass
こんな感じで問題ないでしょう。
カレントディレクトリーに存在する、wavファイルの名前を入れれば解析してくれます。
戻り値として、音声認識の結果を返してくれます。
これを前回の録音と組み合わせれば、音声認識の完成ですね。
このモジュール、言葉の認識できないとエラーを返すので、しっかりtry処理を行いましょう。
次に、wavファイルを経由しない方法です。
前提として、pyaudioをインストールしてください。
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
print("何か、話しかけてください")
audio = r.listen(source)
try:
print("Google Speech Recognition thinks you said " + r.recognize_google(audio,language='ja-JP'))
except:
pass
こんな感じでしょうか。結構簡単にできますね。
自分は録音開始時に処理を入れているので前者を使っていますが、基本的にはこちらで問題ないでしょう。
それでは、サクッと組み合わせて「ゆかりねっともどき」を作ってみましょう。
import speech_recognition as sr
import subprocess as sps
r = sr.Recognizer()
with sr.Microphone() as source:
print("何か、話しかけてください")
audio = r.listen(source)
try:
text = r.recognize_google(audio,language='ja-JP')
except:
pass
cmd = 'seikasay.exe -cid ' + "2000" + ' \"' + text + '\"'
sps.call(cmd,shell=True)
完成です。
今回は1回だけ、しゃべったことをボイスロイドにしゃべらせるプログラムですね。
あとは、これをループ処理にしたり、非同期処理にしたりすれば、いいわけです。
それにしても、簡単にできました。ほとんどseikasay.exeやPythonの優秀なモジュールのおかげですね。
0 件のコメント:
コメントを投稿