Audio
Working with WAV files
Section titled “Working with WAV files”winsound
Section titled “winsound”- Windows environment
import winsoundwinsound.PlaySound("path_to_wav_file.wav", winsound.SND_FILENAME)- Support mono/stereo
- Doesn’t support compression/decompression
import wavewith wave.open("path_to_wav_file.wav", "rb") as wav_file: # Open WAV file in read-only mode. # Get basic information. n_channels = wav_file.getnchannels() # Number of channels. (1=Mono, 2=Stereo). sample_width = wav_file.getsampwidth() # Sample width in bytes. framerate = wav_file.getframerate() # Frame rate. n_frames = wav_file.getnframes() # Number of frames. comp_type = wav_file.getcomptype() # Compression type (only supports "NONE"). comp_name = wav_file.getcompname() # Compression name.
# Read audio data. frames = wav_file.readframes(n_frames) # Read n_frames new frames. assert len(frames) == sample_width * n_frames
# Duplicate to a new WAV file.with wave.open("path_to_new_wav_file.wav", "wb") as wav_file: # Open WAV file in write-only mode. # Write audio data. params = (n_channels, sample_width, framerate, n_frames, comp_type, comp_name) wav_file.setparams(params) wav_file.writeframes(frames)Convert any soundfile with python and ffmpeg
Section titled “Convert any soundfile with python and ffmpeg”from subprocess import check_call
ok = check_call(['ffmpeg','-i','input.mp3','output.wav'])if ok: with open('output.wav', 'rb') as f: wav_file = f.read()note:
- http://superuser.com/questions/507386/why-would-i-choose-libav-over-ffmpeg-or-is-there-even-a-difference
- What are the differences and similarities between ffmpeg, libav, and avconv?
Playing Windows’ beeps
Section titled “Playing Windows’ beeps”Windows provides an explicit interface through which the winsound module allows you to play raw beeps at a given frequency and duration.
import winsoundfreq = 2500 # Set frequency To 2500 Hertzdur = 1000 # Set duration To 1000 ms == 1 secondwinsound.Beep(freq, dur)Audio With Pyglet
Section titled “Audio With Pyglet”import pygletaudio = pyglet.media.load("audio.wav")audio.play()For further information, see pyglet