python 中的语音识别持续时间设置问题

Speech Recognition duration setting issue in python

我有一个要转录的 Wav 格式的音频文件:

我的代码是:

import speech_recognition as sr
harvard = sr.AudioFile('speech_file.wav')
with harvard as source:
    try:
        audio = r.listen(source)
        #print("Done")
    except sr.UnknownValueError:
        exec()

r.recognize_google(audio)

我确实收到了输出:

Out[20]: 'thank you for calling my name is Denise who I have a pleasure speaking with hi my name is Mary Jane. Good afternoon Mary Jane I do have your account open with your email'

不过,这之后还有很多话要说。我认为它只捕获了这部分语音,因为在音频文件中说出单词 "email" 后有一个短暂的停顿。我尝试设置持续时间,但收到错误消息:

import speech_recognition as sr
harvard = sr.AudioFile('speech_file.wav')
with harvard as source:
    try:
        audio = r.listen(source,duration = 200)
        #print("Done")
    except sr.UnknownValueError:
        exec()


r.recognize_google(audio)
Traceback (most recent call last):

  File "<ipython-input-24-30fb65edc627>", line 5, in <module>
    audio = r.listen(source,duration = 200)

TypeError: listen() got an unexpected keyword argument 'duration'

我该怎么做才能让我的代码转录整个音频文件并且在出现停顿时不停止打印文本?

您可以像这样使用 timeout 而不是 duration

audio = r.listen(source, timeout=2)

这意味着模型将等待 最多两秒 一个短语开始,然后放弃并抛出 speech_recognition.WaitTimeoutError 异常。如果 timeout=None,您的情况将无需等待。

编辑

recognize_google() 的全部功能是调用 google 语音 API 并取回结果。当我使用提供的音频文件时,我得到了前 30 秒的转录。这是Google演讲API免费版的限制,与代码无关

r.listen(source) 将捕获第一个可识别的短语。要从音频文件中提取每个短语,请使用 r.record(source)

来源:https://pypi.org/project/SpeechRecognition/2.1.3/