从python读取wav文件并将帧转换为原始的s16le字符串

2024-10-01 02:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用librosa、wave或soundfile库读取Python中的一个文件,我需要将块(任何大小)推送到HTTP流中。根据规范,流字符串输入要求我将帧转换为原始的s16le格式。在

我尝试了多种选择,包括:

soundarray,rate = librosa.load(pathToWavFile, dtype="<i2")
str = b''.join(soundarray)

但这只会产生一个空的音频流。我做错什么了?在


Tags: 文件字符串规范httprate格式loadwave
1条回答
网友
1楼 · 发布于 2024-10-01 02:38:21

您可以尝试pydub将音频段转换为音频段,将音频段分割为可播放的块(即可以播放每个块),然后根据需要将其转换为原始数据。在

这是一个快速代码。在

from pydub import AudioSegment
from pydub.utils import make_chunks

myaudio = AudioSegment.from_file("myaudio.wav" , "wav") 
chunk_length_ms = 1000 # pydub calculates in millisec
chunks = make_chunks(myaudio, chunk_length_ms) #Make chunks of one sec

#Convert chunks to raw audio data which you can then feed to HTTP stream
for i, chunk in enumerate(chunks):
    raw_audio_data = chunk.raw_data

默认情况下,原始音频为16位

^{pr2}$

由于raw_audio_data是原始格式,如果上面的格式不起作用,您可以根据需要转换为任何其他格式。有关详细信息,请查看pydub utils api。在

相关问题 更多 >