Распознавание речи Python дает плохие результаты - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь заставить мой скрипт распознавания речи работать, но он не может понять меня.

import pyaudio
import speech_recognition as sr

def initSpeech():
    r = sr.Recognizer()

    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source, duration=2)
        print("Set minimum energy threshold to {}".format(r.energy_threshold))
        print("Say something")

        audio = r.listen(source, phrase_time_limit=10)

        command = ""
        try:
            command = r.recognize_google(audio)
        except:
            print("Coundn't understand you!")

        print(command)

initSpeech()

Это мой код для распознавания моего голоса, но он всегда печатает "Coundn't understand you!", когда я записываю свой голос, используя python, с помощью следующего сценария и помещаю волновой файл в качестве входных данных для распознавания речи, он прекрасно работает:

import pyaudio
import wave

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

Этот скрипт для записи моего голоса и последующего использования этого файла "output.wav" в качестве входных данных для распознавания речи.

РЕДАКТИРОВАТЬ:

С,

with open("microphone-results.wav", "wb") as f:
        f.write(audio.get_wav_data())

Я записал свой голос, который будет проанализирован. И это звучало очень плохо, тихо и медленно, как в плохих фильмах с устройством изменения голоса. Может быть, это подсказка для решения. Я уже проверил настройки chuck_size и sample_rate, они идентичны настройкам в моем скрипте записи выше. Моя система: Windows 10

Существует также проблема с github github Issue 358

Python: 3,6

Спасибо за помощь!

1 Ответ

0 голосов
/ 17 мая 2018

Ваш аудио явно не записан должным образом, и это приводит к ошибке распознавания.Я предполагаю, что r.adjust_for_ambient_noise вас подводит (автоматические детекторы речи / молчания не просто реализовать).Начните с удаления этой строки и вручную установите

r.energy_threshold = 50
r.dynamic_energy_threshold = False

После этого сохраните записанный звук в файл .WAV и прослушайте.Перед отправкой на механизм ASR необходимо получить четкое звучание.

Кроме того, я рекомендую вам убедиться, что вы используете микрофон, который вы намеревались использовать

print(Microphone.list_microphone_names()[0])
...