Девушки кричат на кота на якутском
Девушки кричат на кота на якутском

Недавно мы закончили проект по синтезу якутского языка. Хотя наши договорённости не позволяют выложить нам модели в общий доступ, какими-то соображениями на тему того, как можно делать синтез якутского языка мы поделиться можем.

Под котом катом вы узнаете:

  • Как звучит синтез на якутском языке;

  • Чем отличается якутский алфавит от русского и какие "дополнительные" звуки там есть;

  • Как работать с ударениями на якутском языке, с учетом полного отсутствия каких-либо корпусов или словарей;

  • И, в качестве бонуса, как якутский синтез речи говорит на русском с якутским акцентом;

Фонетика якутского языка

Как звучит якутский язык?

Возможно вы никогда его не слышали (или не отдавали себе отчёт, что звучит именно якутский), но звучит он так:

Примеры синтеза на якутском языке

Это случайные фразы синтезированные на якутском. Если он для вас - родной, отпишите, пожалуйста, в комментариях.

Алфавит, дифтонги и длинные звуки

Начнём с простого, а именно с алфавита. Нам всем очень повезло, на самом деле. Ситуаций как со словами по типу the / though / thought / Thomas / eighth / lighthouse ни в русском, ни в якутском нет.

В русском как слышится так и пишется с учётом ударения (да, я понимаю, это огромное допущение), а в якутском так же, но ударение мало влияет на произношение слова. И большая часть звуков нам известна. Нам также повезло, что алфавит унифицирован с кириллицей и письмо фонетическое (современный алфавит существует с 1939 года и с тех пор официально не подвергался правкам).

Якутский алфавит:

Кириллица

IPA

Примечания

А а

[a]

Б б

[b]

В в

[v]

Только в заимствованных словах

Г г

[g]

Ҕ ҕ

[ɣ], [ʁ]

"Г с крюком" (фрикативный "г")

Д д

[d]

Дь дь

[ɟ]

"Д с мягким знаком" (сверхмягкий "дь")

Е е

[e], [je]

Только в заимствованных словах

Ё ё

[jo]

Только в заимствованных словах

Ж ж

[ʒ]

Только в заимствованных словах

З з

[z]

Только в заимствованных словах

И и

[i]

Й й

[j], [j̃]

К к

[k], [q]

Л л

[l]

М м

[m]

Н н

[n]

Ҥ ҥ

[ŋ]

Лигатура "нг" (заднеязычное "н")

Нь нь

[ɲ]

"Н с мягким знаком" (сверхмягкое "н")

О о

[o]

Ө ө

[ø]

"О с перекладиной"

П п

[p]

Р р

[r]

С с

[s]

Һ һ

[h]

Т т

[t]

У у

[u]

Ү ү

[y]

Прямая "у"

Ф ф

[f]

Только в заимствованных словах

Х х

[x]

Ц ц

[ʦ]

Только в заимствованных словах

Ч ч

[ʧ]

Ш ш

[ʃ]

Только в заимствованных словах

Щ щ

[ɕː]

Только в заимствованных словах

Ъ ъ

.

Только в заимствованных словах

Ы ы

[ɯ]

Заднеязычное, неогублённое "у"

Ь ь

[ʲ]

Только в заимствованных словах

Э э

[e]

Ю ю

[ju]

Только в заимствованных словах

Я я

[ja]

Только в заимствованных словах

Как мы видим, существенная часть алфавита вообще используется только в заимствованных словах (из русского языка в первую очередь), но также есть аж четыре разные группы "звуков", у которых нет аналогов в русском языке (ну или они совсем редкие или используются в заимствованных словах):

  • дь и нь хоть формально и не являются буквами, но обозначают звуки ɟ и ŋ, аналогов которых в русском нет;

  • Буквы ҕ, ҥ, ө, һ, ү обозначают звуки ɣ, ŋ, ø, h, y и не имеют аналогов в русском языке;

  • Дифтонги ыа, уо, иэ и үө;

  • Длинные звуки аа, оо, ыы, уу, ии, ээ, үү, өө;

