0% found this document useful (0 votes)
8 views15 pages

Audio and Speech Processing Part 1 - Prof - Muralikrishna H

The Scilab Manual for Audio and Speech Processing provides a collection of solutions and experiments focused on signal processing, including generating sine and square waves, concatenating speech signals, and finding resonating frequencies. It includes detailed Scilab code for each solution, aimed at helping users understand and implement audio processing techniques. The manual is authored by Prof. Muralikrishna H and is available for download from specified online resources.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views15 pages

Audio and Speech Processing Part 1 - Prof - Muralikrishna H

The Scilab Manual for Audio and Speech Processing provides a collection of solutions and experiments focused on signal processing, including generating sine and square waves, concatenating speech signals, and finding resonating frequencies. It includes detailed Scilab code for each solution, aimed at helping users understand and implement audio processing techniques. The manual is authored by Prof. Muralikrishna H and is available for download from specified online resources.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

Scilab Manual for

Audio and Speech Processing Part 1


by Prof Muralikrishna H
Electronics Engineering
Manipal Institute of Technology1

Solutions provided by
Prof Muralikrishna H
Electronics Engineering
Manipal Institute of Technology

January 25, 2025

1 Funded by a grant from the National Mission on Education through ICT,


http://spoken-tutorial.org/NMEICT-Intro. This Scilab Manual and Scilab codes
written in it can be downloaded from the ”Migrated Labs” section at the website
http://scilab.in
1
Contents

List of Scilab Solutions 3

1 Basic Operations on Signals 4

2 Concatenation of Speech Signals 7

3 Finding the Resonating Frequency of a Tuning Fork 10

2
List of Experiments

Solution 1.1 Generating a sin wave . . . . . . . . . . . . . . . 4


Solution 1.2 Program to compare two sine waves with different
frequencies . . . . . . . . . . . . . . . . . . . . . . 4
Solution 1.3 Program to generate squarewave . . . . . . . . . . 5
Solution 1.4 Program to add sin and squarewave . . . . . . . . 6
Solution 2.1 Program to concatenate speech signals . . . . . . 7
Solution 2.2 Concatenating into Stereo file . . . . . . . . . . . 8
Solution 2.3 Stereo to Mono conversion . . . . . . . . . . . . . 8
Solution 3.1 Resonating Freq using spectrum . . . . . . . . . . 10
Solution 3.2 Resonating Freq in mixed frequency signal . . . . 11
Solution 3.3 Resonating Freq using Autocorrelation . . . . . . 12

3
Experiment: 1

Basic Operations on Signals

Scilab code Solution 1.1 Generating a sin wave

1 // G e n e r a t i n g a s i n e wave
2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2
5 //
6 clc ;
7 close ;
8 clear ;
9 f =100;
10 Fs =44000; // s a m p l i n g f r e q u e n c y
11 t =0:1/ Fs :.02; // 2 c y c l e s o n l y
12 y = sin (2* %pi * f * t ) ;
13 plot ( y ) ;
14 title ( ’ S i n e wave ’ )
15 xlabel ( ’ s a m p l e number ’ ) ;
16 ylabel ( ’ a m p l i t u d e ’ ) ;

Scilab code Solution 1.2 Program to compare two sine waves with differ-
ent frequencies

4
1 // Program t o compare two s i n e waves w i t h d i f f e r e n t
frequencies .
2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2
5 //
6
7 clc ;
8 close ;
9 clear ;
10 f1 =100;
11 F =4400; // s a m p l i n g f r e q u e n c y
12 t =0:1/ F :.02;
13 y = sin (2* %pi * f1 * t ) ;
14
15 f2 =200;
16 z =2* sin (2* %pi * f2 * t ) ;
17
18
19 subplot (211)
20 plot ( y ) ;
21 xlabel ( ’ s a m p l e number ’ ) ;
22 ylabel ( ’ a m p l i t u d e ’ ) ;
23
24 subplot (212)
25 plot ( z )
26 xlabel ( ’ s a m p l e number ’ ) ;
27 ylabel ( ’ a m p l i t u d e ’ ) ;

