Soy un novato en la investigación del procesamiento de audio y uso el módulo pydub en python3 para manipular archivos de audio en formato "m4a". Está bien para mí leer los archivos m4a originales con pydub al principio, pero después de algunos pasos (como VAD y operación de aumento de datos) de operaciones, no puedo leer fotogramas en los archivos m4a producidos como numpy.ndarray. y recibir los errores que se muestran a continuación:
np.array(frames["music_no_silence"].get_array_of_samples())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/miniconda/envs/py36/lib/python3.6/site-packages/pydub/audio_segment.py", line 272, in get_array_of_samples
array_type_override = self.array_type
File "/home/user/miniconda/envs/py36/lib/python3.6/site-packages/pydub/audio_segment.py", line 277, in array_type
return get_array_type(self.sample_width * 8)
File "/home/user/miniconda/envs/py36/lib/python3.6/site-packages/pydub/utils.py", line 43, in get_array_type
t = ARRAY_TYPES[bit_depth]
KeyError: 64
Es extraño que todos los archivos m4a, sin importar las entradas originales ni las salidas finales, puedan abrirse con éxito en aplicaciones de audio y producir sonidos razonables en los altavoces. Al investigar más a fondo el problema, noto que la trama en las salidas finales tiene bytes del tamaño de 8, mientras que en las entradas originales tiene bytes del tamaño de 2.
Cuando los archivos de entrada originales y de salida final se abren con audacia, ambos se muestran como “mono flotante de 16000 Hz y 32 bits”. Dado que los fotogramas de un tamaño de 2 bytes no se pueden interpretar como flotantes de 32 bits, supongo que los flotantes de 32 bits son el resultado de la operación de normalización en Audacity.
Mi pregunta es para marcos con un tamaño de bytes de 2, 4, 8, ¿a qué tipo de datos (en números) se debe convertir?
¿Y algún gurú conoce la operación de normalización empleada en audacity?
¡Muchas gracias!