Spaces:
Runtime error
Runtime error
""" | |
google voice service | |
""" | |
import time | |
import speech_recognition | |
from gtts import gTTS | |
from bridge.reply import Reply, ReplyType | |
from common.log import logger | |
from common.tmp_dir import TmpDir | |
from voice.voice import Voice | |
class GoogleVoice(Voice): | |
recognizer = speech_recognition.Recognizer() | |
def __init__(self): | |
pass | |
def voiceToText(self, voice_file): | |
with speech_recognition.AudioFile(voice_file) as source: | |
audio = self.recognizer.record(source) | |
try: | |
text = self.recognizer.recognize_google(audio, language='zh-CN') | |
logger.info( | |
'[Google] voiceToText text={} voice file name={}'.format(text, voice_file)) | |
reply = Reply(ReplyType.TEXT, text) | |
except speech_recognition.UnknownValueError: | |
reply = Reply(ReplyType.ERROR, "抱歉,我听不懂") | |
except speech_recognition.RequestError as e: | |
reply = Reply(ReplyType.ERROR, "抱歉,无法连接到 Google 语音识别服务;{0}".format(e)) | |
finally: | |
return reply | |
def textToVoice(self, text): | |
try: | |
mp3File = TmpDir().path() + 'reply-' + str(int(time.time())) + '.mp3' | |
tts = gTTS(text=text, lang='zh') | |
tts.save(mp3File) | |
logger.info( | |
'[Google] textToVoice text={} voice file name={}'.format(text, mp3File)) | |
reply = Reply(ReplyType.VOICE, mp3File) | |
except Exception as e: | |
reply = Reply(ReplyType.ERROR, str(e)) | |
finally: | |
return reply | |