You are on page 1of 25

TRNG I HC BCH KHOA H NI

VIN CNG NGH THNG TIN V TRUYN THNG


B MN K THUT MY TNH
*********




BO CO BI TP LN TING NI


Ti : X l ng hnh



Gio vin hng dn:
GS.TS. Trnh Vn Loan
Sinh vin thc hin:
Nguyn Thng Khang MSSV: 20083366
Nguyn Anh Sn MSSV: 20082230
Lp : KTMT K53



H Ni - 2012
2

c lc
I. L thuyt: ...................................................................................................... 3
1. Khi nim ting ni v x l ting ni: .................................................. 3
1.1. Ting ni: ........................................................................................... 3
1.2. X l ting ni: .................................................................................. 3
2. B my pht m ca con ngi: ............................................................. 3
3. Cc c tnh ca m thanh: .................................................................... 4
3.1. c tnh vt l ca m thanh: .......................................................... 4
3.2. c tnh m hc ca m thanh: ....................................................... 4
4. X l tn hiu ting ni: .......................................................................... 8
4.1. S biu hin v phn tch ting ni: ................................................ 8
4.2. Phng php x l ng hnh: ...................................................... 10
4.3. Xc nh tn s c bn F0: ............................................................. 12
II. hi chng nh ............................................................................... 15
1. C c file ave ................................................................................. 15
1.1. hi ni v p in ave ............................................................... 15
1.2. C c p in ave ..................................................................... 15
2. Phn ch v hi chc nng chng nh ................................... 18
3. Ci chng nh ............................................................................ 18
4. h nghi chng nh ................................................................... 25




3

I. L thuyt:
1. Khi nim ting ni v x l ting ni:
1.1. Ting ni:
Ting ni l phng tin trao i thng tin ca con ngi. Trung khu thn
kinh iu khin h thng pht m v to ra m thanh.
Ting ni phn bit vi cc m thanh khc bi cc c tnh m hc c
ngun gc t c ch to ting ni. V bn cht ting ni l s giao ng ca
khng kh c mang theo thng tin. Cc giao ng ny to thnh nhng p lc
n tai v c tai pht hin, phn tch chuyn n trung khu thn kinh. Lc ny
ti trung khu thn kinh thng tin c ti to di dng t duy logic m con
ngi c th hiu c.
Tn hiu ting ni c to thnh bi chui cc m v lin tip. S sp
xp ca cc m v c chi phi bi cc quy tc ca ngn ng.
1.2. X l ting ni:
X l ting ni l x l thng tin cha trong tn hiu ting ni nhm lan
truyn, lu tr tn hiu ting ni hoc l tng hp nhn dng ting ni.
Mc ch ca vic x l ting ni:
- M ha ting ni: lan truyn v lu tr ting ni mt cch hiu qu.
- Tng hp v nhn dng ting ni: Gip gii quyt cc vn v giao
tip gia con ngi v h thng ni chung bng ting ni.
- Phn tch ting ni: Phc v cho vic nghin cu v tn hiu ting ni.
2. B my pht m ca con ngi:
Cc thnh phn gip cho con ngi c th pht m bao gm: Phi, kh
qun v cc ng dn ming mi.
Thanh qun: Cha hai dy thanh v c th giao ng to ra s cng
hng cn thit to ra m thanh. Khong cch gia hai dy thanh gi l thanh
mn.
V tr ngun m ca m tun hon nm ti thanh mn.
Chu k rung ca dy thanh (T0) c gi l chu k c bn, 1/T0 c gi
l tn s c bn. Ton b b my pht m tnh t thanh mn tr ln gi l tuyn
m.
C ch pht m:
- Tuyn m c kch thch bi ngun nng lng chnh ti thanh mn.
Lung kh t phi i ln qua kh qun, lung kh ny s va chm vo hai dy
thanh trong tuyn m. Hai dy thanh dao ng s to ra cng hng, dao ng
m s c lan truyn theo tuyn m v sau khi i qua khoang mi v mi s
to ra ting ni.
- Khoang mi l ng khng u bt u t mi. Kt thc bi vm ming,
c di c nh khong 12cm i vi ngi ln.
- Vm ming l cc np c chuyn ng.
4

