Rozpoznawanie fonemów języka polskiego z użyciem sieci neuronowej jako część zadania dotyczącego rozpoznawania wyrazów.
Autorzy: Edyta Gawlińska, Mateusz Szulc
Raport z projektu kursu: Metody i algorytmy sztucznej inteligencji
Prowadzący: dr inż. Witold Paluszyński
Data: 18 czerwca 2009

Streszczenie

Celem pracy było zbadanie możliwości zanotowania sztucznych sieci neuronowych w rozpoznawaniu fonemów. Z powodu napotkanych trudności ograniczono się tylko do samogłosek. W pracy rozważono kilka możliwości identyfikacji mowy. Od opisu sygnału w dziedzinie czasu, poprzez jego transformację Fouriera, a skończywszy na reprezentacji za pomocą obrazu. Następnie podjęto próbę nauczenia sieci reprezentacji częstotliwościowej sygnału. Wyniki eksperymentu można uznać za zadowalające.

Polish language phonemes recognition with neural network, as a part of speech recognition problem.
Authors: Edyta Gawlińska, Mateusz Szulc
This report describes a project done to fulfill the requirements for the course: Methods and algorithms of artificial intelligence.
Conducted by: dr Witold Paluszyński
Date: June 18, 2009

Abstract

This research presents the possibility of usage the several kinds of neural networks for language phonemes recognition. Because of difficulty of this problem we confined ourselves to the vowels. We considered several methods of speech identification. Begining from the description of a signal in time domain, passing the Fourier's transform, up to two-dimension image's representation. We made an attempt to teach the network of frequency-domain signal representation. The resuls of this research are satisfactory.

Spis Treści

  1. Cel projektu
  2. Opis zastosowanych metod i algorytmów oraz przyjęte uproszczenia
  3. Zastosowane narzędzia programistyczne
  4. Wprowadzenie do zasad fonetyki polskiej
  5. Opis danych wykorzystanych w projekcie
  6. Budowa wykorzystanej sieci neuronowej
  7. Przykłady i wyniki działania
  8. Podsumowanie
  9. Literatura

1. Cel projektu

W ramach projektu wykonano serię prób mających na celu nauczenie sieci neuronowej fonemów języka polskiego. Dane do projektu zbierano na kilka sposobów: jako wyrazy składające się z kilku fonemów, jako zgłoski składające się z co najwyżej dwóch fonemów i jako pojedyncze fonemy. Pierwotnym założeniem było nauczenie sieci rozpoznawania pojedynczych fonemów na podstawie całych wyrazów. Następnie ze względu na brak zadowalających efektów postanowiliśmy osłabić założenia. Niemniej na postawie wyników projektu, można wysnuć wiele pouczających wniosków, również jeśli chodzi o perspektywy wykorzystania sieci.

2. Opis zastosowanych metod i algorytmów

W projekcie wykorzystano sieć neuronową uczoną z wykorzystaniem danych eksperckich. Do akwizycji i przetwarzania danych wykorzystano standardową funkcję nagrywającą dane audio audiorecording oraz transformację Fouriera fft do generowania spektrum sygnału dźwiękowego.

3. Zastosowane narzędzia programistyczne

W pracy wykorzystano pakiet " Neural Network" i " programu Matlab w wersji R2008a.

4. Wprowadzenie do zasad fonetyki polskiej

Podstawowym pojęciem fonetyki jest fonem. Za Wikipedią : " Fonem to najmniejsza jednostka mowy rozróżnialna dla użytkowników danego języka. Fonem może mieć kilka reprezentacji dźwiękowych (alofonów) występujących w różnych kontekstach lub też zamiennie. Nie ma własnego znaczenia i służy do odróżniania elementów znaczeniowych (morfemów). Każdy fonem jest zespołem cech dystynktywnych pozwalających na odróżnienie go od pozostałych fonemów. Jest abstrakcyjną jednostką systemu fonologicznego, reprezentowaną w wypowiedzeniach przez głoskę." Język polski posiada kilkadziesiąt fonemów. W zależności od potrzeby (cele naukowe, dydaktyczne, morfologiczne itp.) dokonuje się pewnego uproszczenia systematyki. Dla potrzeb projektu przyjęto zbiór zawierający 7 samogłosek, .... półsamogłosek i .... samogłosek. Szczególnie zainteresowanym poleca się stronę Pana Grzegorza Jagodzińskiego [2] poświęconą między innymi fonetyce polskiej, skąd zaczerpnięto przykłady wyrazów z transkrypcją fonetyczną. Materiały te posłużyły za wzór do stworzenia serii uczącej wykorzystanej w projekcie.

