Język (nie do końca) rozpoznawalny

praca magisterskaW ponie­dzia­łek, 15 wrze­śnia 2008 roku, zakoń­czy­łem ofi­cjal­nie pisa­nie pra­cy magi­ster­skiej i zło­ży­łem ją w dzie­ka­na­cie. Jako, że nie wszy­scy wie­dzą o czym pisa­łem, posta­ram się przed­sta­wić krót­ko całą histo­rię.

Gdy pół­to­ra roku temu zaczą­łem się zasta­na­wiać na poważ­nie nad tema­tem pra­cy, mia­łem kil­ka spre­cy­zo­wa­nych punk­tów, według któ­rych chcia­łem sobie dobrać temat. Moją spe­cjal­no­ścią jest inży­nie­ria opro­gra­mo­wa­nia, ale w tej dzie­dzi­nie dowol­ny temat pra­cy wyda­wał mi się mało inte­re­su­ją­cy. Posta­no­wi­łem pra­cę pisać w innym insty­tu­cie, a mia­no­wi­cie w Insty­tu­cie Sztucz­nej Inte­li­gen­cji i Metod Mate­ma­tycz­nych. Mia­łem nawet kon­kret­nie wybra­ne­go pro­mo­to­ra, u któ­re­go chcia­łem pisać. Pod­sze­dłem do wybo­ru tema­tu dość ambit­nie. Wybór cze­goś łatwe­go i odtwór­cze­go mnie zupeł­nie nie prze­ko­ny­wał. W koń­cu ma to być moja pierw­sza publi­ka­cja nauko­wa z praw­dzi­we­go zda­rze­nia. Dla­cze­go więc nie połą­czyć kil­ku dzie­dzin, któ­re mnie inte­re­su­ją? Z racji wybra­nej spe­cjal­no­ści, głów­nym zada­niem w pra­cy mia­ło być stwo­rze­nie pro­gra­mu. Chcia­łem napi­sać pro­gram, dzię­ki któ­re­mu prze­pro­wa­dził­bym bada­nia, któ­rych wyni­ki mogą się real­nie przy­dać, a jed­no­cze­śnie sam pro­gram mógł być roz­wo­jo­wy. Wyko­rzy­sty­wał­by sie­ci neu­ro­no­we do kla­sy­fi­ka­cji cze­goś zwią­za­ne­go z dźwię­kiem. Na począt­ku myśla­łem o roz­po­zna­wa­niu sty­lu muzycz­ne­go bada­ne­go utwo­ru. Jed­nak kla­sy­fi­ka­cja gatun­ków muzycz­nych jest na tyle trud­na dla czło­wie­ka, że kom­pu­ter tym bar­dziej nie będzie w sta­nie sobie z tym pora­dzić. Popro­si­łem więc pro­mo­to­ra o pomoc w wymy­śle­niu tema­tu w sam raz dla mnie. I pro­mo­tor wymy­ślił:

„Zasto­so­wa­nie sztucz­nych sie­ci neu­ro­no­wych do roz­po­zna­wa­nia języ­ka mówią­cej oso­by”

Temat spodo­bał mi się od same­go począt­ku. Wow! Zaj­mę się roz­po­zna­wa­niem języ­ków :-). Oprócz dzie­dzin zwią­za­nych z dźwię­kiem, sztucz­ną inte­li­gen­cją i pro­gra­mo­wa­niem, mogę się zająć też bar­dzo inte­re­su­ją­cą mnie dzie­dzi­ną — języ­ko­znaw­stwem. Cho­ciaż w ogra­ni­czo­nym stop­niu. Do tema­tu nie mia­łem żad­nych zastrze­żeń, więc taki wła­śnie został ofi­cjal­nie przy­ję­ty.

Jako raso­wy pro­kra­sty­na­tor, na poważ­nie zają­łem się pra­cą dopie­ro w ostat­nim seme­strze ;-). Wcze­śniej bar­dzo powo­li gro­ma­dzi­łem lite­ra­tu­rę, na któ­rej mógł­bym się oprzeć. Jed­nak lite­ra­tu­ry takiej nie ma. Musia­łem się oprzeć na kil­ku anglo­ję­zycz­nych arty­ku­łach nauko­wych, trak­tu­ją­cych kon­kret­nie o tema­cie roz­po­zna­wa­nia języ­ka. Resz­ta lite­ra­tu­ry to publi­ka­cje o ana­li­zie i syn­te­zie dźwię­ku czy ogól­ne o samych sie­ciach neu­ro­no­wych. W dodat­ku publi­ka­cji o iden­ty­fi­ka­cji języ­ka, w języ­ku pol­skim, nie zna­la­złem żad­nych. Dobrze, że oprócz pro­mo­to­ra zna­ją­ce­go się na sie­ciach neu­ro­no­wych, mia­łem też do kogo się zwró­cić w tema­cie samej ana­li­zy dźwię­ku. Pani Ania dużo mi pomo­gła — dzię­ki niej opra­co­wa­łem naj­waż­niej­szą część pra­cy, czy­li meto­dę eks­trak­cji cech gło­su, któ­ry­mi potem mia­łem uczyć sieć neu­ro­no­wą.