3. Cc c tnh ca m thanh:
3.1. c tnh vt l ca m thanh:
- cao: cao hay cn gi l trm bng ca m thanh. trm
bng ca m thanh ph thuc vo s chuyn ng nhanh hay chm ca cc
phn t khng kh trong mt n v thi gian. Ni cch khc, cao ph thuc
vo tn s giao ng. i vi ting ni, tn s giao ng ca i dy thanh qui
nh cao ging ni ca con ngi v mi ngi c mt cao ging ni
khc nhau.
- Cng : Cng l to nh ca m thanh, cng cng ln th
m thanh truyn i cng xa trong mi trng c nhiu. Cng ca sng ting
ni do bin dao ng ca song qui nh. Trong ting ni, cng ca
nguyn m thng ln hn ph m nn tai ngi nghe nguyn m d hn.
- di: di ca m ph thuc vo s chn ng lu hay mau ca
cc phn t khng kh. Cng mt m nhng trong cc t khc nhau th di
khc nhau.
- m sc: m sc l sc thi ring ca mt m, cng mt ni dung, cng
mt cao nhng mi ngi c m sc khc nhau.
3.2. c tnh m hc ca m thanh:
Nh ni ting ni c to thnh bi cc chui m v lien tip. S sp
xp ca cc m v c chi phi bi cc qui tc ngn ng. Mi ngn ng c s
lng cc m v khc nhau, thng thng c 20 30 v b hn 50 cho mi
ngn ng. Cc m v chia lm hai loi chnh nguyn m v ph m.
a. Nguyn m v ph m:
Tn hiu ting ni l tn hiu tng t biu din thng tin v mt ngn
ng v c m t bi cc m v khc nhau. Nh vy m v l n v nh nht
ca ngn ng. Ty theo tng ngn ng c th m s lng cc m v khc nhau.
Cc m v c chia thnh: nguyn m v ph m.
Nguyn m: Nguyn m c to thnh bng s cng hng ca dy
thanh khi dng kh c thanh mn y ln. Khoang ming c to lp thnh
nhiu hnh dng nht to thnh cc nguyn m khc nhau. Mi nguyn m c
c trng bi ba formant u.
Ph m: Ph m c to ra bi cc dng kh hn lon c pht ra gn
nhng im co tht ca ng dn m thanh do cch pht m to thnh. Dng
khng kh ti ch ng ca vm ming to ra ph m tc. Nhng ph m xt
c pht ra t ch co tht ln nht v cc m tc xt to ra t khong gia. Ph
m c c tnh hu thanh v v thanh ty thuc vo dy thanh c dao ng
to thnh cng hng khng. c tnh ca ph m ty thuc vo tnh chu k ca
dng song, ph tn s, thi gian tn ti v s truyn m.
H thng m v: H thng m v bao gm 11 nguyn m n, 3 nguyn
m i v 22 ph m. S phn bit nguyn m l theo nng ca li v s
5

chuyn ng ca li. S phn loi ph m l theo tc hay xt, hu thanh hay
v thanh
11 nguyn m n:
STT Nguyn m n V d
1 Y ch
2 ch
3 A A ha
4 Mt
5 Cn c
6 Chi vi
7 Uu t
8 C gio
9 O Con b
10 U Xch u
11 E E d

Nguyn m i:
STT Nguyn m i
1 ia, y, i, ya
2 ua, u
3 a,










6

22 ph m
STT Ph m STT Ph m
1 B 12 Tr
2 P 13 S
3 V 14 R
4 Ph 15 Ch
5 M 16 Nh
6 17 Ng, ngh
7 T 18 Kh
8 Th 19 G, gh
9 D, gi 20 H
10 N 21 X
11 L 22 C, k, q

b. m hu thanh v m v thanh:
m hu thanh: m hu thanh c to ra t cc dy thanh b cng ng
thi v chng rung ng ch dn khi khng kh tng ln lm thanh mn m
ra v sau thanh mn xp xung. Do s cng hng ca dy thanh, sng m
to to ra c dng gn nh tun hon. Ph ca m hu thanh c nhiu thnh
phn hi ti gi tr bi s ca tn s cng hng, cn gi l tn s c bn.
m v thanh: Khi to ra m v thanh dy thanh khng cng hng.
Ngun ca m v thanh l ngun l ngun khng tun hon. N c v tr khng
c nh m thay i theo m chng ta to ra. Ph ca ngun m kh u trong
mt phm vi rng t vi Hz n KHz. Tuyn m c c trng bi cc b lc
thng di.Tn hiu u ra cng l ngu nhin.
c. Cc yu t khc:
T sut thi gian: Trong khi ni chuyn, khong ni chuyn v khong
ngh xen k nhau. T s thi gian ni v ngh gi l t sut thi gian.
Hm nng lng ngn: Vic nghin cu x l ting ni trong thc t ch
trong mt thi gian hu hn (v mt l thuyt th phi xt cho n v cng), hay
trn s mu xc nh. Vic nghin cu trn cc mu ny vi cc k thut nht
nh s cho kt qu gn ng so vi l thuyt. Thng thng vic ly mu tn
hiu ting ni c thc hin thng qua cc ca s.
7