Далее мы подробно пройдемся по каждому из звуков, приведём примеры его звучания и опишем понятными словами как он звучит и на что похож.

Также якутский на слух звучит немного "нараспев". Это происходит потому, что в якутском языке есть пять долгих гласных (аа, ыы, уу, ии, үү), встречающихся лишь в корне. Дифтонги, возникшие в результате соединения звуков, встречаются в любом слоге.

Употребление гласных звуков подчиняется правилу гармонии гласных, при котором гласные в слове следуют друг за другом в строго определённом порядке. Например, если в предыдущем слоге стоит звук ы, то в следующем может быть только ы или а, или ыа: ылыым, ылаар, ылыа.

Еще важно затронуть палатализацию ("смягчение" согласных перед гласными звуками). В русском языке она встречается повсеместно. В якутском палатализация перед гласными и, э, ө, ү, иэ, үө - присутствует не у всех согласных. У л, м, т, c - присутствует. По поводу н - спорно, ведь есть звук нь.

Дополнительные буквы и звуки

Опишем звуки, которых нет в русском языке:

  • Сочетание букв дь передаёт звук ɟ, который русскими буквами можно записать примерно как дьй;

  • Сочетание букв нь передаёт звук ɲ, который похож нь или , однако нь - альвеолярный звук (передняя часть языка соприкасается с альвеолярным отростком), а в палатальном носовом согласном ɲ средняя часть языка соприкасается с твёрдым нёбом. Самый простой пример - тут английское слово onion или любое испанское слово с буквой ñ, например señor;

  • Звук ɣ , передаваемый буквой ҕ, читателю скорее известен как звук между г и х из русских южных диалектов, или звук буквы г в словах господи, ага, Бог;

  • Носовой звук ŋ передаваемый буквой ҥ, читателю скорее всего известен из английского языка в словах типа thing, заканчивающихся на -ing;

  • Буква ө передаёт звук ø, который нам известен из "немецких слов с точками", например schön, и звучит как нечто среднее между о и у;

  • Буква һ передаёт звук h, который читателю известен как английское "легкое" х на выдохе, например в слове high;

  • Буква ү передаёт звук y, который вы наверное все слышали миллион раз в слове über в разных контекстах;

Послушать примеры слов с указанными звуками можно ниже:

Примеры новых звуков на якутском:

Дифтонги и длинные звуки

Фух, можно выдохнуть. По сути дифтонги это просто сочетания звуков, а долгие звуки это как будто два звука, идущих подряд. С этим связано ударение, но об этом чуть дальше.

Послушаем эти звуки.

Дифтонги и длинные звуки:

Ударения

Не секрет, что например на английском языке без перевода слов в фонемы в синтезе речи обойтись нельзя, потому что там пишется "понедельник, а читается четверг".

Мемы про английское прочтение слов:
Английский мем 1
Английский мем 1
Английский мем 2
Английский мем 2
Английский мем 3
Английский мем 3
Английский мем 4
Английский мем 4

В русском языке всё обстоит получше, но нужно знать ударение. Кроме редких примеров типа "солнце" или "дожди", если проставить ударение, чтение слова довольно однозначно.

Но как обстоят дела в якутском языке? Оказывается, что ударений как таковых в нём как будто бы нет. Мы задавали вопросы разным носителям языка и лингвистам, и не получили консенсуса. На Википедии на эту тему вообще написано что-то странное.

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

Но даже если ударения нет, нужно иметь систему, которая была бы совместима с русским языком, если например нужно будет вставить русское слово, не "адаптируя" его на якутский. А у русских слов нужно иметь возможность проставлять ударения.

По этой причине наш коллега, говорящий на якутском языке, сел отслушивать записи на якутском, и пришёл к выводу, что ударение несильное и падает или на все слоги сразу, или там где стоит дифтонг или двойная гласная.

