Ошибка «Аудиоданные должны быть аудиоданными» при распознавании речи Google в python

Я пытаюсь загрузить аудиофайл в python и обработать его с помощью распознавания речи Google.

Проблема в том, что в отличие от C++, python не показывает типы данных, классы и не дает вам доступа к памяти для преобразования между одним типом данных и другим путем создания нового объекта и переупаковки данных.

Я не понимаю, как можно преобразовать один тип данных в другой в python.

Код, о котором идет речь, приведен ниже,

import speech_recognition as spr 
import librosa

audio, sr = librosa.load('sample_data/metal.mp3')

# create a speech recognition object 
r = spr.Recognizer() 

r.recognize_google(audio)

Ошибка:

audio_data must be audio data

Как преобразовать аудиообъект для использования в распознавании речи Google


person Mich    schedule 27.03.2020    source источник


Ответы (2)


Librosa возвращает массив numpy, вам нужно преобразовать его обратно в wav. Что-то вроде этого:

 raw_audio = np.int16(audio/np.max(np.abs(audio)) * 32767).tobytes()

Вам, вероятно, лучше загрузить mp3 с оболочкой ffmpeg без вещей librosa, librosa делает странные вещи со звуком (нормализует и т. д.). Лучше работать с необработанными данными.

person Nikolay Shmyrev    schedule 27.03.2020
comment
Что такое данные и что такое звук в этом ответе? - person MattSt; 03.04.2020

Попробуйте это с распознавателем речи:

import speech_recognition as spr 

with spr.WavFile('sample_data/metal.mp3') as source:     
     audio = r.record(source)  

r = spr.Recognizer() 
r.recognize_google(audio)
person erptocoding    schedule 04.04.2021