Sound generation / synthesis with python?

后端 未结 7 1185
执念已碎
执念已碎 2020-12-02 08:17

Is it possible to get python to generate a simple sound like a sine wave?

Is there a module available for this? If not, how would you go about creating your own?

7条回答
  •  猫巷女王i
    2020-12-02 08:34

    I was looking for the same thing, In the end, I wrote this code which is working fine.

    import math        #import needed modules
    import pyaudio     #sudo apt-get install python-pyaudio
    
    PyAudio = pyaudio.PyAudio     #initialize pyaudio
    
    #See https://en.wikipedia.org/wiki/Bit_rate#Audio
    BITRATE = 16000     #number of frames per second/frameset.      
    
    FREQUENCY = 500     #Hz, waves per second, 261.63=C4-note.
    LENGTH = 1     #seconds to play sound
    
    if FREQUENCY > BITRATE:
        BITRATE = FREQUENCY+100
    
    NUMBEROFFRAMES = int(BITRATE * LENGTH)
    RESTFRAMES = NUMBEROFFRAMES % BITRATE
    WAVEDATA = ''    
    
    #generating wawes
    for x in xrange(NUMBEROFFRAMES):
     WAVEDATA = WAVEDATA+chr(int(math.sin(x/((BITRATE/FREQUENCY)/math.pi))*127+128))    
    
    for x in xrange(RESTFRAMES): 
     WAVEDATA = WAVEDATA+chr(128)
    
    p = PyAudio()
    stream = p.open(format = p.get_format_from_width(1), 
                    channels = 1, 
                    rate = BITRATE, 
                    output = True)
    
    stream.write(WAVEDATA)
    stream.stop_stream()
    stream.close()
    p.terminate()
    

提交回复
热议问题