Google音声認識した結果をGoogle Text-to-Speechで音声に戻すPythonスクリプト

今回はgTTSライブラリを使って、Google音声認識の結果をGoogle Text-to-Speech で音声に戻してみた。つまり音声認識音声合成(TTS)の両方でオンラインのサービスを使ってみた、というわけである。

pip3 install SpeechRecognition
pip3 install gTTS

としてインストールした後に以下のスクリプト
音声はmp3で保存するというユニークな仕様。

#!/usr/bin/env python3

# pip3 install SpeechRecognition
# pip3 install gTTS

import speech_recognition as sr
import subprocess
from gtts import gTTS

out_mp3 = '/tmp/synth.mp3'

if __name__ == "__main__":

    # マイクからの音声入力
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("話しかけてみましょう!")
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source)

    try:
        # 日本語でGoogle音声認識
        text = r.recognize_google(audio, language="ja")
    except sr.UnknownValueError:
        print("Google音声認識は音声を理解できませんでした。")
    except sr.RequestError as e:
        print("Google音声認識サービスからの結果を要求できませんでした;"
              " {0}".format(e))
    else:
        print(text)

        # Google TTS
        tts = gTTS(text=text, lang='ja')
        tts.save(out_mp3)  # mp3で音声を保存する仕様
        subprocess.run('afplay ' + out_mp3, shell=True)