5. Opis danych wykorzystanych w projekcie

Dane wejściowe były próbkami samogłosek zgranych od jednej osoby oraz od kilku osób. Następnie próbki te poddano obróbce. Warto podkreślić, że nie usuwano szumu. Z próbki dźwięku wykonano jej transformatę, wzięto jej moduł, a następnie korzystając z ciągłości ludzkiej mowy, z każdej transformaty wybrano co dziesiątą składową częstotliwości. Następnie dokonano normalizacji próbek, tak aby ich wartości znajdowały się pomiędzy 0 a 1. Na rysunkach znajdują się przebiegi czasowe dla poszczególnych samogłosek.



Analiza wizualna przebiegów czasowych nagrań poszczególnych samogłosek wykazała, że nie różnią się one od siebie zbyt wiele. Szansa na błędną interpretację usłyszanej samogłoski jest dla człowieka znikoma. Samogłoski, w przeciwieństwie do spółgłosek i półsamogłosek, wydają się być istotnie różne. Mimo to ich przebieg czasowy nie różni się zbyt wiele.
Na rysunkach znajdują się ich unormowane widma amplitudowe dla poszczególnych samogłosek.



Analizując widmo amplitudowe, można stwierdzić, że każda samogłoska posiada inną częstotliwość dominującą. Różnice są jednak niewielkie. W projekcie wykorzystano spróbkowane widmo amplitudowe. Taką metodę akwizycji danych można uzasadnić tym, że człowiek mówi w sposób ciągły, w tym sensie, że wytwarza wszystkie składowe częstotliwościowe w otoczeniu składowej dominującej. Istnieje przypuszczenie, że gdyby w modelu przyjąć większą ilość próbek, efekty uczenia sieci byłyby dużo lepsze, z tego względu, że transformata Fouriera jest przekształceniem wzajemnie jednoznacznym.

6. Budowa wykorzystanej sieci neuronowej

W projekcie wykorzystano sieć neuronową o jednej, a potem dwóch warstwach ukrytych w każdej po 12 neuronów. Ponadto zastosowano funkcję liniową (purelin) i nieliniową (tansig). W projekcie wykorzystano metodę uczenia sieci z nauczycielem.

7. Przykłady i wyniki działania

7.1. Próbki od jednej osoby

1 warstwa ukryta (12 neuronów), 301 wejść, 6 wyjść. Funkcja liniowa w warstwie ukrytej i wyjściowej.

Sprawność sieci wyniosła 77%. Sieć nie wykryła ani razu samogłoski u, która zawsze była mylona z samogłoską y. Samogłoska a była zawsze mylona z samogłoską o.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a106
e1010
i1010
o1010
u100
y1010

1 warstwa ukryta (12 neuronów), 301 wejść, 6 wyjść. Funkcja tansig (nieliniowa) w warstwie ukrytej i liniowa w wyjściowej.

Sprawność sieci wyniosła 77%, tym razem sieć wykryła poprawnie samogłoskę u w siedmiu przypadkach.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a104
e106
i1010
o1010
u107
y109

2 warstwy ukryte (po 12 neuronów), 301 wejść, 6 wyjść. Funkcja liniowa w obu warstwach ukrytych i liniowa w warstwie wyjściowej.

Sprawność sieci wyniosła 77%.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a104
e1010
i1010
o108
u104
y1010

2 warstwy ukryte (po 12 neuronów), 301 wejść, 6 wyjść. Funkcja tansig w obu warstwach ukrytych i liniowa w warstwie wyjściowej.

Sprawność sieci wyniosła 65%.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a105
e104
i108
o107
u105
y1010