Распарсив корпус слов, получившийся от анализа сайтов СМИ на якутском, мы смогли расставить "ударения" с помощью правил, чтобы они работали обратно совместимо с русским языком.

Моделирование

Так, отлично. Палатализация не очень ярко выражена, практически всё как слышится так и пишется, ударения можно не ставить, но мы лучше поставим.

По сути после записи корпусов речи на русском и якутском остается только ответить на ряд вопросов / гипотез, чтобы наконец определиться с дизайном системы синтеза речи:

  • Использовать графемы или фонемы? Тут выбор точно в пользу графем. У обоих языков письмо "фонетическое";

  • В экспериментах с фонемами у нас лучше работали модели, где палатализация выделена в отдельный символ. А в экспериментах с графемами лучше работало … когда мы просто подавали графемы "как есть". Получается тут тоже особо без вариантов;

  • Вопрос как подавать ударение по идее тоже не особо стоит - отдельным символом для обоих языков. Мы пробовали НЕ подавать ударения для якутского языка, но модель начинала "путаться". Если не подавать ударения в русский язык … ну можно не продолжать;

  • По сути остаётся только решить как подавать дифтонги и длинные гласные. Мы пробовали как выделять отдельные символы на них, так и наивный способ, огромной разницы не увидели. Значит действуем по пути сокращения сущностей;

Получается, что если грамотно решить вопрос с ударениями, то можно получить простую в использовании систему синтеза языка, которая будет сразу работать на двух языках и позволит также "говорить на русском с якутским акцентом" и наоборот.

Русская речь с якутским акцентом

В качестве бонуса вот несколько аудио русской синтезированной речи с "якутским акцентом".

Речь на русском с якутским акцентом:

Итоги

Тут триллера особо не получилось, мы просто аккуратно исследовали предметную область и сделали синтез речи на якутском, который работает одновременно и на русском языке. Несмотря на кажущуюся экзотику или сложность, на самом деле нам очень "повезло" с фонетическим алфавитом языка и тем, что один из нас говорит на якутском.

Также нужно ещё отметить, что вопреки популярным трендам в духе "закинуть все данные в сетку на сотни миллиардов параметров", наша модель работает даже на 1-4 потоках процессора локально и показывает очень бодрые показатели скорости.

Скорость модели:

В таблице указаны секунды сгенерированного аудио в секунду.

Скорость модели
Скорость модели

Впереди нас ждёт ещё 8 языков, но там, к сожалению, так "просто" уже не будет ...

PS

Долго боролся с хостингом аудио, некоторые файлы он не принимает вообще никак. Поэтому если кого-то очень заинтересуют все файлы, вот ссылка на гугл-диск.

