Python: преобразовать np.ndarray из float32 в последовательность байтов - PullRequest
1 голос
/ 27 марта 2020

У меня есть массив с плавающей точкой, который выводится функцией загрузки библиотеки librosa, которую я хотел бы преобразовать в AudioData, необходимый для библиотеки Google SpeechRecognition

Форматы данных показаны ниже

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

Librosa.load возвращает

Returns
-------
y    : np.ndarray [shape=(n,) or (2, n)]
    audio time series

SpeechRecognition.AudioData класс принимает frame_data, который является строка байтов, которую я понимаю

The raw audio data is specified by ``frame_data``, which is a sequence of bytes representing audio samples. This is the frame data structure used by the PCM WAV format.

Как можно преобразовать In из ndaarray of floats в sequence of bytes в python

В коде Visual Studio audio, возвращаемое librosa, равно

dtype:dtype('float32')
alignment:4
base:dtype('float32')
byteorder:'='
char:'f'
descr:[('', '<f4')]
fields:None
flags:0
hasobject:False
isalignedstruct:False
isbuiltin:1
isnative:True
itemsize:4
kind:'f'
metadata:None
name:'float32'
names:None

Полный код, который я пытаюсь запустить:

# importing libraries 
import speech_recognition as spr 
import librosa

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

print(audio)

# create a speech recognition object 

#conversion needed here
audio2 = spr.AudioData() 

r = spr.Recognizer() 
r.recognize_google(audio2)

Спасибо,

...