语音识别无法正常工作



我正在Windows上使用python编程个人助理,它工作得很糟糕,有时我遇到错误13 - 拒绝存储语音的文件的权限。有时它直接无法识别我的声音,有时它会花费一分钟或更长时间来识别我的声音。查看代码,我应该改进哪些内容以使其更好地工作?

import os
import time
import playsound
import speech_recognition as sr
from gtts import gTTS

def speak(text):
tts = gTTS(text=text, lang="es-ES")
filename = "voice.mp3"
tts.save(filename)
playsound.playsound(filename)

def get_audio():
r = sr.Recognizer()
with sr.Microphone() as source:
audio = r.listen(source)
said = ""
try:
said = r.recognize_google(audio, language="es-ES")
print(said)
except Exception as e:
print("Exception: " + str(e))
return said
speak("Di algo")
get_audio()

欢迎Samuel_05我也是新来的!

首先,我们不要使用文件来存储来自 gTTS 的聚合数据,而是可以使用 io。BytesIO(称为Bytes IO,Buffered IO,Virtual IO,列表还在继续...(对象,用于将从Google提取的tts数据存储在内存中。遗憾的是,代码中使用的playsound模块不支持通过类似文件的对象的音频流。另一种选择可以是pygame它支持通过类似文件的对象播放 mp3。使用类似文件的对象应该可以解决权限被拒绝错误。

法典

from pygame import mixer
import speech_recognition as sr
from gtts import gTTS
from io import BytesIO

# Adapted from:
# https://github.com/pndurette/gTTS/issues/26#issuecomment-607573170
def speak(text):
with BytesIO() as f:
tts = gTTS(text=text, lang="es-ES")
tts.write_to_fp(f)  # Write speech to f
f.seek(0)  # seek to zero after writing
mixer.music.load(f)
mixer.music.play()
while mixer.music.get_busy():
continue

def get_audio():
r = sr.Recognizer()
with sr.Microphone() as source:
audio = r.listen(source)
said = ""
try:
said = r.recognize_google(audio, language="es-ES")
print(said)
except Exception as e:
print("Exception: " + str(e))
return said
mixer.init()
speak("Di algo")

最新更新