SpeechRecognition, AssertionError "Источник должен быть источником звука"

Вот мой код:

import speech_recognition as sr

r = sr.Recognizer()

with sr.Microphone() as source:
    print('Say Something')
    audio = r.listen(source)
    voice_data = r.record(audio)
    print(voice_data)

Когда я набираю "python main.py" на терминале и запускаю программу, она начинает слушать, но не понимает того, что я говорю. Я пытался использоватьadjust_for_ambient_noise() вместо того listen() но это тоже ничего не изменило.

Я использую macOS Catalina и Python 3.8.1.

Это ошибка, которую я получаю:

Traceback (most recent call last):
  File "main.py", line 8, in <module>
    voice_data = r.record(audio)
  File "/Users/sefailyasoz/PycharmProjects/SpeechAssistant/venv/lib/python3.8/site-packages/speech_recognition/__init__.py", line 483, in record
    assert isinstance(source, AudioSource), "Source must be an audio source"
AssertionError: Source must be an audio source 

Это то, что я получаю, когда использую adjust_for_ambient_noise(), если я использую listen, это не заканчивается, он просто слушает, я заканчиваю Ctrl+C.

3 ответа

Решение

Ну, я немного изменил свою функцию

def record_audio(ask=False):
    with sr.Microphone() as source:
        if ask:
            turkishSiri_speak(ask)
        audio = r.listen(source)
        voice_data = ''
        try:
            voice_data = r.recognize_google(audio , language='tr-TR')
        except sr.UnknownValueError:
            turkishSiri_speak('Ne söylediğini anlayamadım')
        except sr.RequestError:
            turkishSiri_speak('Google konuşma servisinde bir problem var')
        return voice_data

но самой большой проблемой была проблема с macOS, мне пришлось дать разрешение коду pycharm или Visual Studio использовать мой микрофон. до изменения функции он уже работал после предоставления разрешения

Здесь вы используете функцию record(), которая используется для захвата данных из файла, вместо этого вы должны использовать функцию listen() при захвате микрофонного входа.

import speech_recognition as sr

r = sr.Recognizer()

with sr.Microphone() as source:
    print('Say Something')
    audio = r.listen(source)
    print(audio) #This is just a speech_recognition.AudioData object
    text = r.recognize_google(audio) #Speech to text google recognizer
    print(text) #This is what you actually said

Извините за мой английский. Я только новичок. Может быть, это кому-то поможет). Мой код читает аудиофайл и распознает русские слова, а затем распечатывает его.

      import speech_recognition as sr

sample_audio = sr.AudioFile(r'PATH TO AUDIOFILE.wav') # my file in wav format
r = sr.Recognizer() # create object

with sample_audio as source: # use my file as source
    audio = r.listen(source) # listen my file\source
    text = r.recognize_google(audio, language='ru-RU').lower() #recognize text in russian
    print(text) # print my text for do something
Другие вопросы по тегам