Está en la página 1de 15

V

UY

P L
Mn hc: X l ting ni
TI 9:

iu din nng lng, bin v t l bin thin qua gi tr


khng ca tn hiu ting ni theo thi gian.

io vin hng dn: PGS.TS. Trnh Vn Loan


Sinh vin thc hin:

Nguyn Khnh Hng

20081279 TTM-K53

Nguyn L Hoi Nam

20081819 TTM-K53

4/2012

L I GII THIU..................................................................................................... 3
S L THUYT ....................................................................................... 4

I.

1. Cu trc file wave............................................................................................. 4


1.1.

RIFF file ................................................................................................. 4

1.2.

WAVE file.............................................................................................. 5

1.3.

Subchunk fmt ...................................................................................... 5

1.4.

Subchunk data ..................................................................................... 6

1.5.

S cu trc file WAVE ..................................................................... 7

2. Bin ca tn hiu ting ni........................................................................... 7


3. Nng lng ca tn hiu ting ni .................................................................... 7
4. T l bin thin qua gi tr khng ca tn hiu ting ni.................................. 9
II.

THIT K

..................................................................... 10

1. Cc chc nng ca chng trnh .................................................................... 10


2. Cc lp v hm chnh ca chng trnh ......................................................... 10

III.

2.1.

c v biu din file *.wav.................................................................. 10

2.2.

Bin ca tn hiu ting ni .............................................................. 12

2.3.

Nng lng ca tn hiu ting ni ........................................................ 12

2.4.

T l bin thin qua gi tr khng ca tn hiu ting ni ..................... 13

KT LUN ................................................................................................ 14

TI LIU THAM KHO...................................................................................... 15

Trong nm hc trc, chng em c trang b cc kin thc c bn v x


l tn hiu s. Nm hc ny, chng em tip tc c hc mn X l ting ni. Mn
hc ny gip chng em c th ho mt s vn trong l thuyt x l tn hiu s.
X l ting ni thc s i vi chng em l mt mn hc kh, nhng qua vic
hon thnh ti bi tp ln ny, chng em cng phn no hiu r hn v mn hc.
Qua y, chng em cng xin gi li cm n chn thnh ti thy Trnh Vn
Loan, ging vin trc tip ging dy mn hc X l ting ni, rt tn tnh truyn
t cho chng em cc vn trong x l tn hiu s ni chung v x l ting ni ni
ring

I.
1.

S L

UY

u trc file wave


Ting ni l tn hiu tng t, lu tr c trong my tnh t trng bi

chui s 01ta phi ly mu v lng t ho tn hiu tng t thnh tn hiu


s mi lu tr c trong my tnh. Phng php ly mu v lng t ho m
thanh hin nay thng l phng php PCM. Phng php ny s ly mu m
thanh vi tn s khong t 11.025 kHz cho n 44.1 kHz. Mi gi tr mu c
lng t ho bng 8 bits tng ng gi tr mu t 128 n 127 hoc lng t ho
bng 16 bits tng ng gi tr mu t 32768 n 32767. So vi lng t ho bng
8 bits th lng t ho bng 16 bits s lu tr m thanh trung thc hn nhng b li
s byte lu tng gp i.
1.1.

RIFF file

Cu trc ca Wave File thuc vo lp file c s dng bi cc hm


Multimedia ca Windows : l RIFF file. RIFF l ch vit tt ca Resource
Interchange File Format (format file trao i ti nguyn). Mt RIFF file gm mt
hoc nhiu loi chunks, trong mi chunk li cha con tr ch n chunk k tip.
Mi chunk bao gm loi chunk v d liu theo sau loi chunk . Mt ng
dng mun c RIFF file c th i qua ln lt tng chunk, c d liu nhng
chunk n quan tm v c th b qua cc chunk m n khng quan tm. Mt chunk
ca RIFF file lun bt u bi mt header c cu trc nh sau:
typedef struct
{
FOURCC ckID;
DWORD ckSize;
} CK;
FOURCC gm 4 bytes ch ra loi chunk. i vi Wave File, field ny c gi
tr l "WAVE". Nu loi chunk t hn 4 k t th cc k t cn li bn phi s c
m thm vo cc khong trng.
ckSize gm 4 byte cha kch thc vng d liu ca chunk, vng d liu ny
nm ngay sau header v c kch thc l ckSize bytes.

Chunk c th cha cc subchunks. Subchunk cng l mt chunk. Mt RIFF


