Синтез речи — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Мелкие исправления, упрощены некоторые разделы, добавлена информация про оценки качества)
м (rollbackEdits.php mass rollback)
 
(не показано 8 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{В разработке}}[[Категория:Машинное обучение]]
+
[[Категория:Машинное обучение]] [[Категория: Обработка естественного языка]]
 
'''Синтез речи''' (англ. speech synthesis) {{---}} процесс генерации компьютером человеческой речи. Компьютерная система, способная к синтезу речи, называется речевым синтезатором.
 
'''Синтез речи''' (англ. speech synthesis) {{---}} процесс генерации компьютером человеческой речи. Компьютерная система, способная к синтезу речи, называется речевым синтезатором.
 
Система, генерирующая человеческую речь, основываясь на тексте, называется '''text-to-speech''' системой (сокр. TTS).
 
Система, генерирующая человеческую речь, основываясь на тексте, называется '''text-to-speech''' системой (сокр. TTS).
Строка 29: Строка 29:
 
<math> f^{-1}(y_t) = sign(y_t)(1/\mu)((1+\mu)^{|y_t|}-1), -1 < y_t < 1</math>.
 
<math> f^{-1}(y_t) = sign(y_t)(1/\mu)((1+\mu)^{|y_t|}-1), -1 < y_t < 1</math>.
  
