To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / audio_io.py @ 3:162d64fb861c

History | View | Annotate | Download (1.85 KB)

1
import scikits.audiolab as audiolab
2
import pylab as plt
3
import numpy as np
4

    
5
# create Sndfile instance with our example audio file
6
f = audiolab.Sndfile('viola.wav', 'r')
7

    
8
#################
9
## Extracting metadata from audio file
10
#################
11

    
12
# sample rate
13
fs = f.samplerate
14
print "Sample rate: ", fs
15

    
16
# number of channels
17
nc = f.channels
18
print "Number of channels: ", nc
19

    
20
# encoding format
21
enc = f.encoding
22
print "Encoding format: ", enc
23

    
24
# number of frames - single samples for
25
# mono and pairs of samples for stereo
26
num_samples = f.nframes
27

    
28
#################
29
## Reading Audio Samples from the file
30
#################
31

    
32
# We can read audio samples using the read_frame method
33
samples = f.read_frames(num_samples)
34

    
35
# We can now close the file...
36
f.close()
37

    
38
#################
39
## Playing the audio
40
#################
41

    
42
# play the audio file data in 'samples' at the sampling frequency 'fs'
43
audiolab.play(samples,fs)
44

    
45
#################
46
## Choosing only the first half second of audio
47
#################
48

    
49
# the new number of samples is the
50
# (duration times sampling frequency)
51
new_nsamples = 0.5 * fs
52

    
53
# creating the new samples array
54
new_samples = samples[0:new_nsamples]
55

    
56
#################
57
## Plotting the new signal using pylab/matplotlib
58
#################
59

    
60
# the x axis now shows the time in seconds instead of the sample number
61
## using the Numpy function linspace in order to create the time array
62
x_axis = np.linspace(0, 0.5, new_samples.size)
63
plt.plot(x_axis, new_samples)
64
plt.show()
65

    
66
#################
67
## Writing the shorter audio to a new file
68
#################
69

    
70
# create a name for the new file
71
new_filename = 'output_file.wav'
72

    
73
# Create a Sndfile instance for writing a mono wav file @ 44100 Hz
74
format = audiolab.Format('wav')
75
f = audiolab.Sndfile(new_filename, 'w', format, 1, 44100)
76

    
77
# Write out the shorter audio file
78
f.write_frames(new_samples)
79

    
80
# close the audio file
81
f.close()
82

    
83

    
84

    
85

    
86