1
현재 2 채널 wav 파일이 있습니다. 한 번에 하나의 채널을 재생할 수있는 기능을 원합니다. 웨이브 모듈을 통해 데이터 덩어리를 읽고 스트림에 쓰는 PyAudio 웹 사이트의 예제를 사용하여 데이터의 한 채널을 읽고 한 채널 스트림에 쓸 필요가 있는지, 아니면 다른 해결책입니다. 도와 주셔서 감사합니다.PyAudio 등을 사용하여 단일 오디오 채널 재생
현재 2 채널 wav 파일이 있습니다. 한 번에 하나의 채널을 재생할 수있는 기능을 원합니다. 웨이브 모듈을 통해 데이터 덩어리를 읽고 스트림에 쓰는 PyAudio 웹 사이트의 예제를 사용하여 데이터의 한 채널을 읽고 한 채널 스트림에 쓸 필요가 있는지, 아니면 다른 해결책입니다. 도와 주셔서 감사합니다.PyAudio 등을 사용하여 단일 오디오 채널 재생
은 듣고 싶은 채널의 데이터로 듣고 싶지 않은 채널을 덮어 쓰고 덮어 쓸 것을 제안합니다. 일반적으로 채널은 인터리브되어 있으므로 다음과 같이해야합니다.
import pyaudio
import wave
import sys
chunk = 1024
def convert(data, sampleSize = 4, channel = 0):
for i in range(0, len(data), 2*sampleSize):
for j in range(0, sampleSize):
data[i + j + sampleSize * channel] = data[i + j + sampleSize * (1 - channel)]
if len(sys.argv) < 2:
print "Plays a wave file.\n\n" +\
"Usage: %s filename.wav" % sys.argv[0]
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
p = pyaudio.PyAudio()
# open stream
stream = p.open(format =
p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True)
# read data
data = wf.readframes(chunk)
convert(data)
# play stream
while data != '':
stream.write(data)
data = wf.readframes(chunk)
convert(data)
stream.close()
p.terminate()