
Сравнение 10, 5 и 3 часов данных для обучения синтеза речи: у трёхъязычной TTS почти нет разницы
Продолжение модели синтеза речи на хорватском языке. На этот раз одну небольшую модель научили говорить на трёх языках: хорватском, японском и английском. После этого я сравнил, насколько различается результат при 10, 5 и 3 часах обучающих данных для каждого языка.
Сначала выводы.
- В конечном итоге разницы почти не было — ни при 10, ни при 5, ни при 3 часах данных на язык. Лучший показатель ошибок в тексте составил 0,7% во всех трёх случаях (28 из 32 предложений полностью совпали)
- Ход обучения тоже был почти одинаковым. Во всех вариантах японский и английский почти полностью читались по сценарию уже на 3 000–5 000 шагах, а хорватский — на 10 000 шагах
- Только в версии с 3 часами некоторое время сохранялась привычка ошибочно читать «Bok! (привет)» как «Blok». Ей потребовалось немного больше времени, чтобы прийти к наилучшему состоянию
- Разницы не появилось и в предложениях, переполненных специальными терминами. Я проверил это, предполагая, что вариант с 10 часами лучше справится со словарём, но все три дали почти одинаковый результат
- Ошибки в чтении специальных терминов у трёх моделей возникали на одних и тех же словах и одинаковым образом. В английском причина была не в модели, а в части, которая преобразует текст в фонетические символы (словаре)
Что было сделано
Модель: те же, что и в прошлый раз, Matcha-TTS (около 18,3 млн параметров) и Vocos (около 13,5 млн параметров), преобразующий результат обратно в волну. Говорящий — один мужчина около 20 лет.
Как реализованы три языка: входом модели стали общие для трёх языков фонетические символы (IPA). Одинаковые звуки в разных языках, такие как «ʦ» и «ʨ», используют один и тот же символ. Язык задаётся номером, который первоначально предназначался для переключения говорящих: он используется как «номер языка».
- Хорватский: язык читается почти так, как пишется, поэтому достаточно заменить буквы фонетическими символами один к одному
- Японский: с помощью OpenJTalk извлекались чтение и акцент, затем добавлялись отметки мест повышения и понижения высоты тона
- Английский: фонетические символы получались с помощью g2p_en (словаря произношений CMU и небольшой модели, предсказывающей произношение слов, которых нет в словаре)
Обучающие данные: записи голоса одного и того же мужчины, читающего реплики из диалогов на трёх языках. После сверки со сценарием с помощью распознавания речи и удаления ошибок чтения осталось 9,4 часа хорватского, 9,7 часа японского и 8,3 часа английского (всего около 27 часов). Это названо «10-часовой версией».
Затем из каждого языка случайно были выбраны ровно по 5 часов (всего 15 часов) — это «5-часовая версия», а по 3 часа (всего 9 часов, около 5 800 записей) — «3-часовая версия». Все остальные настройки (размер модели, размер батча, 60 000 шагов) были одинаковыми. Число шагов одинаково, поэтому при меньшем объёме данных одна и та же запись встречается многократно (в 3-часовой версии — примерно в 3 раза чаще, чем в 10-часовой).
Обучение на одной RTX 4090 занимало от 6 до 8,5 часов за запуск.
Сравнение голосов в ходе обучения
Следующие предложения, которых не было в обучающих данных, были синтезированы моделями на разных этапах обучения.
- Английский: Завтра мы поедем к морю, а послезавтра навестим мою бабушку в Сплите.
- Японский: Завтра я поеду к морю, а послезавтра планирую сходить в гости к бабушке.
- Хорватский: Завтра мы едем к морю, а послезавтра навестим бабушку в Сплите.
Слева направо: 10-часовая, 5-часовая и 3-часовая версии.
| Шаг | Версия на 10 часов | Версия на 5 часов | Версия на 3 часа |
|---|---|---|---|
| 1 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 2 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 3 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 4 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 5 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 10 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 20 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 30 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 40 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 50 000 | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
По впечатлению на слух, на 1 000 шагов все варианты всё ещё звучат неразборчиво. Но по-английски уже в целом понятно, что говорится. В японском между версиями была разница: в 5-часовой версии уже на 1 000-м шаге это предложение было распознано дословно и верно. В то же время в 10-часовой версии получилось «Пожалуйста, попробуйте позаботиться», а в 3-часовой — «В медике до завтра…» — то есть совершенно другие предложения.
На 3 000–5 000 шагах все версии начинают читать японский и английский строго по сценарию. Хорватский немного отстаёт: первое «Sutra(завтра)」до примерно 5 000–10 000 шагов всё ещё распознавалось как «Sve», «Straj», «Satra» и так далее. После 20 000 шагов на слух различия между тремя версиями были почти неразличимы.
В цифрах
Тестовые предложения (14 на хорватском, 9 на японском и 9 на английском, все отсутствовали в обучающих данных) были распознаны с помощью Whisper large-v3, после чего измерялась посимвольная частота ошибок (CER) относительно сценария. Японский перед сравнением переводился в чтение катаканой, чтобы вариации записи кандзи (например, «あさって» и «明後日») не считались ошибками.
Сначала среднее по всем 32 предложениям на трёх языках. В скобках — число полных совпадений.
| Шаги | 10-часовая версия | 5-часовая версия | 3-часовая версия |
|---|---|---|---|
| 1 000 | 43,8%(2) | 41,9%(2) | 43,8%(1) |
| 2 000 | 16,6%(7) | 17,7%(12) | 17,6%(9) |
| 3 000 | 7,7%(16) | 6,2%(16) | 9,9%(14) |
| 4 000 | 5,9%(21) | 3,7%(19) | 2,7%(25) |
| 5 000 | 2,1%(23) | 3,3%(20) | 4,5%(23) |
| 10 000 | 1,4%(24) | 1,1%(23) | 1,7%(24) |
| 15 000 | 0,8%(26) | 0,7%(26) | 2,0%(24) |
| 20 000 | 0,7%(27) | 0,8%(26) | 0,9%(25) |
| 30 000 | 0,7%(28) | 0,8%(26) | 1,7%(26) |
| 40 000 | 1,2%(25) | 1,7%(26) | 0,7%(26) |
| 45 000 | 3,9%(25) | 0,7%(28) | 0,7%(27) |
| 50 000 | 0,7%(28) | 0,7%(26) | 0,7%(28) |
| 60 000 | 1,8%(26) | 0,8%(27) | 1,9%(25) |
Если посмотреть по языкам, получится следующее (хорватский / японский / английский).
| Шаги | 10-часовая версия | 5-часовая версия | 3-часовая версия |
|---|---|---|---|
| 5 000 | 2,8 / 1,2 / 1,8% | 6,5 / 1,2 / 0,3% | 2,0 / 1,8 / 11,1% |
| 10 000 | 2,2 / 1,2 / 0,3% | 1,7 / 1,2 / 0,3% | 2,9 / 1,2 / 0,3% |
| 20 000 | 0,8 / 1,2 / 0,0% | 0,9 / 1,2 / 0,0% | 0,8 / 1,8 / 0,3% |
| 30 000 | 0,7 / 1,2 / 0,0% | 1,1 / 1,2 / 0,0% | 3,2 / 1,2 / 0,0% |
| 50 000 | 0,7 / 1,2 / 0,0% | 0,9 / 1,2 / 0,0% | 0,7 / 1,2 / 0,0% |
- Лучшие результаты: у 10-часовой версии — на 30 000 и 50 000 шагах, у 5-часовой — на 45 000 шагах, у 3-часовой — на 50 000 шагах. Во всех случаях общий показатель составил 0,7%, а 28 из 32 предложений полностью совпали — все три пришли к одному и тому же результату
- Места, где показатели подскакивают по ходу обучения, почти всегда связаны с разницей в одном слове. Например, «Bok!(привет)」распознаётся как «Bog», а «Hi!» — как «Bye.»: в коротких предложениях из 1–2 слов ошибка всего в одном символе сильно повышает частоту ошибок
- В 3-часовой версии на 15 000–35 000 шагах показатель для хорватского находится в районе 3%. Если посмотреть содержимое, почти всё приходится на одно предложение, где «Bok!» читается как «Blok». На 50 000 шагах это исправилось. По-видимому, при меньшем объёме данных требуется больше времени, чтобы избавиться от особенностей коротких предложений
- Японские 1,2% каждый раз объясняются лишь одним предложением: в «しーっ、静かに。» «しーっ» распознаётся как «し». Это вопрос того, насколько длинный звук записывается на письме: на слух модель правильно говорит «しーっ»
- Оставшиеся ошибки в хорватском почти все связаны с особенностями распознавания, например «prekosutra(послезавтра)」записывается как два слова — «preko sutra»
Разница между 10, 5 и 3 часами находилась в пределах погрешности. По крайней мере, для того, чтобы читать строго по сценарию, трёх часов на каждый язык оказалось достаточно. Однако 3-часовой версии потребовалось больше времени, чтобы стабилизироваться, поэтому лучше обучать её не менее 40 000 шагов.
Сравнение на предложениях, насыщенных специальной терминологией
Если для обычного разговора хватает и небольшого объёма данных, то, возможно, при сложных словах, почти не встречающихся в обучающих данных, большее количество данных даёт преимущество. Исходя из этого, были составлены 10 предложений с терминами из медицины, ИТ, права, химии, финансов и других областей, и модель прочитала их на трёх языках. Для всех моделей использовались варианты на 50 000 шагов.
- Поскольку есть подозрение на инфаркт миокарда, срочно подготовьте коронарную ангиографию и тромболитическую терапию.
- Мы подозреваем инфаркт миокарда, поэтому немедленно подготовьте коронарную ангиографию и тромболитическую терапию.
- Мы подозреваем инфаркт миокарда, поэтому немедленно подготовьте коронарную ангиографию и тромболитическую терапию.
- Этот алгоритм представляет собой структуру, сочетающую свёрточную нейронную сеть и рекуррентную сеть.
- Этот алгоритм сочетает свёрточную нейронную сеть с рекуррентной архитектурой.
- Этот алгоритм сочетает свёрточную нейронную сеть с рекуррентной архитектурой.
- Адвокат подсудимого потребовал оправдания в апелляционной инстанции, ссылаясь на незаконное получение доказательств.
- Адвокат подсудимого выступил за оправдание в апелляции, сославшись на незаконное получение доказательств.
- Защитник обвиняемого потребовал оправдательного приговора в апелляционном производстве из-за незаконно полученных доказательств.
- При фотосинтезе в тилакоидной мембране хлоропласта работает цепь переноса электронов, и синтезируется аденозинтрифосфат.
- При фотосинтезе цепь переноса электронов в тилакоидной мембране хлоропласта производит аденозинтрифосфат.
- При фотосинтезе цепь переноса электронов в тилакоидной мембране хлоропласта производит аденозинтрифосфат.
- Распределение криптографических ключей с использованием квантовой запутанности позволяет принципиально обнаружить любое прослушивание.
- Распределение квантовых ключей на основе запутанности в принципе может обнаружить любое прослушивание.
- Распределение квантовых ключей, основанное на запутанности, в принципе может обнаружить любое прослушивание.
- В ответ на рост инфляции центральный банк решил повысить ключевую ставку и начать количественное ужесточение.
- В ответ на рост инфляции центральный банк решил повысить процентные ставки и начать количественное ужесточение.
- Из-за роста инфляции центральный банк решил повысить процентные ставки и начать количественное ужесточение.
- Пациентам с остеоартритом коленного сустава назначают внутрисуставные инъекции гиалуроновой кислоты в сочетании с физиотерапией.
- Пациенты с остеоартритом коленного сустава получают внутрисуставные инъекции гиалуроновой кислоты в сочетании с физиотерапией.
- Пациенты с остеоартритом колена получают внутрисуставные инъекции гиалуроновой кислоты вместе с физиотерапией.
- В этом мосту железобетонная плита проезжей части опирается на балки из предварительно напряжённого бетона.
- Этот мост поддерживает железобетонную плиту проезжей части на балках из предварительно напряжённого бетона.
- Этот мост несёт железобетонную плиту на предварительно напряжённых бетонных балках.
- Криптовалютная биржа проверяет целостность распределённого реестра с помощью алгоритма достижения консенсуса.
- Криптовалютная биржа проверяет целостность своего распределённого реестра с помощью алгоритма консенсуса.
- Криптовалютная биржа проверяет целостность распределённой главной книги алгоритмом консенсуса.
- Чрезмерное применение антибиотиков приводит к появлению бактерий с множественной лекарственной устойчивостью и повышает риск внутрибольничных инфекций.
- Чрезмерное использование антибиотиков приводит к появлению бактерий с множественной лекарственной устойчивостью и повышает риск внутрибольничных инфекций.
- Чрезмерное применение антибиотиков приводит к появлению мультиустойчивых бактерий и повышает риск больничных инфекций.
| Предложение | Версия на 10 часов | Версия на 5 часов | Версия на 3 часа |
|---|---|---|---|
| 1. Есть подозрение на инфаркт миокарда, поэтому срочно подготовьте коронарную ангиографию и тромболитическую терапию. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 2. Этот алгоритм имеет структуру, объединяющую свёрточную нейронную сеть и рекуррентную сеть. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 3. Адвокат обвиняемого в апелляционном суде добивался оправдания на основании незаконного сбора доказательств. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 4. При фотосинтезе в тилакоидной мембране хлоропластов действует цепь переноса электронов, и синтезируется аденозинтрифосфат. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 5. Распределение криптографических ключей с использованием квантовой запутанности позволяет принципиально обнаруживать прослушивание. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 6. Центральный банк в связи с ростом инфляции принял решение повысить ключевую ставку и провести количественное ужесточение. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 7. Пациентам с остеоартрозом коленного сустава назначают сочетание внутрисуставных инъекций гиалуроновой кислоты и физиотерапии. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 8. В этом мосту железобетонная плита проезжей части опирается на балки из предварительно напряжённого бетона. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 9. Криптовалютная биржа проверяет целостность распределённого реестра с помощью алгоритма достижения консенсуса. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
| 10. Чрезмерное применение антибиотиков приводит к появлению бактерий с множественной лекарственной устойчивостью и повышает риск внутрибольничных инфекций. | Английский Японский Хорватский | Английский Японский Хорватский | Английский Японский Хорватский |
Результаты.
| Хорватский | Японский | Английский | Полное совпадение из 30 предложений | |
|---|---|---|---|---|
| Версия на 10 часов | 0,6% | 1,5% | 4,6% | 17 |
| Версия на 5 часов | 0,3% | 1,0% | 3,9% | 20 |
| Версия на 3 часа | 0,5% | 1,0% | 4,1% | 18 |
Не получилось так, что версия на 10 часов оказалась сильнее. Все три примерно одинаковы, а версия на 5 часов даже немного лучше. На всякий случай я также измерил версии на 10 и 5 часов на моделях с 60 000 шагов: у 10-часовой версии получилось 1,9%, а у 5-часовой — 2,0%, то есть результат поменялся местами. Иными словами, эта разница — случайное колебание, и нельзя сказать, какая из них лучше. Только для 3-часовой версии синтез и расшифровка выполнялись на CPU, потому что GPU был занят другой задачей. Поэтому условия немного отличаются.
Интересным оказалось содержание ошибок.
- Английское «cryptocurrency» во всех трёх моделях распознавалось как нечто вроде «Kripke-Kunershi», «Kripke-Kinoshi» или «Kripik-Innershi»
- «intra-articular», «multidrug-resistant» и «angiography» тоже все три модели искажали одинаковым образом
- Японское «冠動脈造影» все три расшифровывали как «〜増え», а «床版» — как «障板»
- Хорватское «pooštravanje (ужесточение)» все модели распознавали как «poštravanje»
Модели с разным объёмом данных одинаково ошибаются на одних и тех же словах. Для английского причина ясна: дело не в модели, а в части, преобразующей текст в фонетическую транскрипцию.
В этой модели текст читается не напрямую, а через фонетическую транскрипцию. В английском произношение слов, которых нет в словаре, предполагает g2p_en. При проверке выяснилось, что «cryptocurrency» преобразуется в фонетическую транскрипцию, близкую к произношению «крипакьюнарши», а «angiography» — в транскрипцию со вставленным в середине n. Модель лишь озвучивает переданную ей фонетическую транскрипцию, поэтому она ошибается в одних и тех же местах независимо от того, было в обучающих данных 10 часов или 3.
С японским ситуация немного иная. Чтения OpenJTalk для «床版(ショーバン)」 и «冠動脈造影(カンドーミャクゾーエー)」 были правильными. «床版» стало «障板» — это другие иероглифы с тем же чтением, так что с точки зрения произношения всё верно. Нельзя определить по методу измерения в этом эксперименте, стало ли «造影» словом «増え» потому, что Whisper подогнал редкое слово под привычное, или потому, что модель произносит его недостаточно чётко. Однако и здесь все три модели ошибались одинаково.
То есть в этой системе, по крайней мере устойчивость к английской специальной терминологии определяется не объёмом обучающих данных, а словарём произношений. Если хочется лучше работать со специальными терминами, быстрее добавить слова в словарь, чем увеличивать объём данных.
Итоги
- Мне удалось заставить один небольшой модельный блок (всего около 32 миллионов параметров) говорить на трёх языках
- Обучающие данные — по 10, 5 или 3 часа на каждый язык — в итоге дали почти одинаковую точность чтения. Версии на 3 часа требуется немного больше времени, чтобы стабилизироваться
- Даже на специальной терминологии разницы не было. Ошибки возникают на стороне словаря произношений, и объёмом данных их не исправить
Создание данных требует времени и денег, поэтому, похоже, разумно сначала сделать по 3 часа на каждый язык, а затем добавлять данные, если их окажется недостаточно. Далее я планирую, опираясь на эти результаты, увеличить число языков до десяти. Однако в этот раз измерялось только то, «что говорится». В аспектах, которые нельзя измерить частотой ошибок в тексте, — например, естественности голоса или диапазоне эмоций — большее количество данных может давать преимущество. Это хочется проверить на слух.



