background image

WOJSKOWA AKADEMIA TECHNICZNA 

im. Jarosława Dąbrowskiego 

 
 
 
 

 

 

 
 
 

SYSTEMY DIALOGOWE 

SPRAWOZDANIE Z ĆWICZENIA nr 4 

 

Temat: 

SYNTEZA SYGNAŁU MOWY METODĄ KONKATENACJI 

 

 
 

 

Wykonał: plut. pchor. Radosław WOŹNIAK  

Grupa: I9G1S1 

 
 

 
 
 
 

 

background image

 

1. 

TREŚĆ ZADANIA 

 

1. Dla 

sygnału s(n) wykorzystywanego w ćwiczeniu nr 2 utworzyć 

dwa sygnały: s1(n) zawierający wyłącznie samogłoski i 
s2(n)zawierający wyłącznie spółgłoski. Odsłuchać – sformułować 
wnioski dla konkatenacyjnej syntezy sygnałów. 
 
 
2. Wykorzystując sygnały z ćwiczeń nr 2 i 3 dokonać syntezy 
dowolnej 
wypowiedzi (innej niż nagrana) jako konkatenacji wydzielonych (za 
pomocą programu PRAAT): 

fonemów 

difonów 

trifonów 

 
 
3. Zastosować przekształcone okno Hanninga do wygładzenia 
nieciągłości konkatenacji jednostek fonetycznych. 
 
 
4. Ocenić jakość syntezy sygnału mowy: 

ocena subiektywna: poprzez odsłuchanie sygnału 

zsyntezowanego 
-  

ocena obiektywna poprzez porównanie sygnału zsyntezowanego 

sygnałem rzeczywistym, zarejestrowanym przez wykonawcę 

ćwiczenia 
(w dziedzinie 

czasu i częstotliwości). 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

2.  WYNIKI 

 
Zad 1. 
 

W  celu  realizacji  pierwszego  zadania  wykorzystano  nagranie  z 

ćwiczenia  laboratoryjnego  nr  2  czyli  „MEGAFON”.  Sygnał  dźwiękowy 
nagrany  został  w  trybie  mono    z  częstotliwością  próbkowania  fs=22050 
Hz. 

Słowo zawiera: 

trzy samogłoski „e”, „a” i „o”; 

spółgłoskę nosową „n”; 

spółgłoskę trącą bezdźwięczną „f”; 

spółgłoskę zwartą „g”. 

 

Plik  dźwiękowy  z  ćwiczenia  nr2  znajduję  się  w  folderze 

„nagranie/megafon” i nazywa się megafon1.wav. Pik podzielono na fony, 
difony  i  trifony 

za  pomocą  programu  PRAAT  (świadczy  o  tym  plik 

TEXTGRID).  Z 

otrzymanych  fonów  utworzono  dwa  pliki  dźwiękowe 

zawierające (złączenie za pomocą programu Audacity): 

  s

ame samogłoski to s1(n), czyli plik eao.wav; 

  s

ame spółgłoski to s2(n), czyli plik fgmn.wav; 

Pliki dźwiękowe znajdują się w folderze „samogloski i spolgloski”. 
 
WNIOSKI do zad.1. 
 
 

Przy  porównaniu  konkatencji  samych  samogłosek  i  samych 

spółgłosek,  słychać  znaczące  różnice.  Odsłuchując  plik  s1(n)  z  samymi 
samogłoskami  słychać  wyraźnie  każdą  samogłoskę,  pomimo  że  są  one 
koło siebie, można je odróżnić. Natomiast przy odsłuchiwaniu pliku s2(n) 
z  samymi  spółgłoskami,  trudno  jest  usłyszeć  zmianę  spółgłoski,  a  tym 
samym rozpoznać co to za fon.  
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

 
Zad.2. 
 

Z  pośród  nagranych  wcześniej  wyrazów  takich  jak  megafon, 

meteor,  beta  i  kapusta  (sygnały  dźwiękowe  nagrane  zostały  w  trybie 
mono  z  częstotliwością  próbkowania  fs=22050Hz  i  rozdzielczością 
16bitów), postanowiłem dokonać konkatencji wyrazu meta. 
 
Konkatencja fonów: „m - e - t – a”. 

Z wyrazów: 

  megafon (fon m); 

  meteor (fon e); 

  kapusta (fon t); 

  beta (fon a). 

 
Konkatencja difonów: „_m – me – et –ta – a_”. 

Z wyrazów: 

  meteor (difon _m), 

  megafon (difon me),  

  meteor(difon et),  

  beta (difon ta),  

  kapusta (difon a_). 

 
Konkatencja trifonów: „_me – met – eta – ta_”. 

Z wyrazów: 

  megafon (trifon _me), 

  meteor(trifon met), 

  beta (trifon eta),  

  kapusta (trifon ta_). 

 

W celu wykonania zadania podzielono wyrazy megafon, meteor, beta 

i  kapusta  za  pomocą  programu  PRAAT  na  fony,trifony,difony.  Pliki 
znajdują  się  w  folderze  „nagrania”  (wraz  z  plikami  TEXTGRID  z 
programu PRAAT). 
 
Kapusta: 

  Fonemy: K 

– a – p – u  - s – t – a  

  Difony:_k 

– ka – ap – pu – us – st – ta – a_ 

  Trifony: _ka 

– kap – apu – pus – ust – sta – ta_ 

 
Meteor: 

  Fonemy: M 

– e – t – e – o – r 

background image

  Difony: _m 

– me – et – te – eo - or – r_ 

  Trifony: _me 

– met – ete – teo – eor – or_ 

 
Megafon: 

  Fonemy: m - e - g - a - f - o - n 

  Difony: _m - me - eg - ga - af - fo - on - n_ 

  Trifony: _me - meg - ega - gaf - afo - fon - on_ 

 
Beta: 

  Fonemy: B 

– e – t – a 

  Difony: _b 

– be – et – ta – a_ 

  Trifony: _be 

– bet – eta – ta_ 

 
 

%fony

 

[fon_m,fm]=wavread(

'nagrania\megafon\fon_megafon\m.wav'

);

 

[fon_e,fe]=wavread(

'nagrania\meteor\fon_meteor\e2.wav'

);

 

[fon_t,ft]=wavread(

'nagrania\kapusta\fon_kapusta\t2.wav'

);

 

[fon_a,fa]=wavread(

'nagrania\beta\fon_beta\a.wav'

);

 

fon_meta=[fon_m', fon_e', fon_t',fon_a'];

%konkatenacja fonemow

 

%wavplay(fon_meta,0.95*fm); %odtworzenie polaczonego dzwieku

 

wavwrite(fon_meta,

'wyniki_syntezy\meta_z_fonow.wav'

);

%zapis poloczonego 

dzwieku

 

dl_fon_meta=length(fon_meta);

 

fon_czas=(0:dl_fon_meta-1)/(fm);

%obliczenie czasu trwania dzwieku

 

figure(1)

 

plot(fon_czas,fon_meta);

%rysowanie wykresu

 

title(

'Wykres przebiegu dzwieku "meta" uzyskanego z syntezy fonow'

);

 

ylabel(

'a - amplituda'

);

 

xlabel(

't - czas'

);

 

grid 

on

;

 

Rys.1. Listing programu odpowiedzialnego za syntezę fonemów i 

wyświetlenie wykresu. 

 

background image

 

Rys.2. Wykres sygnału „meta” uzyskanego z konkatencji fonów. 

 

 

%difony

 

%wgranie dzwiekow

 

[difon__m,f_m]=wavread(

'nagrania\meteor\difon_meteor\_m.wav'

);

 

[difon_me,fme]=wavread(

'nagrania\megafon\difon_megafon\me.wav'

);

 

[difon_et,fet]=wavread(

'nagrania\meteor\difon_meteor\et.wav'

);

 

[difon_ta,fta]=wavread(

'nagrania\beta\difon_beta\ta.wav'

);

 

[difon_a_,fa_]=wavread(

'nagrania\kapusta\difon_kapusta\a_.wav'

);

 

%obliczenie dlugosci dzwiekow

 

dl_d1=length(difon__m);

 

dl_d2=length(difon_me);

 

dl_d3=length(difon_et);

 

dl_d4=length(difon_ta);

 

dl_d5=length(difon_a_);

 

%dopasowanie dlugosci difonow

 

difon_1=difon__m(200:dl_d1-800);

 

difon_2=difon_me(700:dl_d2-1200);

 

difon_3=difon_et(3300:dl_d3-1000);

 

difon_4=difon_ta(100:dl_d4-2000);

 

difon_5=difon_a_(300:dl_d5-2000);

 

%konkatenacja difonow

 

difon_meta=[difon_1', difon_2', difon_3',difon_4',difon_5'];

 

%wavplay(difon_meta,f_m);%odtworzenie polaczonego dzwieku

 

wavwrite(difon_meta,

'wyniki_syntezy\meta_z_difonow.wav'

);

%zapis 

poloczonego dzwieku

 

difon_czas=(0:length(difon_meta)-1)/(f_m);

%obliczenie czasu trwania 

dzwieku

 

figure(3)

 

plot(difon_czas,difon_meta);

%rysowanie wykresu

 

title(

'Wykres przebiegu dzwieku "meta" uzyskanego z syntezy difonow'

);

 

background image

ylabel(

'a - amplituda'

);

 

xlabel(

't - czas'

);

 

grid 

on

;

 

 

Rys.3. Listing programu odpowiedzialnego za syntezę difonów i 

wyświetlenie wykresu. 

 

 

Rys.4

. Wykres sygnału „meta” uzyskanego z konkatencji difonów. 

 
 
 

%trifony

 

[trifon__me,f_me]=wavread(

'nagrania\megafon\trifon_magafon\_me.wav'

);

 

[trifon_met,fmet]=wavread(

'nagrania\meteor\trifon_meteor\met.wav'

);

 

[trifon_eta,feta]=wavread(

'nagrania\beta\trifon_beta\eta.wav'

);

 

[trifon_ta_,fta_]=wavread(

'nagrania\kapusta\trifon_kapusta\ta_.wav'

);

 

%obliczenie dlugosci dzwiekow

 

dl_t1=length(trifon__me);

 

dl_t2=length(trifon_met);

 

dl_t3=length(trifon_eta);

 

dl_t4=length(trifon_ta_);

 

%dopasowanie dlugosci trifonow

 

trifon_1=trifon__me(1000:dl_t1-2800);

 

trifon_2=trifon_met(1500:dl_t2-4500);

 

trifon_3=trifon_eta(6200:dl_t3-2000);

 

trifon_4=trifon_ta_(2500:dl_t4-2500);

 

%konkatenacja trifonow

 

trifon_meta=[trifon_1', trifon_2',trifon_3',trifon_4'];

 

wavplay(trifon_meta,f_me);

%odtworzenie polaczonego dzwieku

 

wavwrite(trifon_meta,

'wyniki_syntezy\meta_z_trifonow.wav'

);

%zapis 

background image

poloczonego dzwieku

 

trifon_czas=(0:length(trifon_meta)-1)/(f_me);

%obliczenie czasu trwania 

dzwieku

 

figure(5)

 

plot(trifon_czas,trifon_meta);

%rysowanie wykresu

 

title(

'Wykres przebiegu dzwieku "meta" uzyskanego z syntezy trifonow'

);

 

ylabel(

'a - amplituda'

);

 

xlabel(

't - czas'

);

 

grid 

on

;

 

Rys.5. Listing programu odpowiedzialnego za syntezę trifonów i 

wyświetlenie wykresu. 

 
 
 

 

Rys.6

. Wykres sygnału „meta” uzyskanego z konkatencji trifonów. 

 
 
 
 
 
 
 
 
 
 

 

background image

Zad.3 
 

%wygladzeniem miejsc polaczem fonow

 

fon_meta_h1=fon_meta(1350:1600).*(1-hann(251)');

 

fon_meta_h2=fon_meta(3350:3550).*(1-hann(201)');

 

fon_meta_h3=fon_meta(3750:4000).*(1-hann(251)');

 

fon_meta_h=fon_meta;

 

%Wygladzenie sygnalu

 

fon_meta_h(1350:1600)=fon_meta_h1;

 

fon_meta_h(3350:3550)=fon_meta_h2;

 

fon_meta_h(3750:4000)=fon_meta_h3;

 

%wavplay(fon_meta_h,fm*0.95); %odtworzenie polaczonego dzwieku

 

wavwrite(fon_meta_h,

'wyniki_syntezy\meta_z_fonow_po_wygladzeniu.wav'

);

%zapi

s poloczonego dzwieku

 

figure(2)

 

plot(fon_czas,fon_meta_h);

%rysowanie wykresu

 

title(

'Wykres przebiegu dzwieku "meta" uzyskanego z syntezy fonow z 

wygladzeniem miejsc polaczem'

);

 

ylabel(

'a - amplituda'

);

 

xlabel(

't - czas'

);

 

grid 

on

;

 

Rys.7. Listing programu odpowiedzialnego za wygładzenie miejsca 

łączenia fonów, zapisu nowopowstałego pliku i wyświetlenie wykresu. 

 

 

Rys.8. Wykres 

sygnału „meta” uzyskanego z konkatencji fonów po 

wygładzeniu nieciągłości konkatencji. 

 
 
 

background image

10 

%wygladzeniem miejsc polaczem difonow

 

difon_meta_h1=difon_meta(2400:2600).*(1-hann(201)');

 

difon_meta_h2=difon_meta(5500:5700).*(1-hann(201)');

 

difon_meta_h3=difon_meta(5900:6100).*(1-hann(201)');

 

difon_meta_h4=difon_meta(9700:9900).*(1-hann(201)');

 

difon_meta_h=difon_meta;

 

%Wygladzenie sygnalu

 

difon_meta_h(2400:2600)=difon_meta_h1;

 

difon_meta_h(5500:5700)=difon_meta_h2;

 

difon_meta_h(5900:6100)=difon_meta_h3;

 

difon_meta_h(9700:9900)=difon_meta_h4;

 

%wavplay(difon_meta_h,fm*0.95); %odtworzenie polaczonego dzwieku

 

wavwrite(difon_meta_h,

'wyniki_syntezy\meta_z_difonow_po_wygladzeniu.wav'

);

%

zapis poloczonego dzwieku

 

figure(4)

 

plot(difon_czas,difon_meta_h);

%rysowanie wykresu

 

title(

'Wykres przebiegu dzwieku "meta" uzyskanego z syntezy difonow z 

wygladzeniem miejsc polaczem'

);

 

ylabel(

'a - amplituda'

);

 

xlabel(

't - czas'

);

 

grid 

on

;

 

 

Rys.9. Listing programu odpowiedzialnego za wygładzenie miejsca 

łączenia difonów, zapisu nowopowstałego pliku i wyświetlenie wykresu. 

 
 

 

Rys.10. Wykres sygnału „meta” uzyskanego z konkatencji difonów po 

wygładzeniu nieciągłości konkatencji. 

 
 

background image

11 

%wygladzeniem miejsc polaczem fonow

 

trifon_meta_h1=trifon_meta(2150:2300).*(1-hann(151)');

 

trifon_meta_h2=trifon_meta(3700:3850).*(1-hann(151)');

 

trifon_meta_h3=trifon_meta(7350:7550).*(1-hann(201)');

 

trifon_meta_h=trifon_meta;

 

%Wygladzenie sygnalu

 

trifon_meta_h(2150:2300)=trifon_meta_h1;

 

trifon_meta_h(3700:3850)=trifon_meta_h2;

 

trifon_meta_h(7350:7550)=trifon_meta_h3;

 

wavplay(trifon_meta_h,fm*0.95); 

%odtworzenie polaczonego dzwieku

 

wavwrite(trifon_meta_h,

'wyniki_syntezy\meta_z_trifonow_po_wygladzeniu.wav'

)

;

%zapis poloczonego dzwieku

 

figure(6)

 

plot(trifon_czas,trifon_meta_h);

%rysowanie wykresu

 

title(

'Wykres przebiegu dzwieku "meta" uzyskanego z syntezy trifonow z 

wygladzeniem miejsc polaczem'

);

 

ylabel(

'a - amplituda'

);

 

xlabel(

't - czas'

);

 

grid 

on

;

 

Rys.11. Listing programu odpowiedzialnego za wygładzenie miejsca 

łączenia trifonów, zapisu nowopowstałego pliku i wyświetlenie wykresu. 

 
 
 

 

Rys.12

. Wykres sygnału „meta” uzyskanego z konkatencji trifonów po 

wygładzeniu nieciągłości konkatencji. 

 
 

background image

12 

 

Rys.13. Fragment wykresu sygnału przedstawiający nieciągłość 

konkatencji podczas syntezy fonu m i e w wyrazie meta. 

 

Rys.14. Fragment sygnału przedstawiający wyrównanie nieciągłości 

konkatencji podczas syntezy fonu m i e za pomocą okna hanninga. 

background image

13 

WNIOSKI do zad 2,3,4 
 
 

Podczas wykonywania zadania udało się dokonać konkatencji 

fonów, difonów i trifonów, w wyniku czego uzyskano 3 wyrazy po 
wykonaniu zadania 2 i 3 wyrazy z zadania 3. Wszystkie nagrania 
znajdują się w folderze „wyniki_syntezy”. 
 

Po odsłuchaniu nagrań, można zauważyć różnice w plikach 

dźwiękowych. Z oceny subiektywnej wynika, że najczystsze nagranie to 
plik uzyskany z syntezy trifonów, a najsłabsze to plik uzyskany z syntezy 
fonów. Dzieje się tak ponieważ przy łączeniu trifonów doszło do 
pokrywania się końcowej części jednego trifona z początkową częścią 
drugiego trifona. Zjawisko to nie zas

zło przy konkatencji fonów, 

ponieważ poszczególne fony nie miały żadnej części podobnej do siebie. 
 

Przy porównaniu nagrań po przetworzeniu przez okno Hanninga 

miejsc konkatencji do wyrazów przed tym przekształcenie można 
zauważyć delikatne poprawienie jakości dźwięku. Proces porównania 
nieciągłości konkatencji przed i po przekształceni Hanninga widać na 
rys.13 i 14. 
 

Z p

orównania obiektywnego dźwięków uzyskanych z syntezy 

fonów, difonów i trifonów z dźwiękiem rzeczywistym wynika, że uzyskane 
nagrania 

zsyntetyzowane odbiegają jakością od prawdziwego. Jest to 

spowodowane zapewne, nie za wysoką jakością sprzętu do nagrywania 
dźwięków oraz braku profesjonalnego studia. Podsumowując, uzyskane 
dźwięki zrozumieć i zinterpretować.