2017-09-20 22 views
0

librosa、wave、またはsoundfileライブラリのいずれかを使用してPythonでファイルを読み込んでいて、チャンク(任意のサイズ)をHTTPストリームにプッシュする必要があります。仕様では、ストリーム文字列入力では、フレームをRAW s16le形式に変換する必要があります。 Pythonからwavファイルを読み込んでフレームをRAW s16le文字列に変換します

は私が含む複数のオプションを試してみました:

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

をしかし、これは単なる空のオーディオストリームを作成します。私は間違って何をしていますか?

+0

あなたは他の 'python'オーディオライブラリを開いていますか?' librosa'を使う必要がありますか? –

+0

@Anil_Mは、今のところすべてのライブラリが動作します。あなたの助けに感謝します。 –

+0

@ Andrey Shtylenko、私の反応をチェックし、それが有用かどうかを確認してください。 –

答えて

0

オーディオをオーディオセグメントに分割し、オーディオセグメントを再生可能なチャンク(各チャンクを再生できる)に分割し、必要に応じてそれらを生のままに変換することができます。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 

raw_audio_dataので、16ビット

>>> 
bytes_per_sample= 2 # 2 byte (16 bit) samples 

である上記の形式が動作しない場合は、必要に応じて、あなたが他の形式に変換することができ、生です。詳細については、pydub utils apiを参照してください。

関連する問題