使 Python 语音识别速度更快

Man*_*kla 4 python speech-recognition dictation google-speech-api

我一直在使用 Python 的谷歌语音识别。这是我的代码:

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
   print("Say something!")
   audio = r.listen(source)
   print(r.recognize_google(audio))
Run Code Online (Sandbox Code Playgroud)

虽然识别非常准确,但大约需要4-5秒才能吐出识别出的文字。由于我正在创建一个语音助手,因此我想修改上面的代码以使语音识别速度更快。

有什么办法可以将这个数字降低到大约 1-2 秒吗?如果可能的话,我会尝试像 Siri 和 Ok Google 等服务一样快速地进行识别。

我对 python 很陌生,所以如果我的问题有一个简单的答案,我很抱歉。

O.H*_*ris 6

您可以使用其他语音识别程序。例如,您可以设置 IBM 帐户以使用其 Watson Speech To Text。如果可能的话,尝试使用他们的 websocket 接口,因为这样它会在你说话的时候主动转录你所说的内容。

一个例子(不使用 websocket)是:

import speech_recognition as sr

# obtain audio from the microphone
r = sr.Recognizer()
with sr.Microphone() as source:
    print("Adjusting for background noise. One second")
    r.adjust_for_ambient_noise(source)
    print("Say something!")
    audio = r.listen(source)

IBM_USERNAME = "INSERT IBM SPEECH TO TEXT USERNAME HERE"  # IBM Speech to Text usernames are strings of the form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
IBM_PASSWORD = "INSERT IBM SPEECH TO TEXT PASSWORD HERE"  # IBM Speech to Text passwords are mixed-case alphanumeric strings
try:
    print("IBM Speech to Text thinks you said " + r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD))
except sr.UnknownValueError:
    print("IBM Speech to Text could not understand audio")
except sr.RequestError as e:
    print("Could not request results from IBM Speech to Text service; {0}".format(e))
Run Code Online (Sandbox Code Playgroud)

您也可以尝试使用 pocketsphinx,但就我个人而言,我并没有获得特别好的体验。它是离线的(一个优点),但对我来说,并不是特别准确。您可能可以调整一些检测设置并消除一些背景噪音。我相信还有一个训练选项可以让它适应你的声音,但它看起来并不简单。

一些有用的链接:

语音识别

麦克风识别示例

IBM Watson 语音转文本

祝你好运。一旦语音识别正确工作,它就会非常有用且有益!