Tn s vt qua im khng: Tn sut vt qua im khng l s ln
bin tn hiu ting ni vt qua gi tr khng trong khong thi gian cho
trc. Thng thng gi tr ny ca m v thanh ln hn m hu thanh do c
tnh ngu nhin ca m v thanh. c im ny cng c ng dng trong qu
trnh tin x l trong nhn dng ting ni t ng.
Pht hin im cui: Trong x l ting ni vic xc nh khi no bt u
xut hin v kt thc qu trnh ni l rt quan trng v cn thit. C nhiu
phng php,v d nh sau:
Ly mt mu nh ca nn nhiu trong khong thi gian yn lng trc
khi ni. Dng hm nng lng thi gian ngn tnh nng lng cho mu,
ngng ca ting ni c chn l gi tr gia nng lng yn tnh v nng
lng nh. Ban u gi thit im cui xut hin ti im nng lng tn hiu
vt qua ngng. tnh ng c lng ny, ngi ta gi thit so snh chng
vi gi tr trong vng yn tnh. Khi nhng thay i pht hin c trong khi
tnh ton tn sut trn ngoi ngng gi thit th im cui c gi thit li
ti im m s thay i xy ra.

Tn s c bn Ngi ni
80 200 Hz n ng
150 450 Hz Ph n
200 600 Hz Tr em

i vi hai m c cng cao, cng s c phn bit bi tnh tun
hon. Mt m hu thanh c tnh tun hon khi phn tch ph s xut hin s
xut hin mt vch ti vng tn s rt thp. Vch ny c trng cho tn s c
bn ca m. Trong hi thoi tn s c bn thay i lin tc.
Formant: Trong ph tn s ca tn hiu ting ni, mi nh c bin
cao nht xt trong xt trong mt khong no (cc i khu vc) xc nh mt
formant. Ngoi tn s, formant cn c xc nh c bin v gii thng ca
chng. V mt vt l cc tn s formant tng ng vi cc tn s cng hng
tuyn m. Trong x l ting ni c bit l trong tng hp ting ni, m
phng li tuyn m ngi ta phi xc nh c cc tham s formant i vi
tng loi m v, do vic nh gi c lng cc formant c ngha rt quan
trng.
Tn s formant bin i trong mt di rng thuc vo gii tnh ngi ni
v i vi tng m v. ng thi formant cn ph thuc vo cc m v trc v
sau n. Thng thng ph tn s ting ni cha khong 6 formant nhng nh
hng ln nht n c tnh ca m v l 3 formant u tin.
8

Tn s formant c trng cho nguyn m bin i ty thuc vo ngi
ni trong iu kin pht m nht nh. Mc d phm vi tn s formant ca cc
nguyn m c th trng ln nhau nhng v tr gia cc formant khng i v
s x dch ca cc formant l song song.
4. X l tn hiu ting ni:
K thut phn tch ting ni c th c phn lp vo min tn s v
min thi gian. Mc ch chnh trong phn tch ting ni l nh gi p ng
tn s ca b my pht m (tuyn m). Cc k thut x l tn hiu ting ni
thng thng l dung dy cc b lc, phn tch Fourier, x l ng hnh hoc
cepstral.
Khi nim short time analysis l c s cho hu ht cc k thut phn
tch ting ni. Gi s rng trong khong thi gian di tn hiu ting ni l khng
dng nhng vi khong thi gian nh (10 30 ms), c th xem n l dng.
y l l do m s thay i ph tn hiu ting ni c lin h trc tip vi s
chuyn ng ca h pht m (mi, c hng) v cc rang buc ng cnh, sinh
l khc. V vy cc h thng phn tch ting ni u thc hin trn c s thi
gian bin i, vi cc khung thi gian c chn 10 -30 ms.
4.1. S biu hin v phn tch ting ni:
Ting ni lin tc l tp hp cc m thanh phc tp m chng ta kh sn
sinh nhn to. Tn hiu ting ni c to thnh bi cc chui m v lin tip
bao gm nguyn m v ph m. Trong tn hiu ting ni bao gm F0 v cc
thnh phn c sn sinh bi cc giy thanh. Tuyn m thay i cc tn hiu
ngun to nn Formant. Mi tn s Formant c mt bin v gii thng v i
khi kh c th nh ngha cc tham s ny mt cch chnh xc. Tn s c bn v
tn s Formant l nhng khi nim quan trng nht trong tng hp v x l
ting ni ni chung.
Cc m v thanh khng c tn s c bn v c th c xem l nhiu
trng. Th thm l trng hp c bit ca ting ni, khi th thm th khng
c tn s c bn.
Dng ting ni ca 3 nguyn m (/a/, /i/, /u/). Vi min thi gian v min
tn s nh trong hnh sau.



