Опит за първично разделяне на запис на говор на съставящите го фонеми



на Тодор Арнаудов, ФМИ на ПУ, март 2004 г.


Каква е задачата и каква е целта?

Задачата беше да се създаде програма, която самостоятелно открива и отбелязва разположението на фонемите в произволен звукозапис на изговорена дума. Целта беше автоматично отделените фонеми да се използват за подобряване на звученето на синтезатора на реч "СЛОГ" [гадая кои думи са зад съкращението, но не знам със сигурност... ;-)], разработван в Пловдивския университет.

Не успях да изпълня целта, но в опитите си стигнах до някои основни насоки при изследването на звук.

Какво трябва да се прави?

Записът - числата, които описват трептението на мембраната на звукоизлъчващата мембрана - да се изследват като графика на "голяма" функция.

Дефиниционното множество на "голямата" функцията е времето: броят на отчетите ("samples" според англоезичната терминология). Функцията е определена за цялото си деф.множество, като стойността на функцията се изменя в границите на разделителната способност на начина, по който е записан звукът; напр. при 16-битова разд.способност, функцията може да приема целочислени стойности от -32768 до 32767.

Търсим зависимости в голямата функция, които да ни позволят да открием по-малки функции или класове от функции, които да разпознаем като фонеми.

Зависимостите, които можем да използваме, са например:

  • периодичност при определена точност на сравнение
  • брой устойчиви периоди на периодична функция
  • локални минимуми и максимуми; размах: abs(loc_max - loc_min)
  • брой смени на знака по време на периода
  • енергия в един период от периодичната функция: сбор на модулите на амплитудите на всеки отчет от периода
  • средна енергия на отчет в границите на периода
  • растене или намаляване на енергията от период на период
  • устойчивост на изменението на енергията от период на период (само растене или само намаляване)
  • изменение на дължината на периода от период на период
  • изменение на броя на смените на знака от период на период
  • честотен спекър изобщо
  • честотен спектър на шума
  • и каквито ни хрумнат начини за математически анализ...

    Същественото, което успях да разработя така че да работи, е търсенето на периодични функции и извършване на измерване на някои от характеристиките им.

    Класификация на звуците на речта

    В моята работа разделих областите от звукозаписа на следните класове:

    1. Тишина
    2. Шум
    3. Тон
    4. Преходи между тишина, шум и тон.
    
    Тишина е област, в която амплитудата (енергията) на сигнала е под избрано прагово ниво, без значение от честотата и периодичността му.

    Шум е област, в която честотата на сигнала е над избрано прагово ниво и/или липсва периодичност с избрана точност на отчитането й.

    Тон е област, в която сигналът е периодичен, с устойчива форма за достатъчно дълъг откъс - с определена точност за "устойчивост" - и честотата му е в зададени граници.

    Преходите са области, в които сигналът изменя честотата и/или амплитудата и/или формата си със скорост и/или по начин над определено прагово ниво; или в които особеностите на сигнала не позволяват той да бъде определен в някой от останалите три класа.

    Тишина

    Откриването на тишина става очевидно като се измери енергията на сигнала. Ако тя е под определен праг, то областта се отбелязва като "тишина". Добре е записът да започва задължително с тишина; така програмата може да получи "понятие" за енергията на тишината в конкретния случай.

    Шум

    Разработената от мен програма открива шума като отчита скоростта на смяна на знака на функцията на звука. Ако се засече поредица от определен брой смени на знака, при които всяка смяна се е извършвала след по-малко от определен брой отчета след предходната, то областта се отбелязва като "шум".

    Ниски носещи честоти

    В някои случаи този прост начин за изследване не дава правилен резултат, защото има области, в които високочестотния сигнал на шума има много по-слаба енергия от по-мощен нискочестотен носещ сигнал, който го "задържа" от едната страна на координатната ос и го маскира като нискочестотен. Ако сигналът в тази област не е периодичен, се отбелязва като "преход".

    Преход

    Области, в които честотата на смяна на знака е по-ниска от тази, определена за шум, но и по-висока от тази, определена за тон; или в която има периодични функции, чиито период е извън зададените граници за тон, се отбелязват като "неизвестни" или "преход"; това е област от записа, където енергията на звука е по-висока отколкото при "тишина", но характеристиките му не са нито като на тон, нито като на шум.

    В някои случаи преходът между области от записа, които искаме да класифицираме като съседни фонеми в края на анализа, е по-сложен за откриване.

    Когато преходът е между тонове, е възможно през целия преход да откриваме периодична функция, която има същия или почти същия период - основна честота - и само бавно се изменят обертоновете й.

    За откриване на такива преходи може да се сравнява енергията на откритите периоди. При преход енергията би трябвало да спада, защото говорният апарат на човека се стяга и достига максимална амплитуда по време на текущия тон, след което се отпуска, за да се пренастрои да изговори другия; енергията пак се увеличава, достига максимум и спада и т.н. Може да се сравнява броя смени на знака между последователно открити периодични функции; или разликите между периодите - там, където разликата - функция на броя смени на знака, промяната в продължителността на периода; енергията, амплитудата - между съседни периоди е най-голяма, спрямо околните, е преход.

    Да разгледаме например следните данни, изведени при обработка на тоновите области от запис на думата "цена" ("Ц"-то е прескочено).

    Най-вляво е началото и края на периода на откритата периодична функция. Следва броят на откритите устойчиви периода (2,3,2,2...)
    След това е периодът на функцията: 146, 148, 149, 148
    СМЕН - 3, 3, 3, 9, 3 - означава броя на смените на знака на функцията в рамките на открития период
    ЕН - 432521, 500835, 534862, 488599 - енергията на периода, т.е. алгебричен сбор от модула на моментните стойности на сигнала по време на периода.
    СР - 2962, 3984, 3648, 3301, 2978 - е средната енергия за един отчет от периода
    Следващите два стълба: 5031 -5766, 4341 -7648, 5551 -8730: са локалните максимум и минимум
    МАХ - 10797, 11989, 14281, 14849, 12771 - е размахът на функцията (модул на максимум - минимум)

    
    
    
     5392 -  5538 :   2  146 СМЕН:  3 ЕН: 432521 СР:  2962 5031 -5766 МАХ:  10797
     5684 -  5832 :   3  148 СМЕН:  3 ЕН: 500835 СР:  3384 4341 -7648 МАХ:  11989
     5978 -  6127 :   2  149 СМЕН:  3 ЕН: 543682 СР:  3648 5551 -8730 МАХ:  14281
     6857 -  7005 :   2  148 СМЕН:  9 ЕН: 488599 СР:  3301 6625 -8224 МАХ:  14849
     8027 -  8176 :   2  149 СМЕН:  3 ЕН: 443818 СР:  2978 7301 -5470 МАХ:  12771
     9344 -  9506 :   2  162 СМЕН:  3 ЕН: 519011 СР:  3203 5904 -4822 МАХ:  10726
     9506 -  9669 :   2  163 СМЕН:  3 ЕН: 547159 СР:  3356 6226 -4800 МАХ:  11026
     9669 -  9835 :   2  166 СМЕН:  3 ЕН: 562853 СР:  3390 6209 -4752 МАХ:  10961
     9835 - 10001 :   2  166 СМЕН:  3 ЕН: 559683 СР:  3371 6165 -4827 МАХ:  10992
    10001 - 10168 :   2  167 СМЕН:  3 ЕН: 557052 СР:  3335 5876 -4806 МАХ:  10682
    10168 - 10334 :   2  166 СМЕН:  3 ЕН: 539404 СР:  3249 5677 -4862 МАХ:  10539
    10334 - 10502 :   2  168 СМЕН:  3 ЕН: 536736 СР:  3194 5617 -4780 МАХ:  10397
    10575 - 10748 :   3  173 СМЕН:  3 ЕН: 552863 СР:  3195 5680 -4798 МАХ:  10478
    10748 - 10919 :   2  171 СМЕН:  3 ЕН: 531968 СР:  3110 5466 -4790 МАХ:  10256
    10919 - 11094 :   2  175 СМЕН:  3 ЕН: 551743 СР:  3152 5474 -4899 МАХ:  10373
    11094 - 11271 :   3  177 СМЕН:  3 ЕН: 552628 СР:  3122 5254 -4938 МАХ:  10192
    11271 - 11448 :   2  177 СМЕН:  3 ЕН: 547376 СР:  3092 5315 -5062 МАХ:  10377
    11448 - 11628 :   3  180 СМЕН:  3 ЕН: 552340 СР:  3068 5168 -5149 МАХ:  10317
    11628 - 11809 :   3  181 СМЕН:  3 ЕН: 566802 СР:  3131 5055 -5338 МАХ:  10393
    11809 - 11989 :   2  180 СМЕН:  3 ЕН: 573387 СР:  3185 5036 -5507 МАХ:  10543
    11989 - 12172 :   2  183 СМЕН:  3 ЕН: 569880 СР:  3114 4987 -5597 МАХ:  10584
    12610 - 12782 :   2  172 СМЕН:  3 ЕН: 408869 СР:  2377 3708 -4661 МАХ:   8369
    13366 - 13566 :   2  200 СМЕН:  7 ЕН: 291022 СР:  1455 2970 -6040 МАХ:   9010
    15464 - 15682 :   2  218 СМЕН: 10 ЕН: 335995 СР:  1541 3020 -5211 МАХ:   8231
    18748 - 18942 :   2  194 СМЕН:  3 ЕН: 128538 СР:   662 1198 -1319 МАХ:   2517
    
    Програмата е открила 25 области с тон, които трябва да бъдат сведени до 3: "Е", "Н" и "А"; да бъдат открити "чисти" и "мръсни" области - средата на фонемата ("чист" тон); и краищата ("мръсни" тонове), в които тонът преминава в "работен режим".

    Да започнем с първите няколко реда с числа.

    
    
     5392 -  5538 :   2  146 СМЕН:  3 ЕН: 432521 СР:  2962 5031 -5766 МАХ:  10797
     5684 -  5832 :   3  148 СМЕН:  3 ЕН: 500835 СР:  3384 4341 -7648 МАХ:  11989
     5978 -  6127 :   2  149 СМЕН:  3 ЕН: 543682 СР:  3648 5551 -8730 МАХ:  14281
     6857 -  7005 :   2  148 СМЕН:  9 ЕН: 488599 СР:  3301 6625 -8224 МАХ:  14849
     8027 -  8176 :   2  149 СМЕН:  3 ЕН: 443818 СР:  2978 7301 -5470 МАХ:  12771
    
    Средната енергия на един отчет от периода (2962, 3384, 3648, 3301, 2978) се увеличава и след това намалява, като периода (146, 148, 149, 148, 149) почти не се променя. Устойчивото растене на енергията показва, че фонемата "сработва", а устойчивият спад може да означава, че фонемата е преминала отвъд мястото където е звучала най-ясно. Можем да приемем областта 5978-6127 за среда на фонемата и да я приемем като образец за основното трептение "Е".

    На очи се набива голямата разлика в броя смени на знака, която се появява изведнъж (3, 3, 3, 9, 3). Такава разлика говори за големи промени, извършващи се във функцията, която поражда звука; вероятно там се извършва преход.

    Виждат се още големите скокове между местата, където са открити периодични функции. По-голямото разстоянието между области, в които е открита периодична функция, също е признак за промяна на звука с твърде висока скорост и за вероятен преход в тази област.

    Местата, където откритите периодични функции са по-сгъстени (или долепени една до друга, както ще видим след малко), с по-голяма вероятност са области на сработен; на "чист" и устойчив тон; или, най-малкото, показват че се намираме в единна, свързана област; в една и съща фонема.

    
    
     9344 -  9506 :   2  162 СМЕН:  3 ЕН: 519011 СР:  3203 5904 -4822 МАХ:  10726
     9506 -  9669 :   2  163 СМЕН:  3 ЕН: 547159 СР:  3356 6226 -4800 МАХ:  11026
     9669 -  9835 :   2  166 СМЕН:  3 ЕН: 562853 СР:  3390 6209 -4752 МАХ:  10961
     9835 - 10001 :   2  166 СМЕН:  3 ЕН: 559683 СР:  3371 6165 -4827 МАХ:  10992
    10001 - 10168 :   2  167 СМЕН:  3 ЕН: 557052 СР:  3335 5876 -4806 МАХ:  10682
    10168 - 10334 :   2  166 СМЕН:  3 ЕН: 539404 СР:  3249 5677 -4862 МАХ:  10539
    10334 - 10502 :   2  168 СМЕН:  3 ЕН: 536736 СР:  3194 5617 -4780 МАХ:  10397
    10575 - 10748 :   3  173 СМЕН:  3 ЕН: 552863 СР:  3195 5680 -4798 МАХ:  10478
    10748 - 10919 :   2  171 СМЕН:  3 ЕН: 531968 СР:  3110 5466 -4790 МАХ:  10256
    10919 - 11094 :   2  175 СМЕН:  3 ЕН: 551743 СР:  3152 5474 -4899 МАХ:  10373
    11094 - 11271 :   3  177 СМЕН:  3 ЕН: 552628 СР:  3122 5254 -4938 МАХ:  10192
    11271 - 11448 :   2  177 СМЕН:  3 ЕН: 547376 СР:  3092 5315 -5062 МАХ:  10377
    11448 - 11628 :   3  180 СМЕН:  3 ЕН: 552340 СР:  3068 5168 -5149 МАХ:  10317
    11628 - 11809 :   3  181 СМЕН:  3 ЕН: 566802 СР:  3131 5055 -5338 МАХ:  10393
    11809 - 11989 :   2  180 СМЕН:  3 ЕН: 573387 СР:  3185 5036 -5507 МАХ:  10543
    11989 - 12172 :   2  183 СМЕН:  3 ЕН: 569880 СР:  3114 4987 -5597 МАХ:  10584
    
    Средната енергия за отчет в период няма устойчиво поведение - само растене или само намаляване - но областта, в която се движат стойностите, е ограничена (3068, 3390) и разликата в средните енергии на две съседни области е малка; най-голямата разлика е 153 (в началото на примера).

    "+" ще означава, че редицата от числа нараства
    "-" ще означава, че редицата от числа намалява
    "=" ще означава, че редицата от числа е константа

    3203, 3356+, 3390+, 3371-, 3335-, 3249-, 3194-, 3195+, 3110-, 3152+, 3122-, 3092-, 3068-, 3131+, 3185+, 3114-

    Броят на смени на знака е постояен: 3.

    Периодът расте почти строго. С "почти строго" имаме предвид, че в някои случаи намалява, но никога това не се случва за повече от една стъпка.

    162, 163+, 166+, 167+, 166-, 168+, 173+, 171-, 175+, 177+, 177=, 180+, 181+, 180-, 183+

    "Самотните" единични места, в които има спад на дължината на периода са обградени, поне от едната страна с по две места, в които е открито нарастване (последното намаление е оградено от едната страна само с едно нарастване на периода).

    Такива единични места биха могли да бъдат пренебрегвани като грешки.

    Вероятно вече сте забелязали защо избрах точно тази област от извадката: защото всяка област започва точно от края на предходната (с едно-единствено изключения, при което скокът е 73 - по-малък от периода - и се пренебрегва). Това е явен признак за единство и свързаност между откритите функции. При откриване на такъв "наниз" можем да бъдем сигурни, че сме открили фонема. В примера това е "Н" и има цели 16 съседни места. В такива случаи за чист тон можем да вземем функцията, открита по средата, т.е. една от двете:

    
    10575 - 10748 :   3  173 СМЕН:  3 ЕН: 552863 СР:  3195 5680 -4798 МАХ:  10478
    10748 - 10919 :   2  171 СМЕН:  3 ЕН: 531968 СР:  3110 5466 -4790 МАХ:  10256
    
    Когато по средата са две функции, ако за едната са открити 3 устойчиви периода, можем да избираме нея - т.е. (10575, 10748) с период 173 отчета; ако и двете са с еднакъв брой открити устойчиви периода (или по два или по три), тогава ще се избира четен или нечетен номер на открита функция (все едно). Можем да правим и "средно-функционално" - да слеем двете функции и да получим "кръстоска".

    Би било полезно да имаме предварителна информация за очакваните дължини на фонемите. Например период 173 отчета на откритото от програмата "Н" означава, че един период звучи за 173/44100 = 0.0039 секунди. Щом сме открили периодична функция, значи сме срещнали най-малко два периода, т.е. 0.0078 секунди. Ако сме открили само едно място, където има толкова периода, оградено от "обширно пространство", в което няма периодични функции, то не сме открили тонална фонема.

    Остана последната част. Да вземем част от "Н"-то, за да видим как се променят числата при преминаване към фонемата "А".

    
    11628 - 11809 :   3  181 СМЕН:  3 ЕН: 566802 СР:  3131 5055 -5338 МАХ:  10393
    11809 - 11989 :   2  180 СМЕН:  3 ЕН: 573387 СР:  3185 5036 -5507 МАХ:  10543
    11989 - 12172 :   2  183 СМЕН:  3 ЕН: 569880 СР:  3114 4987 -5597 МАХ:  10584
    12610 - 12782 : 2 172 СМЕН: 3 ЕН: 408869 СР: 2377 3708 -4661 МАХ: 8369 13366 - 13566 : 2 200 СМЕН: 7 ЕН: 291022 СР: 1455 2970 -6040 МАХ: 9010 15464 - 15682 : 2 218 СМЕН: 10 ЕН: 335995 СР: 1541 3020 -5211 МАХ: 8231 18748 - 18942 : 2 194 СМЕН: 3 ЕН: 128538 СР: 662 1198 -1319 МАХ: 2517
    Защо сложих чертата там? Защото в предходната област открихме низ от 16 съседни периодични функции, - 16 пъти отместване нула отчета - а изведнъж се натъкваме на отместване от 438 отчета (12172 --> 12610). Отместването е знак, че предходната функция - на отчет номер 12172 - огражда края на предходния звук (фонемата "Н"). Вероятно текущата функция е преход между "Н" и следващата фонема. Следващото място, на което е открита периодична функция, е отчет #13366 - още по-голямо отместване от предходното (+756 отчета); по-следващото се намира на #15464 - отместване отново на още по-голямо разстояние (+2098); последната открита периодична функция се намира на отчет #18748 (+3284) - отново на още по-голямо отместване.

    Как да разберем къде свършва преходът и къде се намира чистият тон на фонемата "А"?

    Ако се заслушаме, откриваме че най-добре звучи тонът, открит тук:

    
    15464 - 15682 :   2  218 СМЕН: 10 ЕН: 335995 СР:  1541 3020 -5211 МАХ:   8231
    Остава да видим бихме ли могли да намерим обяснение само въз основа на тези числа.

    Знаем със сигурност, че последните четири реда са част от фонема, различна от предходната: "Н". Знаем, че първият от последните четири реда би трябвало да е преход. Периодът на функцията там (12610 - 12782) е определен на 172 отчета. Разликата спрямо периода отляво е -11 (183), а спрямо периода отдясно е +28. Въз основа на това бихме могли да заключим "приблизително", - с предположение - че откритата функция с начало #12610 е преход, който е по-близо до предходния тон, т.е. е повече "Н", отколкото "А".

    Остават три периодични функции. Последната - от #18748 - има средна енергия едва 662, при положение че предишните две са имали, съответно, първата - 1455, и втората - 1541. Повече от двукратно намаление на енергията, при положение че промяната между предходните две е било едва с около 1/15.

    Освен това, при търсене по напред в звука, откриваме тишина в края на записа. Следователно областта от тон би трябвало да затихва; областта от записа, в която тонът затихва, е преход.

    Въз основа на горните разсъждения стигаме до извода, че последната открита периодична функция е част от прехода между тона, който търсим, и тишината.

    Така сведохме търсенето до две периодични функции:

    
    13366 - 13566 :   2  200 СМЕН:  7 ЕН: 291022 СР:  1455 2970 -6040 МАХ:   9010
    15464 - 15682 :   2  218 СМЕН: 10 ЕН: 335995 СР:  1541 3020 -5211 МАХ:   8231
    

    Защо #15464 звучи по-добре от #13366?

    Бихме могли да се улесним, както вече споменахме, ако имаме предварителна информация за вида - шум, тон, амплитудна характеристика - и продължителността на фонемите и, още повече, ако знаем последователността от фонеми, която се опитваме да разделим. Ако знаем амплитудната характеристика (тя зависи и от ударението), можем да търсим подобна амплитудна характеристика в записа.

    При нормален говор (който не е умишлено разтеглен, провлачен, изчанчен) тоналните фонеми би трябвало (така казва "интуицията" ми) да достигат най-ясно звучене в средата си, защото всеки тон, изговорен от човек, започва и завършва с преход - говорният апарат не може изведнъж да издава чист и ясен звук.

    Ако приемем за опора "тихата" периодична функция, открита на #18748 - като край на прехода отдясно; а #12610 - за "опора отляво" - началото на прехода отляво, то можем да изчислим къде е средата между двете: #15679. Това е по-близо до функцията с начален отчет #15464 и период 218 отчета, отколкото до тази с начало #13366 и период 200. Затова избираме #15464 за най-характерно звучене на фонемата "А".


    Как да открием периодична функция в звук?



    Задаваме честотна лента на търсене, като избираме най-малка и най-голяма допустима дължина на периода на функцията, която би могла да бъде намерена.
    Честотната лента на търсене е тънък въпрос. Понякога се откриват периодични функции, които са части на тези, които ни интересуват. Затова е необходимо да се задават тесни честотни ленти, т.е. трябва да знаем какво търсим. В някои случаи ще е необходимо записът да се обхожда многократно за различни честотни ивици, тъй като различните фонеми могат да са съставени от тонове, отдалечени на твърде голямо разстояние по честота.

    Когато търсим в широки честотни области можем да извършваме многократно обхождане по следния начин:

    Първо се задава ивицата, да речем, (100, 500 Хц). Първите периодични функции, които ще открием, ще са тези с по-висока честота, защото са по-кратки и по-бързо връщат знак за успех (виж по-долу). Затова бихме могли да извършваме повторни търсения, така че ако открием периодична функция с по-ниска честота да отменим тази с по-висока.

    Тук също обаче са възможни затруднения, защото ако сме задали много ниска допоустима честота на периодичната функция, е възможно да открием два (или повече) съседни периода на тона, които да бъдат разпознати като един период на функция с два пъти по-ниска честота. В такъв случай можем да проверяваме дали в откритата периодична функция няма периодична функция с цяло число периоди.

    Необходимо е да определим функция за "размито сравняване", която да връща знак "равни", ако две стойности се различават не повече от някаква относителна или абсолютна граница. Размитото сравняване е необходимо, защото е почти невероятно в реален запис на звук да открием "съвършена" периодична функция, в която стойностите съвпадат с максимална точност.

    Например, строго погледнато горната графика не е на периодична функция; но ако допуснем известно отклонение на моментните стойности, т.е. достатъчно ни е запазване на основни честоти, - на "основния тон на функцията" - то тя очевидно е перидична; вторият период е като първия, макар че не е съвсем еднакъв. Като звук - звученето на първия период, размножен многократно; и звученето на втория период, също размножен многократно - разликата е осезаема, но малка; същественото е, че и двата звука са на фонемата: "Е".

    В програмата ми не е писано, но би могло да се разработи и "размито сравняване с натрупване на инерция": всяко сравнение, при което разликата между сравняваните моментни стойности на функцията е в границите на допустимото отклонение, да натрупва "запас", който да се използва в случай на по-големи от допустимото, но краткотрайни отклонения вследствие на шум или включване на честоти, които са липсвали в предходния период; ако е било натрупано достатъчно количество "запас" в предходни сравнения, то функцията да връща знак "равни" дори ако разликата между текущосравняваните стойности е много над допустимото.

    Или пък да се запомня отклонението между моментните стойности между двата периода; тези данни биха показали скоростта на изменение на функцията при говор. Тази скорост носи информация за това, което става в говорния апарат. Дали той "сработва" за да изговори чисто даден звук; дали "превключва" от един звук към друг или пък се отпуска и фонемата започва да отзвучава.

    Следваме определението за периодична функция: необходимо е стойностите й да се повтарят на разстояние един период, като действаме по следния начин:

    1. Поставяме указател на място, което избираме за начало на функцията. (УКАЗ-0) и създаваме друг, който ще местим (УКАЗ-1)

    2. Поставяме друг указател на място, отдалечено от първия на разстояние минимална дължина на периода (УКАЗ-2). И създаваме трети указател, който ще местим (УКАЗ-3).

    3. Сравняваме моментните стойности на функцията на местата УКАЗ-3 и УКАЗ-1.

    4. Ако размито_сравнение(моментна_стойност[УКАЗ-3], моментна_стойност[УКАЗ-1]) върне знак "равни", - стойностите на функцията се повтарят - преместваме двата указателя с един отчет напред. Ако функцията за сравнение връща "равни" до момента, в който УКАЗ-1 съвпадне с УКАЗ-3, то отбелязваме, че сме открили периодична функция с два устойчиви периода. След това можем да проверим и за следващи устойчиви периоди по същия алгоритъм, като приемем УКАЗ-3 за начален указател (УКАЗ-0), или като УКАЗ-0 си остане начален указател и търсим брой съвпадения на моментните стойности в продължение на един период.

    5. Ако размитото сравнение върне "неравни", тогава преместваме УКАЗ-0 - предполагаемото начало на периодична функция - на избрано разстояние и отново търсим периодична функция; и т.н.

    Класифициране на шум

    Шумът се характеризира със спектър: сигнали от какъв честотен диапазон се срещат в дадената област.

    Точно измерване на честотния спектър на звука във всички области (тон, преход, шум) може да се извърши чрез преобразование на Фурие.

    Предлагам по-прост метод (неизпълнен от мен програмно), който обаче не би вършел работа в случаите, когато шумът се "носи" от ниска честота с много по-голяма мощност.

    Изследването може да се извършва като се опише структура от данни, в която е отделено място за различни високочестотни области - спектър на шума.

    Взема се област от звука с определена дължина - да речем 441 отчета при честота на дискретизация 44100 Хц. В тази област се преброяват смените на знаци, извършени за период съответстващ на всяка честотна област.

    Например ако смяната на знака на функцията на звука се извърши за 2 отчета, то можем грубо да приемем, че честотата му в този момент е 44100/2 = 22050 Хц. Ако смяната се извърши за три очета, честотата е 44100/3 = 14.7 кХц; 44100/4 = 11.025 кХц, 44100/5 = 8.82 кХц, 44100/6 = 7.35 кХц, 44100/7 = 6.3 кХц и т.н.

    За всяка област се описва колко пъти знакът се е сменил за 2 отчета, колко пъти за 3 и т.н.

    Различните видове шумови фонеми - например "с", "ц", "ч", "ш", "т" - би трябвало да имат различен спектър.

    Идеи за уеднаквяване на две подобни функции на тон чрез размито сравняване


    Опростяване


    Първо "разтягаме" по-късата, така че периодът на новополучената нормализирана функция да стане равен на по-дългия период. След това намаляваме разделителната способност на записа, така че разликите, които се вместват в избрани от нас граници, да бъдат заличени.

    Например:

    Намаляваме "разделителната способност на отвесната ос" - точността на дискретизация. Ако входният запис е с точност 16-бита на отчет, го опростяваме до 3, 4, 5 бита на отчет. Така ще се изтрият малки разлики между моментните стойности на сравняваните функции.

    Намаляваме "разделителната способност на водоравната ос", като сливаме по няколко съседни отчета. Образно казано "сплескваме" функцията като хармоника, като от няколко съседни отчета (два, три, четири) получаваме един - средноаритметичното на техните моментни стойности.

    При сравняване на функции е необходимо да се създаде конкретна мярка (мерки), - може би вектор от разлики - чрез която да се решава дали две функции са "достатъчно подобни", за да бъдат приети за част от една и съща тонална фонема.

    Друго което ми хрумва, е преобразуване на плавната графика на функцията в начупена линия, която свързва ограничен брой точки от нея, като същевременно изпълним споменатите по-горе "огрубявания" - намаляваме точността на дискретизация.

    "Начупената" линия представлява "силно огрубяване" - свеждане на описанието на функцията от описание на всяка моментна стойност до описание само на няколко моментни стойности, като междинните се подразбират - отсечки между известните. В примерната графика функциите са сведени до 5 точки. Тези моментни стойности могат да се получат като се вземе единствена моментна стойност или средноаритметичното на няколко отчета, намиращи се в околност.



    © Тодор Арнаудов, 27.3.2004