7.2. Próbki od wielu osób

1 warstwa ukryta (12 neuronów), 301 wejść, 6 wyjść. Funkcja liniowa w warstwie ukrytej i wyjściowej.

Sprawność sieci wyniosła 77%. Sieć nie wykryła ani razu samogłoski u, która zawsze była mylona z samogłoską y. Samogłoska a była zawsze mylona z samogłoską o.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a256
e2510
i2510
o2510
u250
y2510

1 warstwa ukryta (12 neuronów), 301 wejść, 6 wyjść. Funkcja tansig (nieliniowa) w warstwie ukrytej i liniowa w wyjściowej.

Sprawność sieci wyniosła 77%.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a254
e256
i2510
o2510
u257
y259

2 warstwy ukryte (po 12 neuronów), 301 wejść, 6 wyjść. Funkcja liniowa w obu warstwach ukrytych i liniowa w warstwie wyjściowej.

Sprawność sieci wyniosła 67%.
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a2512
e2519
i2523
o2514
u2514
y2518

2 warstwy ukryte (po 12 neuronów), 301 wejść, 6 wyjść. Funkcja tansig w obu warstwach ukrytych i liniowa w warstwie wyjściowej.

Sprawność sieci wyniosła 71%
FonemIlość wystąpieńIlość poprawnie rozpoznanych
a2514
e2515
i2521
o2518
u2519
y2520
Przykładowe wartości wyjść dla poszczególnych samogłosek.
Samogłoska "a":
a
e
i
o
u
y
0.7534
0.0250
-0.0586
0.2653
-0.0112
0.0283
0.2964
0.6122
0.0305
0.0343
0.0225
0.0033
1.3526
-0.6374
0.1741
0.0043
0.1029
0.0022
0.3499
0.0329
0.0214
-0.0004
0.0394
0.5572
0.4917
-0.0504
0.5015
0.0136
0.0431
0.0001
0.6315
0.0965
0.1553
0.0080
0.0973
0.0131
0.8275
0.0736
0.0555
0.0064
0.0262
0.0103
-0.3129
0.9760
-0.0848
0.4554
-0.0529
0.0216
-0.0594
1.0330
-0.0291
0.0165
0.0178
0.0236
0.8869
0.0568
-0.0320
0.0386
0.0243
0.0265
-0.2609
-0.0703
0.2398
1.0102
0.0674
0.0166
0.2656
0.6223
0.0771
0.0186
0.0149
0.0007
0.4229
0.0492
0.2055
0.1067
0.2146
0.0007
a
e
i
o
u
y
0.8483
-0.1053
0.0792
-0.0282
0.0167
0.2137
0.3704
-0.0402
-0.1168
0.8871
-0.1076
0.0065
0.7555
0.0771
0.1306
0.0115
0.0187
0.0058
0.5532
-0.0613
-0.3784
0.0007
0.8539
0.0347
0.5664
0.0660
0.3354
0.0162
0.0088
0.0072
0.6111
0.3373
0.0030
0.0126
0.0238
0.0122
0.7248
0.1563
0.0357
0.0385
0.0333
0.0113
1.0202
-0.0371
0.0119
-0.0036
-0.0000
0.0079
0.3761
-0.0155
0.0514
0.0024
-0.0355
0.6219
1.0261
-0.0381
-0.0021
-0.0037
0.0089
0.0082
0.4601
-0.0862
-0.2312
-0.0098
-0.0445
0.9155
0.8857
0.0952
-0.0102
-0.0075
0.0060
0.0333
-
-
-
-
-
-