Scilab code Solution 1.3 Program to generate squarewave

1 // Program t o g e n e r a t e s q u a r e w a v e
2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2

5
5 //
6 f =100;
7 Fs =44000; // s a m p l i n g f r e q u e n c y
8 t =0:1/ Fs :.02; // 2 c y c l e s o n l y
9 y = squarewave (2* %pi * f * t ) ;
10 plot ( y ) ;
11 xlabel ( ’ s a m p l e number ’ ) ;
12 ylabel ( ’ a m p l i t u d e ’ ) ;

Scilab code Solution 1.4 Program to add sin and squarewave

1 // Program t o add s i n and s q u a r e w a v e


2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2
5 //
6 clc ;
7 close ;
8 clear ;
9 f =100;
10 Fs =44000; // s a m p l i n g f r e q u e n c y
11 t =0:1/ Fs :.02; // 2 c y c l e s o n l y
12 y = squarewave (2* %pi * f * t ) ;
13 z = sin (2* %pi * f * t ) ;
14 subplot (311)
15 plot ( y )
16 title ( ’ S u q r e wave ’ )
17 subplot (312)
18 plot ( z )
19 title ( ’ S i n e wave ’ )
20 zz = y + z ; // Adding two s i g n a l s
21 subplot (313)
22 plot ( zz ) ;
23 title ( ’ R e s u l t o f a d d i n g s i n and s q u a r e wave ’ )

6
Experiment: 2

Concatenation of Speech
Signals

Scilab code Solution 2.1 Program to concatenate speech signals

1 // T h i s c o d e Reads 2 a u d i o f i l e s and c o c c a t e n a t e s
them .
2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2
5 //
6 clc ;
7 close ;
8 clear ;
9 [y , Fs ] = wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ Number 1 . wav
’ ) ; // r e a d i n g t h e a u d i o f i l e 1
10 [x , Fs ]= wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ Number 2 . wav ’
) ; // r e a d i n g t h e a u d i o f i l e 2
11 z =[ y , x ];
12 sound (z , Fs ) // p l a y i n g c o n c a t e n a t e d f i l e .
13 t =(0: length ( z ) -1) *1/ Fs ;
14 plot (t , z )
15 title ( ’ C o n c a t e n a t e d S p e e c h s i g n a l waveform ’ )
16 xlabel ( ’ Time i n s e c o n d s ’ )

7
17 ylabel ( ’ A m p l i t u d e ’ )

Scilab code Solution 2.2 Concatenating into Stereo file

1 // T h i s Program Reads 2 a u d i o f i l e s and c o c c a t e n a t e s


them i n t o a s t e r e o f i l e .
2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2
5 //
6 clc ;
7 close ;
8 clear ;
9 [y , Fs ] = wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ Number 1 . wav
’ ) ; // r e a d i n g t h e a u d i o f i l e 1
10 [x , Fs ]= wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ Number 2 . wav ’
) ; // r e a d i n g t h e a u d i o f i l e 2
11 z =[ x ; y ]; // C o n c a t e n a t i n g . //Two f i l e s must be o f
same l e n g t h
12 sound (z , Fs ) // p l a y i n g c o n c a t e n a t e d f i l e . // O b s e r v e
two s e p e r a t e s i g n a l s p l a y e d t o g e t h e r .

Scilab code Solution 2.3 Stereo to Mono conversion

1 // T h i s Program Reads a s t e r e o f i l e and c o n v e r t s i t


in to i n d i v i d u a l f i l e s .
2 //
3 //OS : windows 7
4 // S c i l a b : 5 . 5 . 2
5 //
6 clc ;
7 close ;
8 clear ;