file lun bt u bng mt chunk loi "RIFF".
1.2.

WAVE file

Wave file bt u l chunk loi "RIFF. Hai subchunk trong Wave chunk c t
thng tin v m thanh ca wave file v tip l d liu ca tng subchunk. l
subchunk "fmt" v subchunk "data".
1.3.

Subchunk fmt

D liu ca fmt chunk l cu trc WAVEFORMAT c cu trc nh sau:


typedef struct waveformat_tag
{
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
} WAVEFORMAT;
+ wFormatTag: Thng c gi tr l WAVE_FORMAT_PCM c nh
ngha trong tp tin MMSYSTEM nh sau:
#define WAVE_FORMAT_PCM 1
Gi tr ny bo cho phn mm ang c Wave file bit kiu m ho d liu m
thanh sang d liu s l kiu m ho PCM. Hin nay y l kiu m ho duy nht
ca Wave file.
nChannels: c hai gi tr : bng 1 cho m thanh mono v bng 2 cho m
thanh stereo.
nSamplesPerSec: cho bit tc ly mu, c cc gi tr:
11025 -- 11.025 kHz
22050 -- 22.050 kHz
44100 -- 44.100 kHz
nAvgBytesPerSec: cho bit s byte yu cu trung bnh trong mt giy
pht li mu d liu ca sng m.

nBlockAlign: cho bit s byte dng cha mt mu m thanh. Nh vy


mu 8 bit hay t hn s yu cu 1 byte, mu 9 n 16 bit s yu cu 2 byte. Nu m
thanh l stereo th yu cu s byte gp 2 ln m thanh mono.
Ta thy trong WAVEFORMAT cha c thng tin v s bit dng lng t
ho mt mu d liu ca sng m. Thc t Wave file s xc lp s bit dng cho mt
mu d liu bng mt trng gn vo cui cu trc ca WAVEFORMAT. Cu trc
nh sau:
Typedef struct pcmwaveformat_tag
{
WAVEFORMAT wf;
WORD wBitsPerSample;
} PCMWAVEFORMAT
Trong :
wBitsPerSample: cho bit s bit trong mt mu d liu.

Ch :
Cc mu d liu vn phi lu tr dng byte hoc word. Do , nu mt
wave file dng 12 bit lng t ho mt mu sng m th s phi lu tr 4 bit
tha khng dng n.
1.4. Subchunk data
D liu ca data subchunk ca wave file cha cc s liu ca m thanh
c s ho. i vi mu m thanh 8 bit, d liu ca data subchunk bao gm cc
gi tr 1 byte (c gi tr trong khong 0-255) ca cc mu m thanh. i vi mu
m thanh 16 bit, mi mu d liu gm 2 byte (c gi tr trong khong t -32768 n
32767). iu ny khng c ngha l file wave 16 bit s nghe to hn 256 ln file
wave 8 bit, m n c ngha l m thanh c lng t ho chnh xc hn, nghe
trung thc hn.
Trong mu mono 8 bit, d liu ca data subchunk gm chui cc gi tr 1 byte.
Vi stereo 8 bit, mi mu gm 2 byte, d liu s c sp xp xen k (interleave),

vi byte u (byte chn) l mu m thanh ca knh bn tri, byte sau (byte l) l ca


knh bn phi
1.5. S cu trc file W VE

Kch thc
4 bytes
4 bytes
4 bytes
4 bytes
4 bytes
2 bytes
2 bytes
4 bytes
4 bytes
2 bytes
2 bytes
4 bytes
4 bytes

2.

Gi tr
"RIFF"
Kch thc file RIFF
"WAVE"
"fmt "
Kch thc subchunk "fmt "
Kiu m ha d liu ca file wave
(thng l PCM)
S knh: 1 mono
2 stereo
S mu/1giy
S bytes/1 giy
S bytes/1mu
S bits/1mu
"data"
Kch thc d liu
D liu sng m

in ca tn hiu ting ni
Bin tn hiu ting ni theo thi gian cho bit ng bao bin ca tn

hiu. V vy ch cn ly gi tr tuyt i ca bin v biu din gi tr ny theo


thi gian.

3.

ng lng ca tn hiu ting ni


Ting ni c to t s rung ng ng thanh m theo thi gian. V vy tn

hiu ting ni trong t nhin l khng n nh. Hu ht cc cng thc trong x l


