gpt4 book ai didi

python - 如何使用pyAudio获得左输出

转载 作者:行者123 更新时间:2023-12-02 22:15:30 28 4
gpt4 key购买 nike

假设我有一首歌,它在我耳机的两个扬声器上播放。我想使用 pyAudio 编写代码,以便仅在扬声器上获得输出。喜欢那些videos演示左右检查。

我经历了this问题,但我认为这不能解决我的问题。另外,由于我是新成员,我无法对此发表评论,以进一步澄清。

我尝试根据上述链接问题实现解决方案,但没有给出正确答案。这是实现。

from struct import pack
from math import sin, pi
import wave
import random

RATE=44100

## GENERATE MONO FILE ##
wv = wave.open('music.wav', 'w')
wv.setparams((1, 2, RATE, 0, 'NONE', 'not compressed'))
maxVol=2**15-1.0 #maximum amplitude
wvData=bytes()

for i in range(0, RATE*3):
# print(type(pack('h', int(maxVol*sin(i*500/RATE)))))
wvData+=pack('h', int(maxVol*sin(i*500.0/RATE))) #500Hz

wv.writeframes(wvData)
wv.close()

我得到了一个 3 秒的剪辑,其中包含噪声作为输出,这不是预期的。实际输出应该只在一个声道上播放音频,无论是左声道还是右声道。

最佳答案

wv.setparams((1, 2, RATE, 0, 'NONE', 'not compressed')) 创建一个单声道波形文件。这意味着左声道和右声道是相同的(事实上,没有左声道和右声道之分,只有 声道)。

要仅在一侧发出声音,您需要一个具有两个声道的立体声文件。参见 these examples .将 0 写入任一 channel ,使该侧“静音”。

我展示了一个如何在两侧之间实现淡入淡出的示例:

for i in range(0, RATE * 3):
percent = (float(i) / (RATE * 3 - 1)) # for fade effect
wvData += pack('h', int((1 - percent) * maxVol * sin(2 * pi * i * 500.0 / RATE)))
wvData += pack('h', int(percent * maxVol * sin(2 * pi * i * 488.0 / RATE)))

另请注意,sin() 函数以弧度作为参数,因此您必须将值与 2pi 相乘。缺少这一步是只听到噪音的原因。

关于python - 如何使用pyAudio获得左输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54350229/

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