我的问题类似于本文中提出的问题: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

    您可以使用安装pydubpip 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/

    10-16 08:39