Samogłoska "e":
a
e
i
o
u
y
0.7534
0.0250
-0.0586
0.2653
-0.0112
0.0283
0.5021
0.1659
0.1361
0.1379
0.0716
-0.0140
-0.5705
0.9334
-0.1102
0.8759
-0.1125
-0.0154
0.0283
0.9007
-0.0118
0.0685
0.0086
0.0057
0.0617
-0.0077
-0.0654
-0.0009
0.0154
0.9970
-0.0132
1.0096
-0.0152
0.0005
-0.0064
0.0259
0.2832
-0.0441
-0.1475
0.9870
-0.1261
0.0522
-0.4613
0.8077
-0.0938
0.8331
-0.0979
0.0145
-0.1145
1.0618
0.0210
0.0137
0.0175
0.0004
-0.5883
0.9976
-0.1164
0.8573
-0.1134
-0.0361
-0.1194
1.0135
-0.0543
0.0021
-0.0155
0.1741
-0.0030
0.0087
0.3381
0.0206
-0.0588
0.6947
0.7281
0.2372
-0.0272
0.0014
0.0269
0.0362
0.2215
0.6675
0.0782
0.0120
0.0156
0.0052
a
e
i
o
u
y
0.7534
0.0250
-0.0586
0.2653
-0.0112
0.0283
0.8514
0.0813
0.0212
0.0055
0.0269
0.0135
0.1401
0.0596
0.7891
0.0192
-0.0037
-0.0044
0.8123
0.1310
0.0118
0.0057
0.0270
0.0118
-0.5587
1.0273
-0.1808
0.0049
-0.0463
0.7543
-0.1767
1.0066
0.1434
0.0135
0.0141
-0.0008
0.1502
0.0648
0.7397
0.0177
0.0313
-0.0037
0.0570
0.6537
0.2253
0.0200
0.0442
-0.0004
0.0897
0.0387
0.0686
0.2462
0.6899
0.0043
0.0929
0.8645
-0.0008
0.0205
0.0167
0.0063
0.0796
0.6939
0.1526
0.0423
0.0295
0.0017
0.2035
0.6954
0.0702
0.0122
0.0150
0.0031
0.0874
0.8791
-0.0022
0.0106
0.0174
0.0072
-
-
-
-
-
-

Samogłoska "i"
a
e
i
o
u
y
-0.0227
-0.0036
1.4539
0.0093
-0.4414
0.0047
-0.0036
-0.0052
0.9730
-0.0072
0.0313
0.0116
0.0190
-0.0294
0.9450
-0.0118
0.0691
0.0081
-0.0353
-0.0339
1.1125
-0.0068
-0.1127
0.0763
0.0068
-0.0135
1.1997
-0.0000
-0.1983
0.0054
-0.0024
-0.0175
0.9115
-0.0067
0.1054
0.0097
-0.0155
-0.0146
1.2666
0.0015
-0.2433
0.0055
-0.0173
-0.0123
1.2731
0.0022
-0.2503
0.0047
-0.0211
-0.0191
1.2759
-0.0001
-0.2410
0.0056
-0.0031
-0.0338
0.9968
-0.0112
0.0433
0.0081
0.2468
0.3483
0.3476
0.0131
0.0430
0.0009
0.1610
0.0586
0.7040
0.0197
0.0606
-0.0039
0.2517
0.0596
0.6341
0.0190
0.0310
0.0043
a
e
i
o
u
y
0.0194
0.0417
0.9122
0.0157
0.0154
-0.0043
0.0005
0.0475
0.7864
0.0155
0.1559
-0.0055
-0.0311
0.0233
1.1541
0.0136
-0.1582
-0.0016
0.3005
0.0486
0.5242
0.0149
-0.0224
0.1341
-0.0397
0.0481
0.8852
0.0179
0.0954
-0.0066
0.0746
0.0402
0.8127
0.0126
0.0630
-0.0030
0.1034
0.0527
0.8220
0.0176
0.0005
0.0037
-0.0137
0.0008
1.3449
0.0087
-0.3441
0.0036
-0.0419
0.0458
1.1231
0.0218
-0.1437
-0.0047
-0.0487
0.0262
1.1279
0.0145
-0.1175
-0.0019
-0.0322
0.0052
1.3792
0.0114
-0.3657
0.0025
-0.0409
0.0103
1.4915
0.0154
-0.4770
0.0010
-
-
-
-
-
-