8
9 [y , Fs ] = wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ s t e r e o . wav ’ )
; // R e a d i n g a s t e r e o f i l e
10 // sound ( y , Fs ) ; // Uncomment t o p l a y s t e r e o f i l e
11 left = y (1 ,:) ; // E x t r a c t s t h e f i r s t row
12 sound ( left , Fs ) ; // Uncomment t o g e t l e f t s i d e
component
13 t =(0: length ( left ) -1) *1/ Fs ;
14 subplot (211)
15 plot (t , left )
16 title ( ’ L e f t s i d e a u d i o component ’ )
17 xlabel ( ’ Time i n s e c o n d s ’ )
18 ylabel ( ’ A m p l i t u d e ’ )
19
20 right = y (2 ,:) ;
21 sound ( right , Fs ) ; // Uncomment t o g e t r i g h t s i d e
componet .
22 subplot (212)
23 plot (t , left )
24 title ( ’ R i g h t s i d e a u d i o component ’ )
25 xlabel ( ’ Time i n s e c o n d s ’ )
26 ylabel ( ’ A m p l i t u d e ’ )

9
Experiment: 3

Finding the Resonating


Frequency of a Tuning Fork

Scilab code Solution 3.1 Resonating Freq using spectrum

1 // Program t o f i n d t h e R e s o n a t i n g f r e q u e n c y o f a
Tuning f o r k
2 // u s i n g s p e c t r u m o f t h e s i g n a l
3 //
4 //OS : windows 7
5 // S c i l a b : 5 . 5 . 2
6 //
7 clc ;
8 close ;
9 clear ;
10 [y , Fs ] = wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ Freq512Hz .
wav ’ ) ;
11 y = y (200:1900) ; // c o n s i d e r i n g o n l y a s e g m e n t t o
r e d u c e t h e amount o f c o m p u t a t i o n
12 t =(0: length ( y ) -1) / Fs ;
13 subplot (211)
14 plot (t , y )
15 xlabel ( ’ Time i n s e c o n d s ’ )
16 title ( ’ O r i g i n a l s i g n a l ’ )

10
17 Y = abs ( fft ( y ) ) ; // f i n d t h e f o u r i e r t r a n s f o r m
18
19 l = length ( Y ) /2;
20 f = (0:( l -1) ) * Fs /(2* l ) ; // m o d i f y t h e x a x i s t o
r e p r e s e n t frequency instead of samples
21
22 abs_fft = abs ( Y (1: l ) ) ;
23 subplot (212)
24 plot (f , abs_fft ) ; // p l o t m a g n i t u d e o f f o u r i e r
transform
25 title ( ’ F o u r i e r T r a n s f o r m o f s i g n a l ’ )
26 xlabel ( ’ F r e q u e n c y ’ )
27 ylabel ( ’ A m p l i t u d e ’ )
28
29 peak = max ( abs_fft ) ; // f i n d t h e f i r s t maxima o f t h e
spectrum
30 peakfreq = [ f ( abs_fft == peak ) ]
31 disp ( ’ R e s o n a t i n g f r e q u e n c y o f g i v e n t u n i n g f o r k ( i n
Hz ) : ’ ) ;
32 disp ( peakfreq ) ; // d i s p l a y t h e c o n t a i n e d f r e q u e n c i e s

Scilab code Solution 3.2 Resonating Freq in mixed frequency signal

1 // T h i s program f i n d s t h e f r e q u e n c y c o m p o n e n t s i n a
g i v e n mixed f r e q u e n c y s i g n a l
2 // Mixed f r e q u e n c y s i g n a l was r e c o r d e d by p l a y i n g 2
Tunng f o r k s s i m u l t a n e o u s l y
3 //
4 //OS : windows 7
5 // S c i l a b : 5 . 5 . 2
6 //
7 clc ;
8 close ;
9 clear ;
10

