Python读取.3gpp文件

Python读取.3gpp文件,python,audio,Python,Audio,我有一个巨大的音频文件列表,我想在分类学习算法中使用。问题是,这些都是.3gpp格式的,并且只需使用 f = open(filename, 'r') content = f.read() 抛出异常 UnicodeDecodeError:“charmap”编解码器无法解码位置695中的字节0x8f:字符映射到未定义 我一直在寻找可以读入.3gpp文件的库,但我似乎找不到任何库,所以现在我问这里的社区是否知道如何读入该格式的音频文件您是否正在尝试将音频文件读入数组?如果是这样,您可以尝试读取文件,

我有一个巨大的音频文件列表,我想在分类学习算法中使用。问题是,这些都是.3gpp格式的,并且只需使用

f = open(filename, 'r')
content = f.read()
抛出异常

UnicodeDecodeError:“charmap”编解码器无法解码位置695中的字节0x8f:字符映射到未定义


我一直在寻找可以读入.3gpp文件的库,但我似乎找不到任何库,所以现在我问这里的社区是否知道如何读入该格式的音频文件

您是否正在尝试将音频文件读入数组?如果是这样,您可以尝试读取文件,转换为numpy数组,还可以导出为其他格式,如wav、mp3等,或者播放它。细节'

我能够获得一个.3ga的示例文件,并使用ffmpeg的“amr”选项将其转换为音频片段(pydub在后端使用ffmpeg)。
如果要读取整个数组,请取消注释
np.set\u printoptions

工作代码如下

import numpy as np
import sys

from pydub import AudioSegment
from pydub.playback import play

#To print array fully
#np.set_printoptions(threshold=sys.maxsize)

#Format conversion from .3ga
song = AudioSegment.from_file('example.3ga', format='amr')

#If you want to play file
#play(song)

#export to other format
song.export("example.wav", format='wav')

#Collect samples in array
samples = song.get_array_of_samples()
samples = np.array(samples)
print(samples)
输出

>>python 3gaConverter.py 
[  6723  22419  30259 ... -21813 -22992 -21218]
如果您想转换为其他格式,可以直接使用ffmpeg

$ffmpeg -y -f amr -i ./example.3ga -f mp3 ./out.mp3

OR
$ffmpeg -y -f amr -i ./example.3ga -f wav ./out.wav

但是,它不能处理3gpp文件。获取错误
pydub.exceptions.CouldntDecodeError:解码失败。ffmpeg返回的错误代码:1