내 컴퓨터에 오디오 파일이 있습니다. 파이썬 3에서 일부 분석을하고 싶습니다. 일부는 오디오 파일 조각을 재생하는 것을 포함합니다.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로 변환 한 다음 파일을 읽었습니다. 그건 해결되지 않았다.
웨이브 파일을 디스크에 쓰고 표준 오디오 플레이어로 재생하면 문제가 해결되었으므로 문제는 simpleaudio
인 것 같습니다.