Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |