gpt4 book ai didi

python - 使用 PyAudio 或类似工具播放单 channel 音频

转载 作者:行者123 更新时间:2023-12-01 05:56:52 27 4
gpt4 key购买 nike

我目前有一个 2 channel wav 文件。我希望能够一次播放一个 channel 。使用 PyAudio 网站上的示例,通过 Wave 模块读取一大块数据,然后写入流,我不确定是否需要以某种方式读取一个 channel 的数据并写入一个 channel 流,或者是否需要是其他一些解决方案。感谢您的帮助。

最佳答案

我建议您更改流并用您想听的 channel 中的数据覆盖您不想听的 channel 。通常, channel 是交错的,因此以下应该可以解决问题。

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()

关于python - 使用 PyAudio 或类似工具播放单 channel 音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com