【问题标题】:I have problem with SpeechRecognition Python language selection我对 SpeechRecognition Python 语言选择有疑问
【发布时间】:2021-04-11 02:11:17
【问题描述】:

在 Python 中使用 SpeechRecognition 出错

'Recognizer' 对象没有属性 'recognize_google'

我尝试了很多东西,除了我使用 r.recognize(audio) 而不是 r.recognize_google 之外没有任何效果

r.recognize(audio) 只用英文工作,不需要谷歌密钥.. 很奇怪。

这是我的代码

import speech_recognition as sr
import socket
import requests
import json

WAV_FILE = '/home/nao/recordings/microphones/mywavefile.wav'
mykey = "AIzaSyDbB#@34N1VaRW27HxA68rZW59UZ2qoPD8" # <-- modified key for my protection.

r = sr.Recognizer()
with sr.WavFile(WAV_FILE) as source:
audio = r.record(source) # read the entire WAV
try:
    sresult = r.recognize_google(audio, key=mykey, language="fr-CA")
    # sresult = r.recognize(audio) work in english
    print("I think you said:" + sresult)
except Exception as e:
    print("An error occure: " + str(e))

通过

如果我只放

sresult = r.recognize(audio)

它是英文的,r.recognize_google 似乎根本不起作用,返回这个错误

AttributeError: 'module' 对象没有属性 'google_Recognizer'

我有最新版本的 SpeechRecognition 3.8.1

在 /usr/lib/python2.7/site-packages 我有文件夹,它是安装包的地方 语音识别 SpeechRecognition-3.8.1-py2.7.egg-info

我使用的文件名是 ai.py 与语音识别无关 请帮帮我...

我想使用我的谷歌密钥和语言。

请帮帮我。

【问题讨论】:

    标签: python


    【解决方案1】:

    如果speechrecognition 中存在语言fr-CA,我找不到。你能执行这段代码吗?

    import speech_recognition as sr
    print(sr.__version__)
    
    r = sr.Recognizer()
    filename = '/home/nao/recordings/microphones/mywavefile.wav'
    sourcedata = sr.AudioFile(filename)
    with sourcedata as source:
        audio = r.record(source)
    try:
        print("Google Speech Recognition thinks you said " +
              r.recognize_google(audio, language='fr-CA'))
    except sr.UnknownValueError:
        print("Google Speech Recognition could not understand audio")
    except sr.RequestError as e:
        print("Could not request results \
               from Google Speech Recognition service; {0}".format(e))
    

    谷歌搜索后,我发现这个错误在open issue 中。受另一个 issue 的启发,我更新了代码。因此,您可以尝试捕获此错误,如上面的代码所示。

    UnknownValueError 实际上意味着 Speech_recognition 无法识别来自音频源的任何内容。如果您从麦克风录音中收到此错误,我建议您使用 pyAudio 调整参数,例如 sample_ratechunk_size

    但是如果从文件录制后出现错误 - 我找不到解决方案

    【讨论】:

    • 非常感谢您这么快地帮助我。结果在这里。 python test.py 3.8.1 Traceback(最近一次调用最后):文件“test.py”,第 9 行,在 print(r.recognize_google(audio, language='fr-FR')) 文件“/usr /lib/python2.7/site-packages/speech_recognition/__init__.py", line
      858, in identify_google if not isinstance(actual_result, dict) or len(actual_result.get("alternative", [])) = = 0: 引发 UnknownValueError() speech_recognition.UnknownValueError
    • 你好,我不总是使用麦克风音频文件,所以我不使用 pyAudio。这可能是文件损坏,因为我对其他文件进行了一些其他测试,并且出现了 Forbidden 错误,在阅读和搜索后,如果我打算使用其他语言,密钥是 google 所需的。
      无法请求结果\来自谷歌语音识别服务; {0}recognition request failed: Forbidden ,如果我阅读错误消息,似乎我的密钥不正确。我已经创建了一个密钥并将其放在我的代码中。
    【解决方案2】:

    以下作品。使用 r.listen 提供音频:

        r = sr.Recognizer()
        with sr.Microphone() as source:                # use the default microphone as the audio source
             audio = r.listen(source)
        try:
             words = r.recognize_google(audio)    # recognize speech using Google Speech Recognition
    

    一开始您无需担心密钥或语言规范。尝试使用同时存在于英语和法语中的单词制作音频文件。如果还是不行,用麦克风试试。

    【讨论】:

      【解决方案3】:

      不妨试试这个:

      import speech_recognition as sr
      from os import walk
      
      r = sr.Recognizer()
      #optional
      #r.energy_threshold = 300
      
      def startConvertion(path = 'file.wav', lang = 'fr-CA'): 
          with sr.AudioFile(path) as source:
              #print('Fetching File')
              audio_file = r.record(source)
              print(r.recognize_google(audio_file, language=lang))
      startConvertion()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-13
        • 2023-04-07
        • 2020-12-30
        • 2017-02-22
        • 2019-05-06
        相关资源
        最近更新 更多