【问题标题】:'hey siri' like hotword in command line python application'hey siri' 就像命令行 python 应用程序中的启动指令
【发布时间】:2018-03-11 10:33:18
【问题描述】:

我正在使用 Speech_recognition 和 google gTTS 库创建一个基于 python 的命令行个人助理。我当前对启动词“Hey Siri”的实现是不断运行一个while循环并在每个循环中监听。

但它很慢而且不是真正连续的。所以很多时候都错过了演讲,有没有更好的选择?

while True:
    listen()

def listen():
    with sr.Microphone() as source:
        audio = Listen.r.listen(source)
    try:
        recog_speech = str(Listen.r.recognize_google(audio))
        if 'Hey Siri' in recog_speech:
            print('I am listening')
            #listen and do stuff

    except Exception as e:
        print('Something bad happened')

解决该问题的一个可能解决方案是不说话时不运行循环

【问题讨论】:

  • 您看过文档的Troubleshooting 部分吗?也许它试图识别太多,通过互联网,这显然会减慢速度并导致失误。你确定它只开始识别语音吗?
  • 它总是运行,不管它是否检测到语音,返回一个异常。

标签: python terminal console-application speech-recognition


【解决方案1】:

根据@handle 的评论, 不拾取背景噪声并避免不必要地运行循环的解决方案是根据SpeechRecogntion pypi 的语音识别文档设置能量阈值,这就是我的情况。 我还必须在 Linux 中调整麦克风的输入电平以不放大输入。

import speech_recognition as sr
r = sr.Recognizer()
r.energy_threshold = 4000

【讨论】:

    【解决方案2】:

    就我而言,这是有效的:

    with sr.Microphone() as source:
        #Calibrates the microphone to differentiate ambient noise from the voice
        r.adjust_for_ambient_noise(source)
        print("Aguardando por comandos de voz...")
        audio = r.listen(source)
    

    【讨论】:

      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      相关资源
      最近更新 更多