私のコンピュータにはいくつかのオーディオファイルがあります。私はPython3でいくつかの分析をしたいと思います。その一部には、オーディオファイルのスニペットを再生することが含まれます。Python3でオーディオを読み込んで再生する
私はAMRファイルに興味があります。ファイルの例はhereですが、どのファイルでも可能です。
ここでは私のワークフローでは、これまでのところです:
#!/usr/bin/env python3
import audioread
import numpy as np
fin = audioread.audio_open('test.amr')
dat = [x for x in fin] #Generate list of bytestrings
dat = b''.join(dat) #Join bytestrings into a single urbytestring
ndat = np.fromstring(dat, '<i2') #Convert from audioread format to numbers
#Generate a wave file in memory
import scipy.io.wavfile
import io
memory_file = io.BytesIO() #Buffer to write to
scipy.io.wavfile.write(memory_file, fin.samplerate, ndat)
#Play the wave file
import simpleaudio
wave_obj = simpleaudio.WaveObject(memory_file.getvalue())
play_obj = wave_obj.play()
play_obj.wait_done()
問題がある、私は再生のために行くとき、私はいくつかの非常に甲高い、高速な響きの音。私はコンバージョンがどこかで間違っていると思っていますが、どこにいるのか分かりません。ととastype
なし両方
#Generate a wave file in memory using wave
import wave
import io
memory_file = io.BytesIO() #Buffer to write to
wave_file = wave.open(memory_file, 'w')
wave_file.setparams((fin.channels, 2, fin.samplerate, 0, 'NONE', 'not compressed'))
wave_file.writeframes(ndat.astype('<i2').tostring())
wave_file.close()
:wave
を使用しようと
は、同様の結果を生成します。
audioread
で使用されているオーディオバックエンドがおそらく動作しないと思われたので、AMRからWAVに変換してからファイルを読み取りました。それはものを修正しませんでした。
waveファイルをディスクに書き込んで標準のオーディオプレーヤーで再生すると問題が解決されたので、問題はsimpleaudio
のようです。