Samogłoska "o"
a
e
i
o
u
y
-0.3766
-0.6053
-0.2810
1.8007
0.4639
0.0000
-0.1395
-0.8075
-0.2198
2.0093
0.1671
-0.0088
0.0677
-0.0923
0.0306
1.0259
-0.0604
0.0349
-0.4800
-0.2422
0.1132
2.0438
-0.4237
-0.0101
-0.5045
-0.3671
-0.3828
2.0170
0.2430
-0.0050
-0.7154
-0.5943
-0.3106
2.0163
0.6086
-0.0035
-0.7658
-0.1667
-0.7615
1.8837
0.8158
-0.0047
-1.1869
-0.1602
-0.2733
1.7303
0.9053
-0.0139
0.0027
-0.0144
0.0397
1.0421
-0.0679
-0.0020
-0.8004
-0.2192
-0.4126
1.9941
0.4465
-0.0075
0.3436
0.0625
0.5982
0.0154
-0.0241
0.0041
0.1690
0.0464
0.4981
0.1045
0.1843
-0.0024
-0.3201
0.3421
-0.0928
1.0223
0.0074
0.0413
a
e
i
o
u
y
0.2056
0.0136
0.0699
0.8110
-0.1056
0.0050
0.3247
0.4541
0.1238
0.0346
0.0607
0.0013
0.1487
0.0297
0.0822
0.0055
0.7335
0.0003
0.1464
-0.0170
0.2254
0.3442
0.3131
-0.0123
0.3169
0.0631
0.4562
0.0166
0.1468
0.0002
0.0843
0.0889
-0.1214
0.9774
-0.0323
0.0032
0.1232
0.0087
0.0487
1.0241
0.0184
-0.2230
0.2022
0.0789
-0.1173
0.9687
-0.0566
-0.0760
0.0688
0.1467
-0.0594
0.9141
-0.0617
-0.0086
-0.0546
0.5865
0.0036
0.4640
0.0132
-0.0131
-0.1771
0.6043
-0.0813
0.7092
-0.0407
-0.0143
0.1858
0.6332
0.0868
0.0817
0.0115
0.0005
-
-
-
-
-
-

Samogłoska "u"
a
e
i
o
u
y
0.0052
0.0136
0.0495
-0.0128
0.9447
-0.0004
0.1600
-0.1466
0.0627
-0.0099
0.9362
-0.0026
0.5512
-0.7133
0.1583
-0.0145
1.0097
0.0083
-0.4668
-0.1095
0.3514
-0.0146
0.2128
1.0275
0.0279
0.0210
0.0486
-0.0093
0.9133
-0.0016
0.0309
0.0232
0.1119
-0.0074
0.8401
0.0013
0.0478
0.0109
-0.0928
0.0046
1.0295
0.0001
0.4078
-0.7221
0.0853
0.0455
0.8319
0.3515
0.3733
-0.7988
-0.1015
-0.0217
0.9393
0.6094
0.0329
0.0171
0.0085
-0.0075
0.9494
-0.0006
0.3571
-0.3194
0.0245
-0.0121
0.9547
-0.0048
0.7180
-0.3322
0.2232
0.0091
0.2258
0.1553
0.1690
0.0398
0.4280
0.0073
0.3108
0.0451
a
e
i
o
u
y
0.3962
-0.9561
0.0746
0.4172
1.0743
-0.0058
0.3574
0.0037
0.1025
0.0049
0.0419
0.4892
-0.0108
0.0245
0.3014
-0.0027
0.6910
-0.0033
0.1792
-0.1091
-0.3434
0.3796
0.8949
-0.0013
-0.1854
0.4167
0.3312
0.0243
0.4162
-0.0024
0.0879
0.0327
0.3275
0.0077
0.4521
0.0920
-0.3904
0.2479
0.2066
0.0064
-0.0835
1.0135
0.1211
0.0284
0.2222
0.0319
0.5958
0.0007
0.0515
0.0193
0.0833
0.0011
0.8409
0.0039
0.1389
0.0284
0.3390
-0.0024
0.4925
0.0036
0.0484
0.0170
0.0514
-0.0056
0.8887
0.0001
0.0406
0.5418
0.3028
0.0137
0.1003
0.0010
-
-
-
-
-
-

