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