tn hiu hc, cc h thng hay qu trnh x l tn hiu u gi s h thng bt

bin theo thi gian, thi gian bt bin v tn hiu khng thay i. Do nhng cng
thc ny khng p dng trc tip cho qu trnh x l ting ni.
Cng thc tnh tng nng lng ca tn hiu ting ni:

Cng thc ny c s dng trong trng hp tn hiu khng thay i v nng


lng gii hn. Gi s, nu chng ta s dng cng thc trn tnh tng nng
lng ca tn hiu ting ni. Nhng tng nng lng ny khng c s dng. Bi
v, thc t ting ni ca nng lng thay i theo thi gian. V vy chng ta phi
a ra cng thc tnh nng lng thay i theo thi gian. r rng chng ta gi s
tn hiu trong qu trnh x l khng thay i, tn hiu ting ni khng thay i khi
chng ta biu din trong nhng khi t 10 ti 30 ms. V vy x l ting ni, ta
x l tn hiu ting ni trong khi 10-30ms. y gi l qu trnh x l ngn hn.
Nng lng ca tn hiu ting ni bin thin theo thi gian. Do mc ch
ca qu trnh x l ting ni l lm sao nhn bit c s thay i ca nng
lng theo thi gian. Tn hiu ting ni bao gm m v thanh, hu thanh v khong
lng. Hn na, phi so snh nng lng ca vng m hu thanh vi vng m v
thanh v vng khong lng khng c nng lng. V vy nng lng ngn hn c
th s dng phn loi m hu thanh, m v thanh v khong lng.
Cng thc tnh nng lng ngn hn c th da trn cng thc tnh tng nng
lng.

tnh nng lng ngn hn chng ta xt tn hiu trong khong 10-30ms. t


nhng mu trong khung l n = 0 ti n = N-1, trong N l tng s mu trong
khung.
Cng thc tnh nng lng ngn hn:

Trong w(n) l hm ca s nh ca s ch nht, hanning, hamming.


Hm ca s Hamming
8

