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

Audio - And.speech - Processing.part 1.prof - Muralikrishna.h

This document contains Scilab code solutions for experiments involving audio and speech signal processing. The solutions cover basic operations on signals like generating sine waves and adding sine and square waves. It also includes programs for concatenating speech signals and converting between stereo and mono audio files. Additionally, there are solutions for finding the resonating frequency of a tuning fork from an audio signal using techniques like Fourier analysis and autocorrelation.

Uploaded by

Willy Morales
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)
125 views15 pages

Audio - And.speech - Processing.part 1.prof - Muralikrishna.h

This document contains Scilab code solutions for experiments involving audio and speech signal processing. The solutions cover basic operations on signals like generating sine waves and adding sine and square waves. It also includes programs for concatenating speech signals and converting between stereo and mono audio files. Additionally, there are solutions for finding the resonating frequency of a tuning fork from an audio signal using techniques like Fourier analysis and autocorrelation.

Uploaded by

Willy Morales
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

October 5, 2017

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.1Generating a sin wave . . . . . . . . . . . . . . . . . . 4


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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy