1
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
2
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
z
sygnałem rzeczywistym, zarejestrowanym przez wykonawcę
ćwiczenia
(w dziedzinie
czasu i częstotliwości).
3
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.
4
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
5
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.
6
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'
);
7
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
8
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.
9
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.
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.
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.
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.
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ć.