我的问题类似于本文中提出的问题:How to change continuously the frequency of a sinusoidal sound?
但是我发现解决方案有点混乱。我想串联多个音调(频率不同),以便音调是连续的。我想弄清楚整个相移的事情,但我只是失去了。我目前正在使用此处的代码:http://milkandtang.com/blog/2013/02/16/making-noise-in-python/生成提示音。
非常感谢!任何见解表示赞赏
最佳答案
您正在使用pyaudio
,但是,如果您对其他库开放,则可以使用pydub轻松解决。
您的问题有两个。
pydub提供用于操作音频文件的简单易用的高级界面。您可以找到更多详细信息/示例here
您可以使用安装
pydub
pip install pydub
因此,对于第一部分,
pydub
提供了一个正弦波发生器,下面在示例示例中使用它来生成3秒持续时间的1k,2k,3k正弦波。然后,我们将其转换为
audio_segments
。之后,我们通过简单地将每个段附加到其他段上来串联它们。crossfade
每隔2.5秒使用一次,以防止在合并点发出嘶哑的声音。这是工作代码:
from pydub import AudioSegment
from pydub.generators import Sine
from pydub.playback import play
#Generate 1k,2k,3k tones of 3 sec duration
tone1 = Sine(1000).to_audio_segment(duration=3000)
tone2 = Sine(2000).to_audio_segment(duration=3000)
tone3 = Sine(3000).to_audio_segment(duration=3000)
#Append each tone onto other with crossfade
multitone = tone1.append(tone2, crossfade=2500).append(tone3, crossfade=2500)
# Play final tone
play(multitone)
关于python - 用pyaudio改变频率时连续发出声音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43600405/