{
4.

l bin thin qua gi tr khng ca tn hiu ting ni


T l bin thin qua gi tr khng a ra thng tin v t l tn hiu thay i

du trong sut chiu di tn hiu, t l m ti tn hiu thay i t dng sang m


hoc ngc li. c im ny c s dng nhiu trong c vic nhn bit tn hiu
ting ni v khi phc li thng tin ting nhc, phn loi m thanh va p.
Nu t l bin thin qua gi tr khng ln th tn hiu c thay i ln, on tn
hiu c tn s cao vi cc ng ging nhau. Nu tn hiu c t l bin thin qua
gi tr khng nh, tn hiu thay i chm, do tn hiu cha thng tin v tn s
thp. T l bin thin qua gi tr khng a ra thng tin v tn s ca tn hiu ting
ni.
Cng thc tnh t l bin thin qua gi tr khng ca tn hiu ting ni:

Trong

w(m) l ca s ch nht
0.5|sgn{x[m]} sgn{x[m 1]}| = 1 nu x[m] v x[m 1] khc du v bng 0
nu hai mu cng du.

II.

c chc nng ca chng trnh

1.
-

c v hin th tn hiu ting ni t file *.WAV

Biu nng lng, bin v t l bin thin qua gi tr khng ca tn hiu


ting ni.

Cc menu:
Open menu: chn file *.wav
Wave file information menu: xem thng tin header file *.wav
Next, Back menu: chuyn hnh biu din.
c lp v hm chnh ca chng trnh

2.
2.1.

c v biu din file *.wav

c file *.wav
class WaveFile
{
#region RIFF HEAD
private byte[] m_RiffID;
//Chui "RIFF": 4 byte
private int m_RiffSize;
//Tng kch thc ca trng sau n
private byte[] m_RiffFormat;
//Chui "WAVE": 4 byte
#endregion
#region FMT HEAD
private
private
private
private
private
private
private
private

byte[] m_FmtID;
//String "fmt":4 byte
int m_FmtSize;
//Tng kch thc cc trng sau
int m_FmtTag;
//Dng nn d liu(VD: 1-PCM): 2 byte
int m_Channels;
//S knh(Mono=1; Stereo=2): 2 byte
int m_SamplesPerSec; //Tn s ly mu:s mu trn1giy:4 byte
int m_AverageBytesPerSec; //S bytes trn giy: 4 byte
int m_BlockAlign;
//S byte trong mt mu: 2byte
int m_BitsPerSample;
//S bit trn mu: 2 byte

#endregion
#region DATA WAVE
private byte[] m_DataID;
private int m_DataSize;
private int m_NumSamples;
private int[] m_Data1;
private int[] m_Data2;
#endregion

//Chui data
//Kch thc d liu m thanh
//Tng s mu
//Cha byte ca d liu m thanh

10

Biu din file *.wav: class ViewWave


public void DrawSpeechSignal()
{
using( Graphics g = Graphics.FromImage(bitmap))
{
Pen pen = new Pen(Color.Blue);
g.DrawLine(pen, new Point(50, height / 2), new Point(width, height /
2));
PointF[] point = new PointF[NumSample];
int dtMax = getValueMax(Data);
int fheight = height / 2 - 15;
g.TranslateTransform(0, height / 2);
for (int i = 0; i < Data.Length; i++)
{
int val = Data[i];
point[i].X = (i * (width - 50)) / NumSample + 50;
point[i].Y = (-1) * ((fheight * val) / dtMax);
}
g.DrawLines(pen, point);
g.Dispose();
}
picGraph.Image = bitmap;
}

Trong hm biu din trn, mu c gi tr ln nht c biu din bng


on c di fheight.

11

2.2.

Bin ca tn hiu ting ni: class ViewAmplitude

public void DrawAmplitude()


{
using (Graphics g = Graphics.FromImage(bitmap))
{
Pen pen = new Pen(Color.Blue);
PointF[] point = new PointF[NumSample];
int dtMax = getValueMax(Data);
g.DrawString(dtMax + "", new Font("Courier", 8, FontStyle.Regular),
Brushes.Black, new Point(15, 13));
int fheight = height - 30;
g.TranslateTransform(0, height - 15);
for (int i = 0; i < Data.Length; i++)
{
int val = Math.Abs(Data[i]);
point[i].X = (i * (width - 50)) / NumSample + 50;
point[i].Y = (-1) * ((fheight * val) / dtMax);
}
g.DrawLines(pen, point);
g.Dispose();
}
picGraph.Image = bitmap;
}

2.3. Nng lng ca tn hiu ting ni: class ViewEnergy


Tnh nng lng ca tn hiu ting ni
Hamming = WindowHamming(lenWindow);
//Ca s Hamming
int numPoint = NumSample / lenShift;
//Tng s im tren Ox
Energy = new int[numPoint];
newData = new int[NumSample];
int dtMax = getValueMax(data);
int fheight = height / 2 - 15;
for (int i = 0; i < NumSample; i++)
{
newData[i] = (fheight * data[i]) / dtMax;
}
for (int i = 0; i < numPoint; i++)
{
double temp = 0;
for (int m = 0; m < lenWindow; m++)
{
if (i * lenShift + m >= NumSample) continue;
temp += Math.Pow(newData[m + i * lenShift], 2) *
Math.Pow(Hamming[m], 2);
}
Energy[i] = (int)temp;
}

12

2.4.

T l bin thin qua gi tr khng ca tn hiu ting ni


Class ViewZeroCrossingRate
int numPoint = NumSample / lenShift;
ZCR = new int[numPoint];
for (int i = 0; i < numPoint; i++)
{
double temp = 0;
for (int m = 0; m < lenWindow; m++)
{
if (i * lenShift + m + 1 >= NumSample) continue;
temp += 0.5 * Math.Abs(Math.Sign(data[m + i *
lenShift]) - Math.Sign(data[m + 1 + i * lenShift]));
}
ZCR[i] = (int)(temp);
}

13

III.

K LU

Thng qua qu trnh nghin cu bi tp ln em li cho chng em nhng


hiu bit ton din hn v tn hiu ting ni, cng nh nhng ng dng thc t ca
vic xc nh v biu din tn hiu ting ni, nng lng v t l bin thin qua gi
tr khng ca tn hiu ting ni. Do thi gian c hn nn khng th trnh khi nhng
sai st, chng em mong nhn c s gp b sung ca thy.

14

L U

Trnh Vn Loan, Bi ging x l ting ni

http://my.opera.com/f0ng_vn/blog/show.dml/671686

http://125.20.82.167:8091/virtual/experiment7.php?link=T00107

http://www.nowpublishers.com/product.aspx?product=SIG&doi=2000000
001&section=x1-56r1

15

También podría gustarte