How to write stereo wav files in Python?

后端 未结 3 920
孤独总比滥情好
孤独总比滥情好 2020-12-09 18:20

The following code writes a simple sine at frequency 400Hz to a mono WAV file. How should this code be changed in order to produce a stereo WAV file. The se

3条回答
  •  难免孤独
    2020-12-09 18:38

    Another option is to use the SciPy and NumPy libraries. In the below example, we produce a stereo wave file where the left channel has a low-frequency tone while the right channel has a higher-frequency tone.

    To install SciPy, see: https://pypi.org/project/scipy/

    import numpy as np
    from scipy.io import wavfile
    
    # User input
    duration=5.0
    toneFrequency_left=500 #Hz (20,000 Hz max value)
    toneFrequency_right=1200 #Hz (20,000 Hz max value)
    
    # Constants
    samplingFrequency=48000
    
    # Generate Tones
    time_x=np.arange(0, duration, 1.0/float(samplingFrequency))
    toneLeft_y=np.cos(2.0 * np.pi * toneFrequency_left * time_x)
    toneRight_y=np.cos(2.0 * np.pi * toneFrequency_right * time_x)
    
    # A 2D array where the left and right tones are contained in their respective rows
    tone_y_stereo=np.vstack((toneLeft_y, toneRight_y))
    
    # Reshape 2D array so that the left and right tones are contained in their respective columns
    tone_y_stereo=tone_y_stereo.transpose()
    
    # Produce an audio file that contains stereo sound
    wavfile.write('stereoAudio.wav', samplingFrequency, tone_y_stereo)
    

    Environment Notes

    Version Used Python 3.7.1

    • Python 3.7.1
    • SciPy 1.1.0

提交回复
热议问题