9


Hnh 1: Min thoi gian va min tan so cua nguvn am a,e, i, u
Tn s ca m thanh bnh thng nm trong khong 300 Hz n 3400
Hz. V vy biu din tn hiu ting ni trong knh thoi th 3 formant u l
. cht lng cao hn tn s ly mu phi nm t 10 kHz ti 20kHz.
Phng php thng s dng m t tn hiu ting ni l spectrogram
(nh ph) m qua biu din thi gian tn s - bin ca mt tn hiu. Khi
min c tn s cao hn th mu xm hn. Ph ca nguyn m v ph m
cng d dng nhn thy. Do vy nh ph l phng php biu din hu ch nht
nghin cu ting ni.

Hinh 2. nh ph biu din min thoi gian cua t kaksi




10

xc nh tn s c bn ca ting ni th s khi nh sau:




Phn tch Cepstral cung cp phng php tch ring tuyn m v
ngun kch thch. Tn hiu ting ni sau khi qua b lc hiu chnh (thc cht l
b lc thng cao) vi h s truyn t:
H(z) = 1 az
-1
, a < 1 v thng c chn c 0.95 0.98.
B lc hiu chnh dng xt nh hng ca tuyn m trong min tn s.
Do c tnh ph ca tn hiu ngun, m hu thanh nng lng tp trung min
tn thp c dc ph l 12dB/octave. Mi l b lc thng cao c dc c
6dB/octave. ph bng phng hn cn b lc hiu chnh b li 12dB/octave
6dB/octave, do ngi ta chn a = 0.95 0.98. Ca s thng c chn l
ca s Hamming nhm gim sai s phn tch ph khi di tn hiu hu hn.
Qu trnh ly log10| . | cho ph u hn.
4.2. Phng php x l ng hnh:
Chng ta bit rng tn hiu ting ni gm ba thnh phn, mt dy cc
xung m t cc pitch, xung kch thch v p ng xung ca ng thanh. Trong
min thi gian, gi s(n) l tn hiu ngun, e(n) l tn hiu kch thch v h(n) biu
din p ng xung ca ng thanh.
s(n) = e(n) * h(n).
Bin i Fourier 2 v ta c
S() = E() . H().
Quan h bin :
|S()| = |E()| . |H()|.
Logarithm ha hai v ta c
log{|S()|} =log{|E()|} + log{|H()|}.
Nh vy logarithm ca |S()| l tng logarithm ca |E()| v |H()|. Hn na
|H()| c quyt nh bi tuyn m theo hng tn s bin i chm, trong khi
phn b |E()| c chu k bin i nhan hn theo tn s. iu ny c ngha l hai thnh
phn ny c th phn tch nhau nh ton t lc. Php lc ny thng thng c thc
hin nh bin i Fourier ngc ca log{|S()|}, cho ta cepstrum ca tn hiu. Trong
Cepstrum, chu k pitch phn b c tnh chu k, trong khi phn b ca tuyn m xy
ra gn trc honh hn bi v bin i chm hn.
S h thng ng hnh cho phn tch ting ni.
B lc hiu
chnh
Ca s Log10|. | FFT
11