11
11 [y , Fs ] = wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \
Mixed512and384 . wav ’ ) ; // r e a d t h e a u d i o f i l e
12
13 Y = abs ( fft ( y ) ) ; // f i n d t h e f o u r i e r t r a n s f o r m
14
15 l = length ( Y ) /2;
16 f = (0:( l -1) ) * Fs /(2* l ) ; // m o d i f y t h e x a x i s t o
r e p r e s e n t frequency instead of samples
17
18 abs_fft = abs ( Y (1: l ) ) ;
19 plot (f , abs_fft ) ; // p l o t m a g n i t u d e o f f o u r i e r
transform
20 title ( ’ F o u r i e r T r a n s f o r m o f s i g n a l ’ )
21 xlabel ( ’ F r e q u e n c y ’ )
22 ylabel ( ’ A m p l i t u d e ’ )
23
24 peak = max ( abs_fft ) ; // f i n d t h e f i r s t maxima o f t h e
spectrum
25 secpeak = max ( abs_fft ( abs_fft < max ( abs_fft ) ) ) ; //
f i n d t h e s e c o n d maxima o f t h e s p e c t r u m
26 peakfreq = [ f ( abs_fft == peak ) , f ( abs_fft == secpeak
) ]; // f i n d t h e f r e q u e n c y c o r r e s p o n d i n g t o t h e
peaks
27 peakfreq = gsort ( peakfreq ) ; // s o r t t h e d e t e c t e d
frequencies
28 peakfreq ( abs ( max ( peakfreq ) - max ( peakfreq ( peakfreq <
max ( peakfreq ) ) ) ) < 10) = []; // remove f r e q u e n c i e s
t h a t a r e v e r y c l o s e t o one a n o t h e r
29
30 disp ( ’ Given s i g n a l h a s f o l l o w i n g f r e q u e n c i e s ( i n Hz )
: ’ );
31 disp ( peakfreq ) ; // d i s p l a y t h e c o n t a i n e d f r e q u e n c i e s

Scilab code Solution 3.3 Resonating Freq using Autocorrelation

12
1 // F i n d i n g t h e R e s o n a t i n g f r e q u e n c y o f a Tuning f o r k
using
2 // A u t o c o r r e l a t i o n method .
3
4 //
5 //OS : windows 7
6 // S c i l a b : 5 . 5 . 2
7 //
8 clc ;
9 close ;
10 clear ;
11 [y , Fs ] = wavread ( ’C : \ U s e r s \ACER\ D e s k t o p \ Freq512Hz .
wav ’ ) ;
12 y = y (200:1900) ; // c o n s i d e r i n g o n l y a s e g m e n t t o
r e d u c e t h e amount o f c o m p u t a t i o n
13 t =(0: length ( y ) -1) / Fs ;
14 subplot (211)
15 plot (t , y )
16 xlabel ( ’ Time i n s e c o n d s ’ )
17 title ( ’ O r i g i n a l s i g n a l ’ ) ;
18 c1 = xcorr ( y ) ;
19 subplot (212)
20 lag =(1: length ( c1 ) ) - ceil ( length ( c1 ) /2) ;
21 plot ( lag , c1 )
22 title ( ’ A u t o c o r r e l a t i o n i f t h e g i v e n s e g m e n t ’ )
23
24 c1 = - c1 ; // f l i p t h e ACF t o g e t two maxima p e a k s
25
26 [a , b ] = max ( c1 ) ; // f i n d t h e f i r s t maxima
27 [c , d ] = max ( c1 ( b +1: $ ) ) ; // f i n d t h e s e c o n d maxima
28
29 numsamples = d +1; // g e t t h e number o f s a m p l e s
between the peaks
30
31 freqncy = Fs / numsamples ; // c a l c u l a t e t h e f r e q u e n c y
of the s i g n a l
32
33 disp ( ’ R e s o n a t i n g f r e q u e n c y i n Hz : ’ );

13
34 disp ( freqncy ) ; // d i s p l a y t h e f r e q u e n c y

14

You might also like