Samogłoska "y"
a
e
i
o
u
y
-0.1495
-0.0120
-0.3178
-0.0081
0.4739
1.0137
-0.0309
0.0785
0.3275
0.0112
-0.3864
1.0002
-0.1342
0.1919
0.7818
0.0266
-0.8580
0.9922
-0.2766
0.0332
0.1829
0.0011
0.0562
1.0038
-0.0325
-0.0103
0.3055
0.0089
-0.2778
1.0064
-0.0519
-0.0136
0.2584
0.0077
-0.2109
1.0102
-0.0073
-0.0808
0.0254
0.0000
0.0459
1.0167
-0.2145
-0.0333
0.1985
-0.0009
0.0286
1.0219
-0.4180
0.1422
0.7004
0.0036
-0.4472
1.0194
-0.0044
0.0367
0.1440
0.0055
-0.1901
1.0084
-0.0954
0.4072
-0.2465
-0.0026
-0.0495
0.9867
0.4593
-0.6567
0.1087
-0.0018
1.0974
-0.0067
-0.0618
-0.4086
-0.3042
0.0194
0.8137
0.9418
a
e
i
o
u
y
0.2646
-0.0890
0.4004
-0.0020
-0.6027
1.0284
0.6797
0.2548
0.0636
-0.0005
-0.0012
0.0029
0.2101
-0.1745
0.0525
-0.0117
0.9250
-0.0015
0.3694
-0.0742
0.3885
-0.0011
-0.5154
0.8324
0.3381
-0.0297
0.4258
0.0116
0.2549
-0.0005
0.2234
-0.0621
0.0252
0.0010
0.0175
0.7950
-0.2642
-0.0833
0.2938
-0.0016
0.1741
0.8820
-0.3296
-0.1158
-0.0461
0.4928
-0.0026
1.0020
-0.0043
0.0356
0.5127
0.0058
0.4531
-0.0026
-0.3124
-0.0961
0.0476
-0.0082
0.3817
0.9880
-0.1323
-0.0828
-0.0319
-0.0026
0.2369
1.0130
0.1441
-0.0611
-0.0502
0.0000
-0.0639
1.0310
-
-
-
-
-
-

8. Podsumowanie

Rozpoznawanie mowy jest wyjątkowo trudnym zagadnieniem ze względu na znaczną ilość danych niezbędnych do poprawnego zidentyfikowania sygnału. W dziedzinie czasowej 0.3 sekundy mowy, opisywane jest jednoznacznie przynajmniej przez 11000 próbek zakładając, że człowiek mówi z częstotliwością do 5.5 kHz. Mając to na uwadze, sieć neuronowa rozpoznająca taki sygnał powinna mieć 11000 wejść. Jest to niemożliwe ze względu na nakład obliczeniowy i pamięciowy procesu uczenia sieci. Aby zmniejszyć ilość danych opisujących, zastosowano transformację Fouriera. Widmo amplitudowe zawiera około 5000 istotnych częstotliwości. W procesie rozpoznawania mowy sensowne byłoby zastosowanie spektrum z dodatkową zmienną czasową. Jest to jedyna dopuszczalna i najskuteczniejsza metoda wstępnej obróbki dźwięku na potrzeby rozpoznawania mowy. Mając na uwadze wygląd takiego widma, analiza i rozpoznawanie mowy może być zastąpiona analizą i rozpoznawaniem obrazów. Niemniej jednak proces uczenia sieci na podstawie takich danych wymaga istotnych nakładów sprzętowych. Wyniki zawarte w naszej pracy są zadowalające, zwłaszcza, że użyto dość niewielkiej ilości danych opisujących sygnał. Ponadto warunki w jakich zostały zbierane dane uniemożliwiały wyeliminowanie błędów (dobrym przykładem mogą być zakłócenia będące śpiewem ptaków za oknem lub zamykanie drzwi przez sąsiadów). Pasmo istotnych składowych częstotliwościowych widma dla danej samogłoski różniło się dla poszczególnych osób. Sieci rozpoznawały częściej fonemy dla wielu osób, niż dla jednej.

9.Literatura

Valid XHTML 1.0 Transitional