Trong nh ph xut hin cc h hi vi chu k ca ngun xung lm cho
vic quan st tr nn kh khn. Nu cng lc c nhiu ngun xung tun hon
vi cc tn s khc nhau, trong nh ph s xut hin cc h hi vi cc chu k
khc nhau ca cc ngun, nn cn phi dung n cepstrum. Trong cepstrum ta
c th nhn ra cc xung nhy vt c trng cho cc h hi ca ph. Nu ta chn
c cc xung ca cepstrum ny, tnh c dy tn hiu theo thi gian sau khi
dng php bin i ngc, th lc ta s c dng p ng xung c trng
cho s truyn t ca h thng. Nu dng lc tn s thp chn tt c cc tn
hiu tr xung ca cepstrum c trng cho ngun xung th sau php bin i
ngc ta nhn li c tn hiu theo thi gian ca p ng ngun xung.

Hinh 3. Tin hiu tuan hoan.
Ta thy Cepstrum bin i tng i chm c trng cho hm truyn t
v Cepstrum nhy vt i din cho s lp li tun hon.

Hinh 4. Cepstrum tng ng cua tn hiu tuan hon.
S dng Cepstrum trong vic nh gi cng v cc tn s nh cng
hng. Nu khng c s dao ng tun hon trong ph th trong Cepstrum
tng ng s khng c nh xut hin. Do , vi mi m thanh c chu k
cng ngn nht, nh cng xut hin trong cc vng ni m cc thnh
phn Cepstrum khc suy gim i ng k, nn kh pht hin xung nhy vt.
V vy, tt nht nn s dng mt ngng thp trong qu trnh tm kim nh
cng .
B lc
hiu chnh

Ca s
hamming
Log10|. |
FFT
FFT
-1
12


Hinh 5. Tin hiu khong tuan hoan.

Quan st Cepstrum tng ng ta thy khng c g ni tri.

Hnh 6: Cepstrum tng ng.

4.3. Xc nh tn s c bn F0:
Theo cc kt qu kho st v nghin cu, tn s c bn:
Ging nam: 80 250 Hz.
Ging n: 150 500 Hz.
Chng ta thy rng vi m hu thanh, c mt nh cao nht trong
cepstrum ti chu k c bn m u vo. Khng c nh cao nht xut hin trong
cepstrum i vi m v thanh. Nhng c tnh ca cepstrum c s dng cho
vic xc nh tn s c bn cho m hu thanh hay v thanh v c lng chu k
c bn cho m hu thanh.
Mt s phng php xc inh F0:
- Da vo hm t tng quan.
- Da vo hm vi sai bin trung bnh.
- Dng b lc o v hm t tng quan.
- X l ng hnh.
i vi phng php x l ng hnh, ta thy t biu thc (2.2):
x^(n) = s^(n) + u^(n) (2.2).
Ta tch thnh phn s^(n) bng cch nhn x^(n) vi ca s (ch nht
chng hn), bin i Fourier ta c ph dexiben ca ngun.
Trong ph dexiben ca ngun, nh cao nht v gn gc nht l tn s c
bn F0.
13


ng bao ca th tc c lng chu k da trn cepstrum n gin hn.
Cepstrum c tm kim vi nh cao nht trong ln cn ca chu k thi gian
c k vng. Nu nh cao nht ca cepstrum nm bn trn ngng thit lp
trc , tn hiu m u vo ging nh m hu thanh v v tr ca nh cao
nht l c lng tt cho chu k thi gian. Nu nh cao nht khng vt qua
ngng, n ging nh u vo ca m v thanh. S bin thin thi gian ca ch
kch thch v chu k thi gian c th c c lng bng cch tnh ton mt
gi tr cepstrum ph thuc thi gian da trn bin i Fourier ph thuc thi
gian. in hnh, cepstrum c tnh ton mi khong thi gian 10 20 ms v
cc tham s kch thch khng thay i trong tn hiu ting ni thng thng.
tnh tn s c bn da trn cepstrum, ta phi tnh c chu k T0 ca
tn hiu ting ni. Gi s c mt khung ca s vi di 32ms, ti thi im
u tin ta xc nh hai nh cao nht trn cepstrum, khong cch gia hai im
ny l chu k ca ting ni,do tn s c bn l 1/T0.


Hinh 7. Tinh chu ki c ban T0.










Tip theo ta dch chuyn tip mt na di ca s (16ms) n v tr tip
theo, xc nh cc nh cao nht trong ca s 32 ms v li tnh tng t nh trn
thu c tn s c bn tip theo. Cui cng ta thu c mt tp cc tn s c
bn, chng c biu din nh trn th sau:
14



Hinh 8. ong biu din F0.












15

II. hi chng nh
1. C c file ave


Hinh 9. Cau truc file wave

