Преобразование речи в текстовый код застряло, сказав что-нибудь:

Я запускаю преобразование речи в текстовый код на python 3, импортируя speech_recognition, и моя программа застряла на «скажи что-нибудь» и показав

sudo jack_control start //команда терминала

--- start

sudo python voice.py//терминальная команда

вывод терминала:

ALSA lib pcm_dsnoop.c:606:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1029:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:1029:(snd_pcm_dmix_open) unable to open slave
speak say anything

код python3:

import speech_recognition as sr 
r = sr.Recognizer()
with sr.Microphone() as source:
    print('speak say anything')
    audio = r.listen(source)
    text = r.recognize_google(audio)
    print("you said:{}".format(text))

Я не могу найти проблему, будь то в гнезде или в коде.


person user11251362    schedule 04.04.2019    source источник
comment
У вас установлен PyAudio?   -  person glhr    schedule 04.04.2019
comment
Я проверил ваш код, и он отлично работает. Вот вывод моей консоли: speak say anything you said:hello. Возможно, вам стоит проверить разъем и убедиться, что на вашем компьютере работает микрофон.   -  person amanb    schedule 04.04.2019


Ответы (1)


Согласно официальной документации, метод listen() ожидает, пока звуковая энергия превышает определенный уровень (что указывает на то, что кто-то говорит) и записывает до тех пор, пока не будет обнаружена тишина. Если ваш микрофон улавливает слишком много окружающего шума, то listen() никогда не возвращается, потому что продолжает ждать тишины.

Чтобы исправить это, вы можете использовать r.adjust_for_ambient_noise(source):

with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source)
    print('speak say anything')
    audio = r.listen(source) 
    print("done listening")

Вы также можете указать параметры timeout и phrase_time_limit в listen(), чтобы он останавливался и возвращался через определенное количество секунд, даже если не было обнаружено речи или тишины.

with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source)
    print('speak say anything')
    try:
    # wait for speech for a maximum of 3 seconds
    # listen to speech for a maximum of 3 seconds
        audio = r.listen(source, timeout=3, phrase_time_limit=3)
    except Exception as e:
        # a timeouterror exception will be thrown if the timeout is reached
        print(e) 
    print("done listening")

При инициализации также может быть хорошей идеей проверить работающие микрофоны и явно установить device_index:

for device_index in Microphone.list_working_microphones():
    m = Microphone(device_index=device_index)
    break
else:
    print("No working microphones found!")
person glhr    schedule 04.04.2019
comment
я попробовал ваш код, и я получаю этот вывод: говорите говорите что-нибудь, время ожидания прослушивания истекло, ожидая начала фразы, чтобы начать прослушивание - person user11251362; 04.04.2019
comment
Таким образом, это означает, что он не обнаруживает никакой речи в течение первых 3 секунд. Умеете ли вы записывать с микрофона из других программ (например, arecord)? - person glhr; 04.04.2019
comment
Да, я могу, я думаю, может быть, проблема в разъеме - person user11251362; 04.04.2019
comment
У вас установлен PyAudio? - person glhr; 04.04.2019
comment
я попробовал код Python для сохранения речи в audio.wav, и он работает, но не тот, что указан выше. - person user11251362; 04.04.2019
comment
да, pyaudio установлен, я просто запускаю команду на консоли import pyaudio, и это сработало - person user11251362; 04.04.2019
comment
Каков результат print(Microphone.list_microphone_names())? - person glhr; 04.04.2019
comment
Давайте продолжим обсуждение в чате. - person user11251362; 04.04.2019
comment
Пожалуйста, добавьте решение, если вы его нашли, у меня такая же проблема. - person Emilie van Eps; 18.03.2021