В качестве представления звукового сигнала может выступать [https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0/ спектрограмма волны] - изображение, показывающее зависимость спектральной плотности мощности сигнала от времени. Спектрограммы отображают частоту и амплитуду сигнала во времени, но не содержат никакой информации о фазе сигнала, из-за чего результат обратного восстановления сигнала по спектрограмме неизбежно отличается от оригинала. Цифровая генерация спектрограммы сигнала <math>s(t)</math> сводится к вычислению квадрата амплитуды [https://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5/ оконного преобразования Фурье]:
+
В качестве представления звукового сигнала может выступать [https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0/ спектрограмма волны] {{---}} изображение, показывающее зависимость спектральной плотности мощности сигнала от времени. Спектрограммы отображают частоту и амплитуду сигнала во времени, но не содержат никакой информации о фазе сигнала, из-за чего результат обратного восстановления сигнала по спектрограмме неизбежно отличается от оригинала. Цифровая генерация спектрограммы сигнала <math>s(t)</math> сводится к вычислению квадрата амплитуды [https://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5/ оконного преобразования Фурье]:
  
 
<math>spectrogram(t, w) = |STFT(t, w)|^2</math>,
 
<math>spectrogram(t, w) = |STFT(t, w)|^2</math>,
Строка 54: Строка 54:
 
В начале работы параметрического синтезатора с помощью вокодера извлекаются параметры
 
В начале работы параметрического синтезатора с помощью вокодера извлекаются параметры
 
<math>\textbf{o} = \{o_1, \dots, o_N\}</math> звуковой волны и лингвистические данные <math>l</math> из текста, который необходимо озвучить. Конкретный вид вектора <math>\textbf{o}</math> зависит от используемого вокодера {{---}} это может быть как спектрограмма волны, так и некоторое другое представление сигнала, например, дискретные номера интервалов числовой прямой, получаемые с помощью мю-закона. Затем, [[Порождающие модели|порождающая модель]], например, [[Марковская цепь|скрытая марковская цепь]],
 
<math>\textbf{o} = \{o_1, \dots, o_N\}</math> звуковой волны и лингвистические данные <math>l</math> из текста, который необходимо озвучить. Конкретный вид вектора <math>\textbf{o}</math> зависит от используемого вокодера {{---}} это может быть как спектрограмма волны, так и некоторое другое представление сигнала, например, дискретные номера интервалов числовой прямой, получаемые с помощью мю-закона. Затем, [[Порождающие модели|порождающая модель]], например, [[Марковская цепь|скрытая марковская цепь]],
[[Нейронные сети, перцептрон#Сети прямого распространения|нейронная сеть прямого распространения]] или [[Рекуррентные нейронные сети|рекуррентная нейронная сеть]], обучается по выделенным параметрам <math>\textbf{o}</math> и <math>l</math>, получая параметры модели <math>\hat{\Lambda}</math> как:
+
[[Нейронные сети, перцептрон#Сети прямого распространения|нейронная сеть прямого распространения]] или [[Рекуррентные нейронные сети|рекуррентная нейронная сеть]], обучается по выделенным параметрам <math>\textbf{o}</math> и <math>l</math>, получая параметры модели <math>\hat{\Lambda}</math>, наиболее хорошо описывающие распределение <math>p(o|l, \Lambda)</math>. На этапе синтеза, модель генерирует наиболее правдоподобные параметры звуковой волны, используя найденные на этапе обучения параметры модели <math>\hat{\Lambda}</math> и лингвистическую информацию <math>l</math> текста, который необходимо озвучить:
 
 
<math>\hat{\Lambda} = \arg\max\limits_{\Lambda}p(\textbf{o} | l, \Lambda)</math>.
 
 
 
На этапе синтеза, модель генерирует наиболее правдоподобные параметры звуковой волны, используя найденные на этапе обучения параметры модели <math>\hat{\Lambda}</math> и лингвистическую информацию <math>l</math> текста, который необходимо озвучить:
 
  
 
<math>\hat{\textbf{o}} = \arg\max\limits_{\textbf{o}}p(\textbf{o} | l, \hat{\Lambda})</math>.
 
<math>\hat{\textbf{o}} = \arg\max\limits_{\textbf{o}}p(\textbf{o} | l, \hat{\Lambda})</math>.
  
Выходная звуковая волна моделируется с помощью вокодера и найденных параметров <math>\hat{\textbf{o}}</math>.
+
Выходная звуковая волна генерируется вокодером на основе найденных параметров <math>\hat{\textbf{o}}</math>.
  
 
Данный подход является самым популярным на сегодняшний момент, в том числе из-за того, что он позволяет использовать подходы, основанные на нейронных сетях. Современными продуктами, использующие основанный на глубоком обучении параметрический синтез являются Amazon Lex и Alexa <ref>[https://www.allthingsdistributed.com/2016/11/amazon-ai-and-alexa-for-all-aws-apps.html Bringing the Magic of Amazon AI and Alexa to Apps on AWS.] </ref>, Google Ассистент <ref name="cnet wavenet">Martin, Taylor (May 9, 2018).[https://www.cnet.com/how-to/how-to-get-all-google-assistants-new-voices-right-now/  "Try the all-new Google Assistant voices right now"]. CNET.</ref> и умные дисплеи Portal от Facebook <ref>[https://venturebeat.com/2020/05/15/facebooks-voice-synthesis-ai-generates-speech-in-500-milliseconds/ Facebook’s voice synthesis AI generates speech in 500 milliseconds.]</ref>.
 
Данный подход является самым популярным на сегодняшний момент, в том числе из-за того, что он позволяет использовать подходы, основанные на нейронных сетях. Современными продуктами, использующие основанный на глубоком обучении параметрический синтез являются Amazon Lex и Alexa <ref>[https://www.allthingsdistributed.com/2016/11/amazon-ai-and-alexa-for-all-aws-apps.html Bringing the Magic of Amazon AI and Alexa to Apps on AWS.] </ref>, Google Ассистент <ref name="cnet wavenet">Martin, Taylor (May 9, 2018).[https://www.cnet.com/how-to/how-to-get-all-google-assistants-new-voices-right-now/  "Try the all-new Google Assistant voices right now"]. CNET.</ref> и умные дисплеи Portal от Facebook <ref>[https://venturebeat.com/2020/05/15/facebooks-voice-synthesis-ai-generates-speech-in-500-milliseconds/ Facebook’s voice synthesis AI generates speech in 500 milliseconds.]</ref>.
 
== Алгоритмы, основанные на нейронных сетях ==
 
== Алгоритмы, основанные на нейронных сетях ==
 +
Рассмотрим две популярные сети для преобразования текста в спектрограмму (Tacotron) и для синтеза речи по спектрограмме (WaveNet).
 +
Для синтеза речи по спектрограмме предложено множество моделей: авторегрессионныее (WaveNet, WaveRNN, LPCNet), неавторегресионные (WaveGlow, MelGAN, WaveGrad) и разнообразные (например, можно натренировать сети GAN для генерации лиц под задачу генерации спектрограммы).
 +
 +
=== Tacotron ===
 +
[[Файл:Tacotron.PNG|thumb|300px| Рисунок 1 — строение модели Tacotron<ref name="tacotron">Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. [https://arxiv.org/abs/1703.10135/ arXiv:1703.10135]</ref>]]
 +
[[Файл:Tacotron-cbhg.PNG|thumb|300px| Рисунок 2 —строение модуля CBHG модели Tacotron<ref name="tacotron">Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. [https://arxiv.org/abs/1703.10135/ arXiv:1703.10135]</ref>]]
 +
Tacotron {{---}} модель<ref name="tacotron">Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. [https://arxiv.org/abs/1703.10135/ arXiv:1703.10135]</ref> параметрического синтеза речи, основанная на подходе [[Механизм внимания | seq2seq]], разработанная Google и опубликованная в 2017 году. Модель состоит из кодера, декодера с [[Механизм внимания | вниманием]] и нейронной сети для
 +
пост-процессинга сигнала. Схема модели изображена на Рисунке 1.
 +
 +
Кодер и сеть пост-процессинга опираются на блок CBHG, схема которого изображена на Рисунке 2. Блок состоит из набора одномерных сверточных фильтров, за которыми следуют
 +
шоссейные нейронные сети (англ. highway networks)<ref>Rupesh Kumar Srivastava, Klaus Greff, and J ̈urgen Schmidhuber. Highway networks. [https://arxiv.org/abs/1505.00387/ arXiv:1505.00387], 2015.</ref>, являющиеся модификацией [[Долгая краткосрочная память | LSTM сетей]], и двунаправленный [[Долгая краткосрочная память#Управляемые рекуррентные нейроны | управляемый рекуррентный блок]]. Входная последовательность сначала обрабатывается <math>K</math>
 +
наборами сверточных фильтров с размерностью <math>1, 2, \dots, K</math>. Эти фильтры моделируют локальную и контекстно-зависимую информацию (по аналогии с моделированием униграмм,
 +
биграмм, вплоть до <math>K</math>-грамм). Выход сверточного уровня далее обрабатывается шоссейной сетью для дальнейшего выделения параметров. В конце CBHG
 +
используется управляемый рекуррентный блок, который для выделения параметров опирается на контекст перед рассматриваемым символом и после рассматриваемого символа.
 +
 +
Задача кодера заключается в извлечении последовательных параметров из текста. Его входом является последовательность символов, в которой каждый символ был закодирован one-hot
 +
кодированием и объединен в единый непрерывный вектор. К данному входу применяется ряд нелинейных преобразований в виде сети с бутылочным горлышком (англ. bottleneck layer), что позволяет улучшить
 +
обобщаемость сети и ускорить сходимость. Модуль CBHG преобразует выход нелинейных преобразований в итоговое представление текста, которая передается в декодер.
 +
 +
Декодер является рекуррентной нейронной сетью с вниманием, в которой запрос внимания генерируется каждый временной промежуток. Вектор контекста соединяется с выходом ячейки внимания
 +
и подается на вход декодирующим рекуррентным нейронным сетям, которые являются управляемыми рекуррентными блоками. Выходом декодера является спектрограмма звуковой волны, которая
 +
передается сети пост-обработки для генерации непосредственно звуковой волны.
 +
 +
В качестве сети пост-обработки используется модуль CBHG, описанный ранее. После этого спектрограмма звуковой волны передается на вход [[Синтез речи#Генерация звуковой волны | алгоритму Гриффина-Лима]], который генерирует итоговую звуковую волну.
 +
 +
Модель Tacotron была значительно улучшена в последующей модификации Tacotron 2 <ref>Jonathan Shen, Ruoming Pang, Ron J. Weiss, Mike Schuster, Navdeep Jaitly, Zongheng Yang, Zhifeng Chen, Yu Zhang, Yuxuan Wang, RJ Skerry-Ryan, Rif A. Saurous, Yannis Agiomyrgiannakis, & Yonghui Wu. (2018). Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions. [https://arxiv.org/abs/1712.05884  arXiv:1712.05884].</ref>, которая переработала исходную архитектуру Tacotron и объединила её с вокодером на основе WaveNet. Данная модель способна синтезировать речь высокого качества, принимая на вход только текст, который необходимо озвучить<ref name="tacotron2">[https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html/ Tacotron 2: Generating Human-like Speech from Text]</ref>. Реализация данной модели доступна на [https://github.com/NVIDIA/tacotron2 Github].
 +
 
=== WaveNet ===
 
=== WaveNet ===
 
WaveNet<ref name="wavenet">Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. [https://arxiv.org/abs/1609.03499/ arXiv:1609.03499]</ref> является [[Порождающие модели | порождающей моделью]], использующей параметрический подход к синтезу речи. Её задача {{---}} восстановить распределение вероятностей звукового сигнала
 
WaveNet<ref name="wavenet">Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. [https://arxiv.org/abs/1609.03499/ arXiv:1609.03499]</ref> является [[Порождающие модели | порождающей моделью]], использующей параметрический подход к синтезу речи. Её задача {{---}} восстановить распределение вероятностей звукового сигнала
Строка 72: Строка 95:
 
<math>p(\textbf{x})=\prod\limits_{t=1}^{T} p(x_t | x_1, x_2, \dots, x_{t-1})</math>.
 
<math>p(\textbf{x})=\prod\limits_{t=1}^{T} p(x_t | x_1, x_2, \dots, x_{t-1})</math>.
  
Таким образом, вероятность каждого сигнала <math>x_t</math> зависит от вероятностей предыдущих сигналов. Во время обучения модель оценивает данное условное распределение вероятностей, принимая на вход сигналы из обучающей выборки одновременно. На этапе генерации модель порождает выходные сигналы с помощью полученной оценки распределения вероятности последовательно {{---}} полученный моделью сигнал в момент времени <math>t</math> подается обратно на вход для генерации последующего сигнала в момент времени <math>t+1</math>. Структура модели позволяет использовать её в широком спектре задач, например, в задачах продолжения музыкального произведения по его началу, порождения голоса конкретного человека или text-to-speech синтеза.
+
Таким образом, вероятность каждого сигнала <math>x_t</math> зависит только от предыдущих сигналов. Во время обучения модель оценивает данное условное распределение вероятностей, принимая на вход сигналы из обучающей выборки одновременно. На этапе генерации модель порождает выходные сигналы с помощью полученной оценки распределения вероятности последовательно {{---}} полученный моделью сигнал в момент времени <math>t</math> подается обратно на вход для генерации последующего сигнала в момент времени <math>t+1</math>. Структура модели позволяет использовать её в широком спектре задач, например, в задачах продолжения музыкального произведения по его началу, порождения голоса конкретного человека или text-to-speech синтеза.
  
Основной идеей модели является использование причинных сверточных сетей (англ. causal convolution layers) и [[Сверточные нейронные сети#Расширенная свертка (aнгл. Dilated convolution) | расширенных ]] причинных сверточных сетей (англю dilated causal convolution layers).
+
Основной идеей модели является использование причинных сверточных сетей (англ. causal convolution layers) и [[Сверточные нейронные сети#Расширенная свертка (aнгл. Dilated convolution) | расширенных ]] причинных сверточных сетей (англ. dilated causal convolution layers).
 
Причинная сверточная сеть представляет собой несколько уровней сверточной нейронной сети, связанных между собой в порядке, который не нарушает последовательность
 
Причинная сверточная сеть представляет собой несколько уровней сверточной нейронной сети, связанных между собой в порядке, который не нарушает последовательность
входного сигнала, т.е. оцениваемая в момент времени <math>t+1</math> вероятность сигнала <math>p(x_{t+1} | x_1, x_2, \dots, x_t)</math> не зависит от сигналов
+
входного сигнала, т.е. оцениваемая в момент времени <math>t+1</math> вероятность сигнала <math>p(x_{t+1} | x_1, x_2, \dots, x_t)</math> не зависит от сигналов в последующие моменты времени <math>t+2, t+3, \dots, T</math>. Причинные сверточные сети обучаются быстрее, чем [[Рекуррентные нейронные сети | рекуррентные нейронные сети]], но требуют достаточно большого количества уровней для обеспечивания большого окна восприятия сигнала (англ. signal reception window) {{---}} количество предыдущих сигналов, от которых зависит оценка сигнала в текущий момент.
в последующие моменты времени <math>t+2, t+3, \dots, T</math>. Причинные сверточные сети обучаются
 
быстрее, чем [[Рекуррентные нейронные сети | рекуррентные нейронные сети]], но требуют достаточно большого количества уровней для обеспечивания большого окна восприятия сигнала (англ. signal reception window) {{---}} количество предыдущих сигналов, от которых зависит оценка сигнала в текущий момент.
 
  
[[Файл:dilated-causal-convolutions.png|thumb|300px| Рисунок 1 —  строение причинной сверточной сети (сверху) и расширенной причинной сверточной сети (снизу)<ref name="wavenet">Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. [https://arxiv.org/abs/1609.03499/ arXiv:1609.03499]</ref>]]
+
[[Файл:dilated-causal-convolutions.png|thumb|300px| Рисунок 3 —  строение причинной сверточной сети (сверху) и расширенной причинной сверточной сети (снизу)<ref name="wavenet">Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. [https://arxiv.org/abs/1609.03499/ arXiv:1609.03499]</ref>]]
 
Модификация причинных сверточных сетей, расширенные причинные сверточные сети, способна увеличить окно восприятия сигнала в разы и является основной идеей модели WaveNet.
 
Модификация причинных сверточных сетей, расширенные причинные сверточные сети, способна увеличить окно восприятия сигнала в разы и является основной идеей модели WaveNet.
 
Модификация заключается в применении свертки к области размерности большей, чем её длина, пропуская входные связи с некоторым шагом. Данный подход аналогичен применению пулинга или свертки с шагом большим единицы, но выходом расширенной причинной сверточной сети является последовательность размерности, равной размерности входной последовательности. Расширенные причинные сверточные сети способны достигать большего окна
 
Модификация заключается в применении свертки к области размерности большей, чем её длина, пропуская входные связи с некоторым шагом. Данный подход аналогичен применению пулинга или свертки с шагом большим единицы, но выходом расширенной причинной сверточной сети является последовательность размерности, равной размерности входной последовательности. Расширенные причинные сверточные сети способны достигать большего окна
восприятия сигнала, используя меньшее количество уровней, при этом сохраняя вычислительную сложность причинных сверточных сетей. Структура причинных сверточных сетей изображена на Рисунке 1.
+
восприятия сигнала, используя меньшее количество уровней, при этом сохраняя вычислительную сложность причинных сверточных сетей. Структура причинных сверточных сетей изображена на Рисунке 3.
  
[[Файл:wavenet.png|thumb|300px| Рисунок 2 —  строение модели WaveNet <ref name="wavenet">Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. [https://arxiv.org/abs/1609.03499/ arXiv:1609.03499]</ref>]]
+
[[Файл:wavenet.png|thumb|300px| Рисунок 4 —  строение модели WaveNet <ref name="wavenet">Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. [https://arxiv.org/abs/1609.03499/ arXiv:1609.03499]</ref>]]
Полная структура модели WaveNet изображена на Рисунке 2. В качестве вокодера используется [[Синтез речи#Генерация звуковой волны | мю-закон]].
+
Полная структура модели WaveNet изображена на Рисунке 4. В качестве вокодера используется [[Синтез речи#Генерация звуковой волны | мю-закон]].
 
Модель представляет собой множество слоев сверточной нейронной сети, аналогично модели [[PixelRNN_и_PixelCNN | PixelCNN]].
 
Модель представляет собой множество слоев сверточной нейронной сети, аналогично модели [[PixelRNN_и_PixelCNN | PixelCNN]].
 
Модель на вход принимает закодированную мю-законом последовательность сигналов <math>\textbf{x}</math> и, опционально, некоторую дополнительную информацию, обозначаемую как вектор параметров <math>h</math>, а на выходе возвращает распределение вероятностей для параметров мю-закона, по которым можно восстановить синтезированный сигнал. На этапе обучения входным сигналом <math>\textbf{x}</math> является пример звука из обучающей выборки, который подается на все входы одновременно. На этапе генерации входом модели <math>\textbf{x}</math> будут являться сигналы, порожденные ею в предыдущие моменты времени и передаваемые ей последовательно. Дополнительная информация <math>h</math>, например, может содержать информацию о рассматриваемом тексте в задаче text-to-speech синтеза.  
 
Модель на вход принимает закодированную мю-законом последовательность сигналов <math>\textbf{x}</math> и, опционально, некоторую дополнительную информацию, обозначаемую как вектор параметров <math>h</math>, а на выходе возвращает распределение вероятностей для параметров мю-закона, по которым можно восстановить синтезированный сигнал. На этапе обучения входным сигналом <math>\textbf{x}</math> является пример звука из обучающей выборки, который подается на все входы одновременно. На этапе генерации входом модели <math>\textbf{x}</math> будут являться сигналы, порожденные ею в предыдущие моменты времени и передаваемые ей последовательно. Дополнительная информация <math>h</math>, например, может содержать информацию о рассматриваемом тексте в задаче text-to-speech синтеза.  
Строка 109: Строка 130:
 
Самый известный пример применения WaveNet для синтеза речи является  технология Google Ассистент, которая использует WaveNet для генерации голосов ассистентов на различных
 
Самый известный пример применения WaveNet для синтеза речи является  технология Google Ассистент, которая использует WaveNet для генерации голосов ассистентов на различных
 
языках. Модель позволила значительно сократить количество записей речи актеров озвучки, требуемых для создания голосовой модели<ref name="cnet wavenet">Martin, Taylor (May 9, 2018).[https://www.cnet.com/how-to/how-to-get-all-google-assistants-new-voices-right-now/  "Try the all-new Google Assistant voices right now"]. CNET.</ref>.
 
языках. Модель позволила значительно сократить количество записей речи актеров озвучки, требуемых для создания голосовой модели<ref name="cnet wavenet">Martin, Taylor (May 9, 2018).[https://www.cnet.com/how-to/how-to-get-all-google-assistants-new-voices-right-now/  "Try the all-new Google Assistant voices right now"]. CNET.</ref>.
=== Tacotron ===
 
[[Файл:Tacotron.PNG|thumb|300px| Рисунок 3 — строение модели Tacotron<ref name="tacotron">Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. [https://arxiv.org/abs/1703.10135/ arXiv:1703.10135]</ref>]]
 
[[Файл:Tacotron-cbhg.PNG|thumb|300px| Рисунок 4 —строение модуля CBHG модели Tacotron<ref name="tacotron">Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. [https://arxiv.org/abs/1703.10135/ arXiv:1703.10135]</ref>]]
 
Tacotron {{---}} модель<ref name="tacotron">Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. [https://arxiv.org/abs/1703.10135/ arXiv:1703.10135]</ref> параметрического синтеза речи, основанная на подходе [[Механизм внимания | seq2seq]], разработанная Google и опубликованная в 2017 году. Модель состоит из кодера, декодера с [[Механизм внимания | вниманием]] и нейронной сети для
 
пост-процессинга сигнала. Схема модели изображена на Рисунке 2.
 
 
Кодер и сеть пост-процессинга опираются на блок CBHG, схема которого изображена на Рисунке 3. Блок состоит из набора одномерных сверточных фильтров, за которыми следуют
 
шоссейные нейронные сети (англ. highway networks)<ref>Rupesh Kumar Srivastava, Klaus Greff, and J ̈urgen Schmidhuber. Highway networks. [https://arxiv.org/abs/1505.00387/ arXiv:1505.00387], 2015.</ref>, являющиеся модификацией [[Долгая краткосрочная память | LSTM сетей]], и двунаправленный [[Долгая краткосрочная память#Управляемые рекуррентные нейроны | управляемый рекуррентный блок]]. Входная последовательность сначала обрабатывается <math>K</math>
 
наборами сверточных фильтров с размерностью <math>1, 2, \dots, K</math>. Эти фильтры моделируют локальную и контекстно-зависимую информацию (по аналогии с моделированием униграмм,
 
биграмм, вплоть до <math>K</math>-грамм). Выход сверточного уровня далее обрабатывается шоссейной сетью для дальнейшего выделения параметров. В конце CBHG
 
используется управляемый рекуррентный блок, который для выделения параметров опирается на контекст перед рассматриваемым символом и после рассматриваемого символа.
 
 
Задача кодера заключается в извлечении последовательных параметров из текста. Его входом является последовательность символов, в которой каждый символ был закодирован one-hot
 
кодированием и объединен в единый непрерывный вектор. К данному входу применяется ряд нелинейных преобразований в виде сети с бутылочным горлышком (англ. bottleneck layer), что позволяет улучшить
 
обобщаемость сети и ускорить сходимость. Модуль CBHG преобразует выход нелинейных преобразований в итоговое представление текста, которая передается в декодер.
 
 
Декодер является рекуррентной нейронной сетью с вниманием, в которой запрос внимания генерируется каждый временной промежуток. Вектор контекста соединяется с выходом ячейки внимания
 
и подается на вход декодирующим рекуррентным нейронным сетям, которые являются управляемыми рекуррентными блоками. Выходом декодера является спектрограмма звуковой волны, которая
 
передается сети пост-обработки для генерации непосредственно звуковой волны.
 
 
В качестве сети пост-обработки используется модуль CBHG, описанный ранее. После этого спектрограмма звуковой волны передается на вход [[Синтез речи#Генерация звуковой волны | алгоритму Гриффина-Лима]], который генерирует итоговую звуковую волну.
 
 
Модель Tacotron была значительно улучшена в последующей модификации Tacotron 2 <ref>Jonathan Shen, Ruoming Pang, Ron J. Weiss, Mike Schuster, Navdeep Jaitly, Zongheng Yang, Zhifeng Chen, Yu Zhang, Yuxuan Wang, RJ Skerry-Ryan, Rif A. Saurous, Yannis Agiomyrgiannakis, & Yonghui Wu. (2018). Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions. [https://arxiv.org/abs/1712.05884  arXiv:1712.05884].</ref>, которая переработала исходную архитектуру Tacotron и объединила её с вокодером на основе WaveNet. Данная модель способна синтезировать речь высокого качества, принимая на вход только текст, который необходимо озвучить<ref name="tacotron2">[https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html/ Tacotron 2: Generating Human-like Speech from Text]</ref>.
 
  
 
== Проблемы ==
 
== Проблемы ==
=== Задача обработки текста ===  
+
===Задача обработки текста===
 
Алгоритмы обработки текста могут не справляться с обработкой определенных частей речи, таких, как аббревиатуры, числа и гетеронимы. Произношение определенных слов также зависит от контекста их применения. Большинство систем синтеза речи по тексту не способны выделять контекст предложений и используют различные эвристические подходы с целью различить омографы (слова с одинаковым написанием, но различным произношением).
 
Алгоритмы обработки текста могут не справляться с обработкой определенных частей речи, таких, как аббревиатуры, числа и гетеронимы. Произношение определенных слов также зависит от контекста их применения. Большинство систем синтеза речи по тексту не способны выделять контекст предложений и используют различные эвристические подходы с целью различить омографы (слова с одинаковым написанием, но различным произношением).
=== Преобразование текста в фонемы ===
+
===Преобразование текста в фонемы===
 
Процесс преобразования текста в фонемы обычно подразделяется на два подхода {{---}} словарный и основанный на правилах. Словарный подход использует словарь с записанными фонетическими представлениями слов и в процессе работы производит поиск в нем с целью конвертации слова в последовательность фонем. Основанный на правилах подход использует набор правил, которые применяются к словам или частям слов с целью выделения фонем. Оба эти подхода имеют существенные недостатки и требуют усовершенствования.
 
Процесс преобразования текста в фонемы обычно подразделяется на два подхода {{---}} словарный и основанный на правилах. Словарный подход использует словарь с записанными фонетическими представлениями слов и в процессе работы производит поиск в нем с целью конвертации слова в последовательность фонем. Основанный на правилах подход использует набор правил, которые применяются к словам или частям слов с целью выделения фонем. Оба эти подхода имеют существенные недостатки и требуют усовершенствования.
 +
=== Мультиязычный синтез ===
 +
Работает, но интересная задача генерации данного голоса на другом языке.
 +
=== Несколько голосов ===
 +
Сеть перепрыгивает между голосами в середине слова.
 +
=== Синтез в стиле ===
 +
Сейчас реализовано с помощью вариационных автоэнкодеров. Требуется пример для стиля. 
 +
=== Выразительный синтез ===
 +
Непонятно, что речь должна отмечать выражением.
 
=== Оценка качества ===
 
=== Оценка качества ===
 
На данный момент не существует единых критериев оценки качества синтезаторов речи. В каждом отдельном применении технологии синтеза речи могут быть в том числе свои критерии качества, связанные с предметной областью или используемым оборудованием. С другой стороны, ряд исследователей начали оценивать синтезаторы речи используя распространенные наборы данных для синтеза речи <ref>[http://festvox.org/blizzard/ Blizzard Challenge]</ref>.
 
На данный момент не существует единых критериев оценки качества синтезаторов речи. В каждом отдельном применении технологии синтеза речи могут быть в том числе свои критерии качества, связанные с предметной областью или используемым оборудованием. С другой стороны, ряд исследователей начали оценивать синтезаторы речи используя распространенные наборы данных для синтеза речи <ref>[http://festvox.org/blizzard/ Blizzard Challenge]</ref>.
Строка 144: Строка 150:
  
 
Модели WaveNet, Tacotron и Tacotron 2 использовали среднюю оценку мнения для сравнения своей работы с естественным языком и другими подходами. Например, WaveNet достиг оценки 4.21 и 4.08 для американского варианта английского и путунхуа, по сравнению с оценками естественного языка 4.46 и 4.25 соответственно. Работа, описывающая модель Tacotron, сравнивала модель с другими разрабатываемыми подходами<ref>Heiga Zen, Yannis Agiomyrgiannakis, Niels Egberts, Fergus Henderson, and Przemysław Szczepa-niak. Fast, compact, and high quality LSTM-RNN based statistical parametric speech synthesizersfor mobile devices.Proceedings Interspeech, 2016</ref><ref>Junyoung Chung, Caglar Gulcehre, KyungHyun Cho, and Yoshua Bengio.  Empirical evaluation ofgated recurrent neural networks on sequence modeling. [https://arxiv.org/abs/1412/3555 arXiv:1412.3555], 2014.</ref>. Tacotron смог достичь оценки в 3.82 балла для американского варианта английского, когда параметрический подход достиг 3.69, а конкатенативный - 4.09. Tacotron 2 смог достичь оценки в 4.52 балла по сравнению с оценкой записанной речи в 4.58 балла<ref name="tacotron2">[https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html/ Tacotron 2: Generating Human-like Speech from Text]</ref>.
 
Модели WaveNet, Tacotron и Tacotron 2 использовали среднюю оценку мнения для сравнения своей работы с естественным языком и другими подходами. Например, WaveNet достиг оценки 4.21 и 4.08 для американского варианта английского и путунхуа, по сравнению с оценками естественного языка 4.46 и 4.25 соответственно. Работа, описывающая модель Tacotron, сравнивала модель с другими разрабатываемыми подходами<ref>Heiga Zen, Yannis Agiomyrgiannakis, Niels Egberts, Fergus Henderson, and Przemysław Szczepa-niak. Fast, compact, and high quality LSTM-RNN based statistical parametric speech synthesizersfor mobile devices.Proceedings Interspeech, 2016</ref><ref>Junyoung Chung, Caglar Gulcehre, KyungHyun Cho, and Yoshua Bengio.  Empirical evaluation ofgated recurrent neural networks on sequence modeling. [https://arxiv.org/abs/1412/3555 arXiv:1412.3555], 2014.</ref>. Tacotron смог достичь оценки в 3.82 балла для американского варианта английского, когда параметрический подход достиг 3.69, а конкатенативный - 4.09. Tacotron 2 смог достичь оценки в 4.52 балла по сравнению с оценкой записанной речи в 4.58 балла<ref name="tacotron2">[https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html/ Tacotron 2: Generating Human-like Speech from Text]</ref>.
 +
 
== См. также ==
 
== См. также ==
  

Текущая версия на 19:36, 4 сентября 2022

Синтез речи (англ. speech synthesis) — процесс генерации компьютером человеческой речи. Компьютерная система, способная к синтезу речи, называется речевым синтезатором. Система, генерирующая человеческую речь, основываясь на тексте, называется text-to-speech системой (сокр. TTS).

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

Этапы синтеза речи

Работу систем синтеза речи по тексту как правило можно разделить на два этапа, за которые отвечают два отдельных компонента — обработка текста и синтез речи.

Первый этап обычно содержит несколько этапов обработки естественного языка, такие как разбиение на предложения, разбиение на слова, нормализация текста, автоматическая морфологическая разметка и конвертация графем в фонемы (англ. grapheme-to-phoneme conversion, G2P). Данный этап принимает в качестве входных параметров текст и возвращает последовательность фонем с различными выделенными лингвистическими особенностями.

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

Генерация звуковой волны

Обычно, синтезаторы речи не работают непосредственно с сигналом звуковой волны, а используют некоторое представление этого сигнала, например, спектрограмму. Алгоритм, способный выделить такие параметры и по ним обратно восстановить звуковую волну, называется вокодер (англ. voice encoder). Примерами таких алгоритмов являются мю-закон [1] и восстановление сигнала по его спектрограмме.

Мю-закон преобразует каждое значение дискретизированного сигнала [math]\textbf{x} = \{x_1, x_2, \dots, x_T\}[/math] как

[math]f(x_t) = sign(x_t) \frac{\ln(1+\mu|x_t|)}{\ln(1+\mu)}[/math],

где [math]\mu = 255[/math] и [math]-1 \lt x_t \lt 1[/math], а затем кодирует сигнал как двузначное шестнадцатеричное число, которое обозначает некоторый интервал на числовой прямой[1]. Обратное преобразование выбирает значение преобразованного сигнала [math]y_t=f(x_t)[/math] из данного номера интервала и получает оценку исходного сигнала [math]\textbf{x}[/math] следующим образом:

[math] f^{-1}(y_t) = sign(y_t)(1/\mu)((1+\mu)^{|y_t|}-1), -1 \lt y_t \lt 1[/math].

В качестве представления звукового сигнала может выступать спектрограмма волны — изображение, показывающее зависимость спектральной плотности мощности сигнала от времени. Спектрограммы отображают частоту и амплитуду сигнала во времени, но не содержат никакой информации о фазе сигнала, из-за чего результат обратного восстановления сигнала по спектрограмме неизбежно отличается от оригинала. Цифровая генерация спектрограммы сигнала [math]s(t)[/math] сводится к вычислению квадрата амплитуды оконного преобразования Фурье:

[math]spectrogram(t, w) = |STFT(t, w)|^2[/math],

где [math]w[/math] — используемое окно и [math]STFT(t, w)[/math] — оконное преобразование Фурье.

Для восстановления исходного сигнала по его спектрограмме может быть использован алгоритм Гриффина-Лима[2], который основан на минимизации среднеквадратичной ошибки между оконным преобразованием Фурье оцениваемого сигнала и имеющимся преобразованием в спектрограмме.

Классы подходов к синтезу речи

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

Конкатенативный синтез

Конкатенативный синтез (англ. concatenative synthesis) основывается на конкатенации предварительно записанных примеров человеческой речи в единую звуковую последовательность. Данный подход синтезирует наиболее естественную речь, но генерируемая речь часто содержит значительные отличия и ошибки по сравнению с человеческой речью. Примеры конкатенативного синтеза:

  • Синтез с выбором (англ. unit selection synthesis) является самым используемым подходом конкатенативного синтеза и использует большую базу данных записанной речи. При создании базы данных записанные фразы могут делиться на различные звуковые единицы, такие, как фоны, дифоны, полуфоны, слоги, морфемы, целые фразы или предложения. При запуске алгоритм генерирует выходную звуковую волну с помощью выбора наилучшей последовательности звуковых единиц из базы данных. Данный выбор обычно реализован с помощью дерева решений. Синтез с выбором обеспечивает наиболее естественную речь, так как использует минимальную цифровую обработку сигналов. Недостатком подхода является необходимость в довольно большой базе данных звуков для достижения наибольшей естественности речи. Данный подход являлся самым популярным для общего класса задач синтеза речи, но в последнее время уступает по популярности параметрическому подходу. Примером использования синтеза с выбором является голосовой помощник Siri от Apple [3] и голосовой помощник Алиса от компании Яндекс [4]. Несмотря на то, что эти продукты используют глубокое обучение, их механизм синтеза речи основан на записанных примерах голоса.
  • Дифонный синтез (англ. diphone synthesis) является частным случаем синтеза с выбором, который использует в качестве звуковых единиц дифоны (переход от звука к звуку). Подход использует только один образец каждого дифона. База данных дифонов при этом получается сравнительно небольшой. Например, немецкий язык содержит около 800 дифонов, а испанский — около 2500. При работе алгоритма просодия входной последовательности накладывается на дифоны в базе данных с помощью различных алгоритмов цифровой обработки сигналов. Данный алгоритм значительно уступает по качеству другим подходам и кроме меньшего размера базы данных не дает весомых преимуществ, из-за чего не снискал большой популярности.
  • Синтез речи, ограниченный предметной областью (англ. domain-specific speech synthesis) также является частным случаем синтеза с выбором и использует базу данных предварительно записанных слов, фраз и предложений для составления выходной последовательности. Он используется в задачах, где вариативность и размер используемых фраз ограничены некоторой предметной областью, например, прогнозирование погоды или составление расписания транспорта. Из-за значительной простоты реализации и использования данный подход уже долго применяется в коммерческих продуктах, например, говорящие часы или калькуляторы. При этом данный подход может обеспечивать высокую естественность речи вследствие ограниченности используемой базы данных. Недостатками таких систем является ограниченность областью применимости и неспособность учитывать контекст речи, что может вызывать ощутимые ошибки в некоторых языках.

Параметрический синтез

Параметрический синтез (англ. statistical parametrical synthesis) для генерации выходной звуковой волны, в отличии от конкатенативного синтеза, не использует реальные примеры речи, а строит вероятностное распределение некоторых параметров и акустических свойств звуковой волны. В начале работы параметрического синтезатора с помощью вокодера извлекаются параметры [math]\textbf{o} = \{o_1, \dots, o_N\}[/math] звуковой волны и лингвистические данные [math]l[/math] из текста, который необходимо озвучить. Конкретный вид вектора [math]\textbf{o}[/math] зависит от используемого вокодера — это может быть как спектрограмма волны, так и некоторое другое представление сигнала, например, дискретные номера интервалов числовой прямой, получаемые с помощью мю-закона. Затем, порождающая модель, например, скрытая марковская цепь, нейронная сеть прямого распространения или рекуррентная нейронная сеть, обучается по выделенным параметрам [math]\textbf{o}[/math] и [math]l[/math], получая параметры модели [math]\hat{\Lambda}[/math], наиболее хорошо описывающие распределение [math]p(o|l, \Lambda)[/math]. На этапе синтеза, модель генерирует наиболее правдоподобные параметры звуковой волны, используя найденные на этапе обучения параметры модели [math]\hat{\Lambda}[/math] и лингвистическую информацию [math]l[/math] текста, который необходимо озвучить:

[math]\hat{\textbf{o}} = \arg\max\limits_{\textbf{o}}p(\textbf{o} | l, \hat{\Lambda})[/math].

Выходная звуковая волна генерируется вокодером на основе найденных параметров [math]\hat{\textbf{o}}[/math].

Данный подход является самым популярным на сегодняшний момент, в том числе из-за того, что он позволяет использовать подходы, основанные на нейронных сетях. Современными продуктами, использующие основанный на глубоком обучении параметрический синтез являются Amazon Lex и Alexa [5], Google Ассистент [6] и умные дисплеи Portal от Facebook [7].

Алгоритмы, основанные на нейронных сетях

Рассмотрим две популярные сети для преобразования текста в спектрограмму (Tacotron) и для синтеза речи по спектрограмме (WaveNet). Для синтеза речи по спектрограмме предложено множество моделей: авторегрессионныее (WaveNet, WaveRNN, LPCNet), неавторегресионные (WaveGlow, MelGAN, WaveGrad) и разнообразные (например, можно натренировать сети GAN для генерации лиц под задачу генерации спектрограммы).

Tacotron

Рисунок 1 — строение модели Tacotron[8]
Рисунок 2 —строение модуля CBHG модели Tacotron[8]

Tacotron — модель[8] параметрического синтеза речи, основанная на подходе seq2seq, разработанная Google и опубликованная в 2017 году. Модель состоит из кодера, декодера с вниманием и нейронной сети для пост-процессинга сигнала. Схема модели изображена на Рисунке 1.

Кодер и сеть пост-процессинга опираются на блок CBHG, схема которого изображена на Рисунке 2. Блок состоит из набора одномерных сверточных фильтров, за которыми следуют шоссейные нейронные сети (англ. highway networks)[9], являющиеся модификацией LSTM сетей, и двунаправленный управляемый рекуррентный блок. Входная последовательность сначала обрабатывается [math]K[/math] наборами сверточных фильтров с размерностью [math]1, 2, \dots, K[/math]. Эти фильтры моделируют локальную и контекстно-зависимую информацию (по аналогии с моделированием униграмм, биграмм, вплоть до [math]K[/math]-грамм). Выход сверточного уровня далее обрабатывается шоссейной сетью для дальнейшего выделения параметров. В конце CBHG используется управляемый рекуррентный блок, который для выделения параметров опирается на контекст перед рассматриваемым символом и после рассматриваемого символа.

Задача кодера заключается в извлечении последовательных параметров из текста. Его входом является последовательность символов, в которой каждый символ был закодирован one-hot кодированием и объединен в единый непрерывный вектор. К данному входу применяется ряд нелинейных преобразований в виде сети с бутылочным горлышком (англ. bottleneck layer), что позволяет улучшить обобщаемость сети и ускорить сходимость. Модуль CBHG преобразует выход нелинейных преобразований в итоговое представление текста, которая передается в декодер.

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

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

Модель Tacotron была значительно улучшена в последующей модификации Tacotron 2 [10], которая переработала исходную архитектуру Tacotron и объединила её с вокодером на основе WaveNet. Данная модель способна синтезировать речь высокого качества, принимая на вход только текст, который необходимо озвучить[11]. Реализация данной модели доступна на Github.

WaveNet

WaveNet[12] является порождающей моделью, использующей параметрический подход к синтезу речи. Её задача — восстановить распределение вероятностей звукового сигнала [math]\textbf{x} = \{x_1, x_2, \dots, x_T\}[/math] с помощью произведения условных вероятностей:

[math]p(\textbf{x})=\prod\limits_{t=1}^{T} p(x_t | x_1, x_2, \dots, x_{t-1})[/math].

Таким образом, вероятность каждого сигнала [math]x_t[/math] зависит только от предыдущих сигналов. Во время обучения модель оценивает данное условное распределение вероятностей, принимая на вход сигналы из обучающей выборки одновременно. На этапе генерации модель порождает выходные сигналы с помощью полученной оценки распределения вероятности последовательно — полученный моделью сигнал в момент времени [math]t[/math] подается обратно на вход для генерации последующего сигнала в момент времени [math]t+1[/math]. Структура модели позволяет использовать её в широком спектре задач, например, в задачах продолжения музыкального произведения по его началу, порождения голоса конкретного человека или text-to-speech синтеза.

Основной идеей модели является использование причинных сверточных сетей (англ. causal convolution layers) и расширенных причинных сверточных сетей (англ. dilated causal convolution layers). Причинная сверточная сеть представляет собой несколько уровней сверточной нейронной сети, связанных между собой в порядке, который не нарушает последовательность входного сигнала, т.е. оцениваемая в момент времени [math]t+1[/math] вероятность сигнала [math]p(x_{t+1} | x_1, x_2, \dots, x_t)[/math] не зависит от сигналов в последующие моменты времени [math]t+2, t+3, \dots, T[/math]. Причинные сверточные сети обучаются быстрее, чем рекуррентные нейронные сети, но требуют достаточно большого количества уровней для обеспечивания большого окна восприятия сигнала (англ. signal reception window) — количество предыдущих сигналов, от которых зависит оценка сигнала в текущий момент.

Рисунок 3 — строение причинной сверточной сети (сверху) и расширенной причинной сверточной сети (снизу)[12]

Модификация причинных сверточных сетей, расширенные причинные сверточные сети, способна увеличить окно восприятия сигнала в разы и является основной идеей модели WaveNet. Модификация заключается в применении свертки к области размерности большей, чем её длина, пропуская входные связи с некоторым шагом. Данный подход аналогичен применению пулинга или свертки с шагом большим единицы, но выходом расширенной причинной сверточной сети является последовательность размерности, равной размерности входной последовательности. Расширенные причинные сверточные сети способны достигать большего окна восприятия сигнала, используя меньшее количество уровней, при этом сохраняя вычислительную сложность причинных сверточных сетей. Структура причинных сверточных сетей изображена на Рисунке 3.

Рисунок 4 — строение модели WaveNet [12]

Полная структура модели WaveNet изображена на Рисунке 4. В качестве вокодера используется мю-закон. Модель представляет собой множество слоев сверточной нейронной сети, аналогично модели PixelCNN. Модель на вход принимает закодированную мю-законом последовательность сигналов [math]\textbf{x}[/math] и, опционально, некоторую дополнительную информацию, обозначаемую как вектор параметров [math]h[/math], а на выходе возвращает распределение вероятностей для параметров мю-закона, по которым можно восстановить синтезированный сигнал. На этапе обучения входным сигналом [math]\textbf{x}[/math] является пример звука из обучающей выборки, который подается на все входы одновременно. На этапе генерации входом модели [math]\textbf{x}[/math] будут являться сигналы, порожденные ею в предыдущие моменты времени и передаваемые ей последовательно. Дополнительная информация [math]h[/math], например, может содержать информацию о рассматриваемом тексте в задаче text-to-speech синтеза.

Модель представляет собой набор из [math]K[/math] блоков с остаточной связью, содержащих преобразование расширенной причинной свертки и функцию активации. Функция активации при этом аналогична функции, предложенной в модели Gated PixelCNN [13]:

[math]\textbf{y} = \tanh(W_{f, k} * \textbf{x}) \odot \sigma(W_{g,k}*\textbf{x})[/math],

где [math]k[/math] — номер слоя модели, [math]f, g[/math] — индексы входов преобразования, [math]\sigma[/math] — функция сигмоиды, [math]*[/math] — операция свертки, [math]\odot[/math] — операция покомпонентного умножения векторов и [math]W[/math] — выученные параметры свертки.

В случае использования дополнительной информации [math]h[/math] модель оценивает распределение вероятностей звукового сигнала как:

[math]p(\textbf{x}|\textbf{h})=\prod\limits_{t=1}^{T} p(x_t | x_1, x_2, \dots, x_{t-1}, \textbf{h})[/math].

Для использования дополнительной информации [math]\textbf{h}[/math] функция активации может использовать вектор [math]\textbf{h}[/math] глобально при вычислении каждой свертки как:

[math]\textbf{y} = \tanh(W_{f, k} * \textbf{x} + V_{f,k}^T\textbf{h}) \odot \sigma(W_{g,k}*\textbf{x}+V_{g,k}^T\textbf{h})[/math],

где [math]V_{f,k}[/math] — выученные параметры линейной проекции. В случае, когда размерность вектора [math]\textbf{h}[/math] меньше, чем размерность [math]\textbf{x}[/math], можно использовать upsampling-преобразование сверточных сетей, чтобы получить вектор размерности [math]\textbf{x}[/math] и использовать его вместо оригинального вектора [math]\textbf{h}[/math]. При этом [math]V_{f,k}*\textbf{h}[/math] будет являться операцией свертки размера 1.

Самый известный пример применения WaveNet для синтеза речи является технология Google Ассистент, которая использует WaveNet для генерации голосов ассистентов на различных языках. Модель позволила значительно сократить количество записей речи актеров озвучки, требуемых для создания голосовой модели[6].

Проблемы

Задача обработки текста

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

Преобразование текста в фонемы

Процесс преобразования текста в фонемы обычно подразделяется на два подхода — словарный и основанный на правилах. Словарный подход использует словарь с записанными фонетическими представлениями слов и в процессе работы производит поиск в нем с целью конвертации слова в последовательность фонем. Основанный на правилах подход использует набор правил, которые применяются к словам или частям слов с целью выделения фонем. Оба эти подхода имеют существенные недостатки и требуют усовершенствования.

Мультиязычный синтез

Работает, но интересная задача генерации данного голоса на другом языке.

Несколько голосов

Сеть перепрыгивает между голосами в середине слова.

Синтез в стиле

Сейчас реализовано с помощью вариационных автоэнкодеров. Требуется пример для стиля.

Выразительный синтез

Непонятно, что речь должна отмечать выражением.

Оценка качества

На данный момент не существует единых критериев оценки качества синтезаторов речи. В каждом отдельном применении технологии синтеза речи могут быть в том числе свои критерии качества, связанные с предметной областью или используемым оборудованием. С другой стороны, ряд исследователей начали оценивать синтезаторы речи используя распространенные наборы данных для синтеза речи [14].

Популярной метрикой оценки естественности речи является средняя оценка мнения (англ. mean opinion score)[15]. Она заключается в воспроизведении результатов работы синтезатора речи выборке людей, которые затем оценивают её качество по шкале от 1 до 5, в которой 1 означает "плохое" качество, 5 — "идеальное". Итоговой оценкой является среднее арифметическое всех оценок. Данная метрика страдает от субъективности и предвзятости опрашиваемых людей, в частности, в подобного рода экспериментах опрашиваемые стремятся ставить оценки, располагающиеся на всей ширине интервала оценок[16]. Из этого следует, что данная оценка не является абсолютной и её нельзя использовать для сравнения двух отдельных экспериментов кроме тех случаев, когда эксперимент поставлен особым образом, чтобы учесть данный недостаток, и даже в таком случае требуется статистический анализ данных, чтобы убедиться, что такое сравнение двух систем корректно[15].

Модели WaveNet, Tacotron и Tacotron 2 использовали среднюю оценку мнения для сравнения своей работы с естественным языком и другими подходами. Например, WaveNet достиг оценки 4.21 и 4.08 для американского варианта английского и путунхуа, по сравнению с оценками естественного языка 4.46 и 4.25 соответственно. Работа, описывающая модель Tacotron, сравнивала модель с другими разрабатываемыми подходами[17][18]. Tacotron смог достичь оценки в 3.82 балла для американского варианта английского, когда параметрический подход достиг 3.69, а конкатенативный - 4.09. Tacotron 2 смог достичь оценки в 4.52 балла по сравнению с оценкой записанной речи в 4.58 балла[11].

См. также

Примечания

  1. 1,0 1,1 "ITU-T Recommendation G.711"
  2. D. Griffin and Jae Lim, "Signal estimation from modified short-time Fourier transform," ICASSP '83. IEEE International Conference on Acoustics, Speech, and Signal Processing, Boston, Massachusetts, USA, 1983, pp. 804-807, doi: 10.1109/ICASSP.1983.1172092.
  3. Deep Learning for Siri’s Voice: On-device Deep Mixture Density Networks for Hybrid Unit Selection Synthesis.
  4. Optimization 2018: что находится «под капотом» у Алисы.
  5. Bringing the Magic of Amazon AI and Alexa to Apps on AWS.
  6. 6,0 6,1 Martin, Taylor (May 9, 2018)."Try the all-new Google Assistant voices right now". CNET.
  7. Facebook’s voice synthesis AI generates speech in 500 milliseconds.
  8. 8,0 8,1 8,2 Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. arXiv:1703.10135
  9. Rupesh Kumar Srivastava, Klaus Greff, and J ̈urgen Schmidhuber. Highway networks. arXiv:1505.00387, 2015.
  10. Jonathan Shen, Ruoming Pang, Ron J. Weiss, Mike Schuster, Navdeep Jaitly, Zongheng Yang, Zhifeng Chen, Yu Zhang, Yuxuan Wang, RJ Skerry-Ryan, Rif A. Saurous, Yannis Agiomyrgiannakis, & Yonghui Wu. (2018). Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions. arXiv:1712.05884.
  11. 11,0 11,1 Tacotron 2: Generating Human-like Speech from Text
  12. 12,0 12,1 12,2 Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. arXiv:1609.03499
  13. Aaron van den Oord, Nal Kalchbrenner, Oriol Vinyals, Lasse Espeholt, Alex Graves, & Koray Kavukcuoglu. (2016). Conditional Image Generation with PixelCNN Decoders. arXiv:1606.05328
  14. Blizzard Challenge
  15. 15,0 15,1 ITU-T Recommendation P.800.2 : Mean opinion score interpretation and reporting
  16. Zielinski, Slawomir, Francis Rumsey, and Søren Bech. "On some biases encountered in modern audio quality listening tests-a review." Journal of the Audio Engineering Society 56.6 (2008): 427-451.
  17. Heiga Zen, Yannis Agiomyrgiannakis, Niels Egberts, Fergus Henderson, and Przemysław Szczepa-niak. Fast, compact, and high quality LSTM-RNN based statistical parametric speech synthesizersfor mobile devices.Proceedings Interspeech, 2016
  18. Junyoung Chung, Caglar Gulcehre, KyungHyun Cho, and Yoshua Bengio. Empirical evaluation ofgated recurrent neural networks on sequence modeling. arXiv:1412.3555, 2014.

Источники информации

  • Aaron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, & Koray Kavukcuoglu. (2016). WaveNet: A Generative Model for Raw Audio. arXiv:1609.03499
  • Yuxuan Wang, RJ Skerry-Ryan, Daisy Stanton, Yonghui Wu, Ron J. Weiss, Navdeep Jaitly, Zongheng Yang, Ying Xiao, Zhifeng Chen, Samy Bengio, Quoc Le, Yannis Agiomyrgiannakis, Rob Clark, & Rif A. Saurous. (2017). Tacotron: Towards End-to-End Speech Synthesis. arXiv:1703.10135