1.1. hi ni v p in ave
Tp tin wave l mt dng tp tin dng lu tr d liu m thanh s
(dng sng) v n l mt trong nhng nh dng ph bin nht ca h iu hnh
Windown. Tp tin wave thuc chun RIFF (Resource Interchange File Format
dng tp tin ti nguyn c th trao i). c im ca nhng tp tin thuc chun
RIFF l n s nhm ni dung ca tp tin thnh cc khi ring bit v mi
mt khi s gm mt header (dng quy nh kiu v kch thc khi) v cc
byte d liu.
Tp tin file wave c 2 dng nn v khng nn (dng chun) v th trong
ti ny em ch cp n dng chun ca tp tin wave tc dng khng nn.
1.2. C c p in ave
Cu trc file wave gm 3 khi: Khi m t dng RIFF, khi thuc tnh
fmt v khi d liu data. Trong khi thuc tnh fmt v khi d liu
data l hai khi con ca khi m t dng RIFF.
a. hi dng
Khi ny xc nh nh dng RIFF v c kch thc l 12 byte gm cc
trng:

16

Trng c tc Cc nng
ChunkID 4 byte Cha chui RIFF di dng m ASCII.
ChunkSize 4 byte Cho bit tng kch thc ca cc trng sau n.
ChunkSize = 4 + (8 + Subchunk1Size) + (8 +
Subchunk2Size).
Format 4 byte Cha chui WAVE.

b. hi hc nh f
Khi ny xc nh cc thuc tnh ca d liu m thanh v c kch thc
l 24 byte gm cc trng.
Trng c
tc
Cc nng
Subchunk1ID 4 byte Cha chui fmt.
Subchunk1Size 4 byte Cho bit tng kch thc ca cc trng thuc
khi thuc tnh ng pha sau trng ny.
i vi tp tin wave khng nn th
Subchunk1Size bng 16).
AudioFormat 2 byte Cho bit dng nn ca d liu trong tp tin
wave.
Gi tr:
0 khng xc nh.
1 khng nn (PCM Pulse Code Modulation).
80 MPEG.
49 GSM 6.10.
17 IMA ADPCM.


17