Комментарии (11)


  1. asantat
    21.08.2024 03:18
    +10

    Молодцы, но есть несколько нюансов:

    1) в Вашей статье нет валидации. Модель нужно валидировать на реальную речь. И примеры речи носителей были бы кстати.

    2) почему Вы не использовали международное фонетическое письмо при описании алфавита?

    3) все гласные группы "и" (i, ï, ü, u, в принятых для описания фонетики тюркских языков символах) в тюркских языках краткие вплоть до редукции. Исключений очень мало (литературный турецкий, гагаузский, в которых эти процессы выражены слабо).

    4) в некоторых местах, например, в аффиксе инфинитива "арга" г должна быть ğ (то есть гамма на международном фонетическом алфавите, но у меня на раскладке в телефоне нет этого символа). Так во всех тюркских языках. И звук "ğ" обычно звучит более гортанно, это тоже нужно учитывать. Он не похож на украинское "г" и даже не полностью похож на греческую гамма (более шумный звук по сравнению с украинской "г").

    5) в окружении палатальных и глоттализированных аффрикат фонема "а" обычно произносится в более задней позиции.

    6) "ы" всегда звучит в более задней позиции (в русском этот звук средний и как бы с более широкой локализацией, а в тюркских языках он всегда задний). Исключение в тюркских языках - гагаузский, говоры крымского языка с румейским (византийским) субстратом, а также понтийские и лазский этнолекты турецкого языка и в некоторой степени современный литературный турецкий. В этих языках "ы" имеет в разной степени среднюю позицию, но в то же время узкую локализацию.

    7) концепция ударения в русском языке отличается от таковой в большинстве индоевропейских языков. В русском языке ударение определяется и реализуется в первую очередь удлинением долготы. В других языках - напряжением гортани при произнесении звуков.

    8) всё-таки лучше транслировать в фонетический алфавит, а затем синтезировать звук. Алфавит не в полной мере отражает фонетику, и это разные задачи. Лучше декомпозировать и затем отлавливать трудные случаи в каждом слое модели независимо.


    1. snakers4 Автор
      21.08.2024 03:18
      +2

      Спасибо за развернутый комментарий. Отвечу по порядку:

      1) в Вашей статье нет валидации. Модель нужно валидировать на реальную речь. И примеры речи носителей были бы кстати.

      Реальная речь, сравнение синтеза и реальной речи - естественно были в процессе разработки. Просто юридически мы не имеем права выкладывать аудио дикторов в публичный доступ, т.к. у нас нет на это разрешения.

      Что касается валидации именно в классическом ML-ном смысле, синтетические метрики приводить смысла мало вижу, большая часть детских проблем была давно побеждена через разные хаки и inductive bias-ы. По-хорошему надо бы конечно взять несколько десятков носителей якутского языка и попросить сделать двойной слепой тест … но мы делали когда-то это на русском, а тут с тех пор качество только выросло.

      Анекдотически, носители языка каких-то сильных проблем с синтезом не заметили.

      2) почему Вы не использовали международное фонетическое письмо при описании алфавита?

      Так вроде IPA это же оно и есть.

      3) все гласные группы "и" (i, ï, ü, u, в принятых для описания фонетики тюркских языков символах) в тюркских языках краткие вплоть до редукции. Исключений очень мало (литературный турецкий, гагаузский, в которых эти процессы выражены слабо).

      До таких тонкостей мы не доходили, алгоритмы хвала бобрам сами умеют подсасывать такие вещи. За счёт этого (и общего словаря) кстати и работает "синтез с акцентом". Это бесполезно в 99% случаев, но забавно. Тот факт, что акцент похож на настоящий, показывает, что допущения были выбраны правильно.

      4) в некоторых местах, например, в аффиксе инфинитива "арга" г должна быть ğ (то есть гамма на международном фонетическом алфавите, но у меня на раскладке в телефоне нет этого символа). Так во всех тюркских языках. И звук "ğ" обычно звучит более гортанно, это тоже нужно учитывать. Он не похож на украинское "г" и даже не полностью похож на греческую гамма (более шумный звук по сравнению с украинской "г").

      То есть это в некое "дополнение" к букве ҕ ? Тоже в раздел тонкостей. Про фонемы ниже отпишу.

      5) в окружении палатальных и глоттализированных аффрикат фонема "а" обычно произносится в более задней позиции.

      6) "ы" всегда звучит в более задней позиции (в русском этот звук средний и как бы с более широкой локализацией, а в тюркских языках он всегда задний). Исключение в тюркских языках - гагаузский, говоры крымского языка с румейским (византийским) субстратом, а также понтийские и лазский этнолекты турецкого языка и в некоторой степени современный литературный турецкий. В этих языках "ы" имеет в разной степени среднюю позицию, но в то же время узкую локализацию.

      Ниже развернутый комментарий про фонемы. Общий комментарий тут такой - когда мы допустим, смотрели очень детальные и точные IPA-транскрипции для русского и английского языков, начиная с какого-то уровня точности это вызывало проблемы и шло против житейской логики.

      Понятно, что чем "нажористее" inductive bias и чем чище данные на вход тем лучше, но когда реальные пользователи будут пользоваться, некоторыми тонкостями лучше пренебречь для простоты. С точки зрения пользователя оно должно "just work".

      7) концепция ударения в русском языке отличается от таковой в большинстве индоевропейских языков. В русском языке ударение определяется и реализуется в первую очередь удлинением долготы. В других языках - напряжением гортани при произнесении звуков.

      Тут основная проблема в том, что синтез на якутском неразрывно связан с синтезом на русском языке. То есть модель должна одновременно уметь и в русский и в якутский язык. И то, что нужно произносить русские слова "с акцентом" или адаптируя их - это тоже фича.

      А в русском языке фонемы конечно не вредны, но на наших экспериментах качество связки `ударение + фонемы + синтез` примерно равно связке `ударение + графемы + синтез`. Плюс еще точность фонемайзера достигает интересных значений только тогда, когда ударение известно. Ну то есть в русском ударения "тащат" и, чтобы сделать фонемы из текста желательно знать ударение. С точки зрения житейской логики - если прочитать слова с разным ударением, фонемы там будут разные.

      Отсюда получается, что с точки зрения моделирования, нам надо иметь обратную совместимость с русским языком. А отсюда вытекает всё остальное. А эксперимент, что якутский язык начинает "течь", если убрать "ударение", подтверждает, что это было сделано не зря.

      8) всё-таки лучше транслировать в фонетический алфавит, а затем синтезировать звук. Алфавит не в полной мере отражает фонетику, и это разные задачи. Лучше декомпозировать и затем отлавливать трудные случаи в каждом слое модели независимо.

      В идеальном мире да, но на практике в этом случае - нет.

      На русском можно найти бесконечное число разной степени точности и детальности фонетических словарей, сделать ударения и фонемайзер с заданной точностью. На якутском этого всего нет, то есть надо будет написать свой фонемайзер на правилах. А он скорее всего не учтёт например тонкости, описанные выше. А носители языка нам скорее всего тут особо не помогут, т.к. они просто говорят не задумываясь. Отсюда получаем замедление релиза на порядок, т.к. надо будет найти носителей языка, которые одновременно и лингвисты. А поскольку письмо фонетические и не менялось с 1939 наверное оно всё-таки адекватное (вроде хотели что-то поменять недавно, но отказались). В общем не инглиш с его адом и отсутствием рефакторинга.

      Еще момент. При использовании на практике с высокой вероятностью возникнут имена собственные. Причем возможна дикая смесь двух языков - адаптированные слова, слова "как бы на русском", смесь этого всего, игра слов. А здесь возможность использовать графемы - наверное всё-таки жирный плюс (при желании тег языка можно на каждое слово отдельно прокидывать, если очень захотеть).

      Просто представьте себе пользователей, которым надо или гореть с ошибок фонемайзера на новых терминах, или использовать IPA, они скорее всего вскроются. А сделать отличный фонемайзер тут - ни разу не просто.


      1. asantat
        21.08.2024 03:18
        +2

        То есть это в некое "дополнение" к букве ҕ ?

        Нет, я писал именно об этой букве. Во всех тюркских языках, которые я слышал и в которых используется аффикс "-арга" для обозначения инфинитива, он произносится как [arγá].

        Так вроде IPA это же оно и есть.

        В работах, которые я встречал, использовались другие обозначения для гласных. Предполагаю, что это просто видение у разных авторов отличается.

        сделать отличный фонемайзер тут - ни разу не просто.

        Я думаю, что не нужен отличный. Он должен быть настроен на фонетическую систему языка. Учесть эти правила несложно. А качество возрастет. IMHO, нельзя давать на откуп black box то, что можно контролировать с помощью небольшого набора правил.

        юридически мы не имеем права выкладывать аудио дикторов в публичный доступ

        Можно взять аудиозапись из публичного доступа, и синтезировать этот же фрагмент речи. А можно попросить волонтеров озвучить абзац из Википедии на якутском, и его же озвучить с помощью модели. Такого сравнения очень не хватало.

        носители языка нам скорее всего тут особо не помогут, т.к. они просто говорят не задумываясь. Отсюда получаем замедление релиза на порядок, т.к. надо будет найти носителей языка, которые одновременно и лингвисты.

        Люди обычно говорят, не задумываясь. Но когда слышат неправильное произношение, сразу начинают чувсвовать, что что-то тут не то. И в итоге обращают внимание на некоторые из тех нюансо, о которых они не задумывались.

        Вами проделана огромная работа. Спасибо, что объяснили Ваши взгляды на разработку модели. Я с Вами согласен отчасти, некоторые вещи не пойму (как, например, зачем в модели синтеза речи на якутском языке настолько качественно реализовывать синтез реи на русском), с некоторыми вещами несогласен. Но уверен, что вы сделали взвешенный и адекватный выбор при поиске подхода. Желаю Вам удачи в развитии вашего проекта.


        1. snakers4 Автор
          21.08.2024 03:18
          +1

          как, например, зачем в модели синтеза речи на якутском языке настолько качественно реализовывать синтез реи на русском

          Ну потому что на практике зачастую не нужен только якутский язык, а нужно или говорить на двух языках попеременно, или вставлять русские слова в якутскую речь (и возможно наоборот).

          Статьи на Хабре хороший пример - они обычно это смесь русского текста, терминов на латинице и русификации или перевода устоявшихся терминов.


  1. einhorn
    21.08.2024 03:18
    +1

    Впереди нас ждёт ещё 8 языков, но там, к сожалению, так "просто" уже не будет ...

    Армянского там случайно не будет?
    Я ищу модельку для озвучки армянского (с целью аудиоподкрепления при изучении языка), и в опенсорсе вообще ничего нет.


    1. snakers4 Автор
      21.08.2024 03:18

      До армянского руки наверное дойдут только если какой-то заказчик этого сильно захочет, но он может также не захотеть, чтобы мы публиковали модель.

      Вообще с армянским насколько понимаю основная проблема будет не только в отсутствии материалов, но и в древности их алфавита. Обычно чем древнее письмо, тем оно "менее логичное".

      Зайцем проехать на фонетическом алфавите (который на 85% еще с русским совпадает) скорее всего не получится.


      1. einhorn
        21.08.2024 03:18
        +1

        Наоборот, получится.

        Алфавит древний, но современная орфография еще более фонетическая, чем русская. Там только нужно запомнить, что диграф ու - это у; ե, ո и և в начале слова произносятся по-другому; ну и есть редкие исключения. Ударение слабое и всегда на последний слог. В общем, рабочий переводчик текста в список фонем пишется элементарно.

        У меня была идея обучить легкую модель (список фонем -> аудио) для отдельных слов для одного языка [датасет можно с проприетарного TTS собрать, что не всегда легально, но для себя можно]. Я не очень знаю, как такие модели скейлятся, и сколько нужно компьюта.


        1. snakers4 Автор
          21.08.2024 03:18

          Там только нужно запомнить, что диграф ու - это у; ե, ո и և в начале слова произносятся по-другому; ну и есть редкие исключения. Ударение слабое и всегда на последний слог. В общем, рабочий переводчик текста в список фонем пишется элементарно.

          Повезло армянам =)


  1. A_kris7
    21.08.2024 03:18
    +1

    Ничего не понимаю в синтезе речи, но написано интересно и понятно не только для тех, кто в теме. Спасибо большое за легкую подачу информации))

    Правда, я бы не сказала, что по синтезу с акцентом сразу узнаю людей с основным языком - якутский. Слышала подобную речь от граждан ближнего зарубежья. Особенно мягкая г - зацепило когда-то.


  1. Chamie
    21.08.2024 03:18
    +3

    Про имена и названия в английском целая песня есть, раз уж вы и их как пример взяли.

    Скрытый текст

    На всякий случай, поясню: в руках у господина бумажки с написанием произносимых в песне названий мест и фамилий.


    1. snakers4 Автор
      21.08.2024 03:18
      +2

      Забыл под спойлер в статью ещё и это включить

      Скрытый текст