Sama meto­da powsta­ła i zosta­ła prze­te­sto­wa­na w Matla­bie jesz­cze przed waka­cja­mi. Zdą­ży­łem jesz­cze tyl­ko napi­sać roz­dzia­ły teo­re­tycz­ne i prze­su­nąć ter­min odda­nia pra­cy na wrze­sień. Waka­cje upły­nę­ły mi na pisa­niu całe­go pro­gra­mu w C++ (jakieś 20% cza­su) i jego testo­wa­niu (80% cza­su, bo prze­cież nic nie może dobrze dzia­łać za pierw­szym razem ;-)). Gdy po bólach pro­gram już powstał, prze­pro­wa­dzi­łem za jego pomo­cą bada­nia. Wresz­cie mogłem spraw­dzić jak się spra­wu­je moje dziec­ko :-).

Bada­nia były prze­pro­wa­dzo­ne na prób­kach zdań w 6 języ­kach: pol­skim, angiel­skim, nie­miec­kim, wło­skim, hisz­pań­skim i rosyj­skim. Przy­go­to­wa­łem po 21 zdań w każ­dym z tych języ­ków i zaprzę­głem syn­te­za­to­ry mowy, żeby wyge­ne­ro­wa­ły mi zda­nia z popraw­ną wymo­wą. Dodat­ko­wo, przy­go­to­wa­łem prób­ki mowy żywe­go czło­wie­ka dla języ­ka pol­skie­go, angiel­skie­go i rosyj­skie­go. Zapo­wia­da­ło się cie­ka­wie… ale wyni­ki badań mnie nie­co roz­cza­ro­wa­ły. Przy ucze­niu wszyst­kich 6 języ­ków na raz, jakość roz­po­zna­wa­nia była bar­dzo niska. Od 20 do 50%. Z cze­go naj­go­rzej sieć roz­po­zna­wa­ła… język angiel­ski. Naj­le­piej za to wło­ski. Wło­ski prak­tycz­nie wygry­wał w każ­dej kon­fi­gu­ra­cji. Naj­le­piej był roz­po­zna­wal­ny (i to w pra­wie 85%) przy zesta­wie 3 języ­ków — pol­skim, wło­skim i hisz­pań­skim. Nie zdzi­wi­ło mnie to. Jeśli zna­cie melo­dię języ­ka wło­skie­go (a mój pro­gram wła­śnie ana­li­zu­je melo­dię wypo­wia­da­nych zdań), to wie­cie, że każ­de zda­nie koń­czy się sko­kiem into­na­cji od dźwię­ku wyż­sze­go do niż­sze­go. Co wię­cej -bada­nia na prób­kach żywej ludz­kiej mowy wypa­dły nie­co gorzej niż na prób­kach syn­te­tycz­nych.

Czy więc ponio­słem klę­skę? W żad­nym wypad­ku! Wycią­gną­łem wnio­ski, któ­re pozwo­lą mi na udo­sko­na­le­nie algo­ryt­mu i prze­pro­wa­dze­nie kolej­nych badań. Na pew­no nie porzu­cę tego co zaczą­łem. A świa­do­mość tego, że moja publi­ka­cja jest chy­ba jedy­ną taką w języ­ku pol­skim, moty­wu­je mnie dodat­ko­wo. W koń­cu inter­fej­sy gło­so­we za kil­ka lat sta­ną się bar­dzo popu­lar­ne, a ja two­rzę pewien waż­ny wyci­nek tego, co w tych inter­fej­sach będzie imple­men­to­wa­ne. Napi­sa­łem przy­zwo­itą pra­cę, z któ­rej jestem zado­wo­lo­ny i któ­ra roku­je na przy­szłość. Jesz­cze cze­ka mnie obro­na na począt­ku paź­dzier­ni­ka i wte­dy będę mógł ode­tchnąć :-). I z pew­no­ścią po obro­nie opi­szę bar­dziej szcze­gó­ło­wo wyni­ki badań, a tak­że opu­bli­ku­ję swo­ją pra­cę w inter­ne­cie.

Mam nadzie­ję, że Was nie zanu­dzi­łem, i że kogoś inne­go oprócz mnie też to zain­te­re­so­wa­ło. W razie cze­go — pytaj­cie w komen­ta­rzach. Chęt­nie odpo­wiem 🙂