Mt s gi tr thng dng
Trng c
tc
Cc nng
Numchannels 2 byte Cho bit s knh ca tp tin wave (mono 1,
Stereo = 2).
SampleRate 4 byte Cho bit s mu trn 1s v y l tn s ly mu.
ByteRate 4 byte Cho bit s byte trn 1s ng vi tn s ly mu
trn.
(ByteRate = SampleRate * NumChannels *
(BitsperSample / 8)
BlockAlign 2 byte Cho bit s byte ca 1 mu gm tt c cc knh.
BitsPerSample Cho bit s bit trn 1 mu ch tnh cho mt knh.
(8 bit = 8, 16 bit = 16).

c. hi d li daa
Khi ny bao gm cc trng sau:
- Subchunk2ID: C kch thc 4 byte v cha chui data.
- Subchunk2Size: Kch thc 4 byte v cho bit kch thc ca d liu
m thanh th trong trng data.
Subchunk2Size = NumSample * NumChannels * BitsperSample / 8.
- Data: Trng data cha cc byte d liu m thanh v cc byte d liu
ny s nhm thnh cc mu, mi mu s c 1 hoc 2 knh. Ty vo s knh ca
mt mu (xc nh bi trng NumChannels) v s bit trn knh (xc nh bi
trng BitsPerSample) m ta s xc nh c s byte ca 1 mu.
S knh / s bit trn knh / kch thc 1 mu / gi tr ln nht / gi tr nh
nht.
1 /(Mono)/8/1 byte/255/0.
1 (Mono)/16/2 byte/32767/-32768.
2 (Stereo)/8/2 byte/255/0.
2 (Stereo)/16/4 byte/32767/-32768.




18


Hinh 10. Ji du cho cau truc file wave

2. Phn ch v hi chc nng chng nh
Chng trnh c thit k gm ba chc nng chnh:
- c v hin th tn hiu ting ni t file av
- Xc nh tn hiu cepstrum theo phng php x l ng hnh.
- Hin th tn hiu cepstrum.
- Hin th ng biu din F0 tnh c.

3. Ci chng nh
c cc trng ca il wav: S dng hm fopen() m file v fread
c cc trng ca file wav.











input_wave::input_wave(char *filename)
{
int i;
FILE *file;
unsigned int file_operator_state;
char output_buffer[80];

WAVE_FILE_HEADER *wave_file_herder;
DATA_CHUNK_HEADER *data_chunk_header;
short int *uptr;

unsigned char *cptr;
int data_chunk_id; // so thu tu cua chunk tiep theo can
doc
long int fp_moving_distance; // so vi tri dich chuyen
file pointer;

19



































// khoi tao cac gia tri
sample_array = NULL;
current_samples = 0;
total_number_of_samples_in_wave_file = 0;

// cap phat bo nho
wave_file_herder = new WAVE_FILE_HEADER;
data_chunk_header = new DATA_CHUNK_HEADER;
if(wave_file_herder == NULL)
exit(-1);
if (data_chunk_header == NULL)
exit(-1);

// open file wav
file = fopen(filename, "rb");
if (file == NULL)
exit(-1);

// doc 36 file header
file_operator_state = fread((void*)wave_file_herder,
sizeof(WAVE_FILE_HEADER), (size_t)1, file);
if (file_operator_state != 1)
exit(-1);

// kiem tra dinh dang cua header
// kiem tra dinh dang "RIEF" file
for (i = 0; i < 4; ++i)
output_buffer[i] = wave_file_herder-
>riff_string[i];
output_buffer[4] = 0;
if (strcmp(output_buffer, "RIFF"))
exit(-1);

// kiem tra dinh dang "WAVE" file
for(i = 0; i < 4; ++i)
output_buffer[i] = wave_file_herder-
>wave_string[i];
output_buffer[4] = 0;
if (strcmp(output_buffer, "WAVE") != 0)
exit(-1);

// kiem tra "fmt" cua subchunk
for(i = 0; i < 3; ++i)
output_buffer[i] = wave_file_herder-
>ftm_string[i];
output_buffer[3] = 0;
if (strcmp(output_buffer, "fmt") != 0)
exit(-1);

// audio format tag phai bang 1
if (wave_file_herder->wave_file_format_tag != 1)
exit(-1);

20



































// chi chap nhan luong tu 8 hoac 16 bit
if (wave_file_herder->number_of_bits_per_samples != 8
&& wave_file_herder->number_of_bits_per_samples != 16)
exit(-1);

// khong doc cac phan con lai cua header
// phan cua header da doc duoc co do dai 20 bytes
// 20 bytes nay gom co: "RIFF", chunksize(long int),
"WAVE", "FMT", SubchunkSize1
fp_moving_distance = wave_file_herder->pcm_heder_len -
(sizeof(WAVE_FILE_HEADER) - 20);
// chuyen con tro toi dau data chunk
file_operator_state = fseek(file, fp_moving_distance,
SEEK_CUR);
if (file_operator_state != 0)
exit(-1);

// doc cho toi khi tim thay "data" trong chunk data
data_chunk_id = 1;
while (data_chunk_id != 0)
{
if (data_chunk_id > MAX_NUMBER_OF_DATA_CHUNKS)
exit(-1);

// doc chunk header
// chunk header gom 8 bytes: "data", chunksize
(long int)
file_operator_state =
fread((void*)data_chunk_header, sizeof(DATA_CHUNK_HEADER),
(size_t)1, file);
// kiem tra chunk type
for(i = 0; i < 4; ++i)
output_buffer[i] = data_chunk_header-
>data_string[i];
output_buffer[4] = 0;
if(strcmp(output_buffer, "data") == 0)
break;
// so thu tu cua chunk tiep theo can doc
data_chunk_id++;
// chuyen sang chunk tiep theo
file_operator_state = fseek(file,
data_chunk_header->data_chunk_length, SEEK_CUR);
if (file_operator_state != 1)
exit(-1);

}
// do dai chunk data
wbuff_len = data_chunk_header->data_chunk_length;



21



































// tim so luong mau
// so byte trong data chunk
// so mau = tong so byte / (so byte/mau)
total_number_of_samples_in_wave_file =
data_chunk_header->data_chunk_length;
total_number_of_samples_in_wave_file /=
wave_file_herder->number_of_bits_per_samples/8;

//cap phat bo nho
wbuff = new char [wbuff_len];
if (wbuff == NULL)
exit(-1);

sample_array = new
double[total_number_of_samples_in_wave_file];
if (sample_array == NULL)
exit(-1);


// doc cac mau, ghi gia tri cua cac mau vao wbuff
file_operator_state = fread((void*)wbuff, wbuff_len,
(size_t)1, file );
if (file_operator_state != 1)
exit(-1);


// convert data
// 16bits/sample
if (wave_file_herder->number_of_bits_per_samples == 16)
{
uptr = (short*)wbuff;
for(i = 0; i <
total_number_of_samples_in_wave_file; ++i)
sample_array[i] =
(double)(uptr[i])/NOMALIZE_16_BIT;
}
// 8bits/sample
else
{
cptr = (unsigned char *)wbuff;
for(i = 0; i <
total_number_of_samples_in_wave_file; i++)
sample_array[i] =
(double)(cptr[i])/NOMALIZE_8_BIT;
}

// tan so lay mau
sampling_frequency_hz = (double)(wave_file_herder-
>number_of_samples_per_second);
// so bit/mau
number_of_bits_per_sample = wave_file_herder-
>number_of_bits_per_samples;


22












in i ourir ri rc:






















// so kenh
number_of_channels = wave_file_herder->number_of_channel;

// reset buffer stream index
current_samples = 0;
// Release
if(wbuff != NULL)
delete wbuff;
if(wave_file_herder != NULL)
delete wave_file_herder;
if(data_chunk_header != NULL)
delete data_chunk_header;
fclose(file);
return;

int DFT(char direction, int N, double *in_real, double
*in_image)
{
long i, k;
double omega_i, omega, coefficient;
double cos_omega_i, sin_omega_i;
double *local_real = NULL, *local_image = NULL;

if (direction == REVERSE_TRANSFORM)
{
omega = 2.0 * PI / (double)N;
coefficient = 1 / (double)N;
}
else if(direction == FORWARD_TRANFORM)
{
omega = -2.0 * PI / (double)N;
coefficient = 1;
}
else
{
perror("\n Tranform Direction khong dung");
return FAILURE;
}
local_real = new double[N];
local_image = new double[N];

if(local_real == NULL || local_image == NULL)
return FAILURE;


23


















c n Cpstrum:
















for (i = 0; i < N; ++i)
{
local_real[i] = 0;
local_image[i] = 0;
omega_i = omega*(double)i;
for (k = 0; k < N; ++k)
{
cos_omega_i = cos(k * omega_i);
sin_omega_i = sin(k * omega_i);
local_real[i] += (in_real[k] * cos_omega_i -
in_image[k] * sin_omega_i);
local_image[i] += (in_real[k] * sin_omega_i +
in_image[k] * cos_omega_i);
}
}

// copy data back
for (i = 0; i < N; ++i)
{
in_real[i] = local_real[i] * coefficient;
in_image[i] = local_image[i] * coefficient;
}
delete local_image;
delete local_real;
return SUCCESS;
}

void window::compute_cepstrum()
{
int i;
int start_sampleID;
start_sampleID = windowID * (number_of_samples_per_window
- number_of_overlapping_window);
cepstrum_real_part = new
double[number_of_samples_per_window];
cepstrum_image_part = new
double[number_of_samples_per_window];
cepstrum_real_part = wav_file.get_sample(start_sampleID,
number_of_samples_per_window);

// cho qua cua so hamming
for (i = 0; i < number_of_samples_per_window; ++i)
{
cepstrum_real_part[i] = cepstrum_real_part[i] *
hamming_window[i];
cepstrum_image_part[i] = 0;
}

24












Tn :














// sau do bien doi fourier roi rac
DFT(FORWARD_TRANFORM, number_of_samples_per_window,
cepstrum_real_part, cepstrum_image_part);
// logarit hoa
for (i = 0; i < number_of_samples_per_window; ++i)
{
cepstrum_real_part[i] =
log10(sqrt(cepstrum_real_part[i] * cepstrum_real_part[i] +
cepstrum_image_part[i] * cepstrum_image_part[i]));
cepstrum_image_part[i] = 0;
}
// sau do bien doi fourier nguoc
DFT(REVERSE_TRANSFORM, number_of_samples_per_window,
cepstrum_real_part, cepstrum_image_part);

}

void window::compute_F0()
{
double maxY_in_F0_range = 0;
double y;
int maxIndex;

// tim chi so tuong ung voi mau cuc dai
for (int i = minF0Index; i < maxF0Index; ++i)
{
y = cepstrum_real_part[i];
if(maxY_in_F0_range < y)
{
maxY_in_F0_range = y;
maxIndex = i;
}
}
F0_array[windowID] = sampling_rate / maxIndex;
}

25

4. h nghi chng nh
File u vo A6.wav.

You might also like