Изменения

Перейти к: навигация, поиск

Синтез речи

8395 байт добавлено, 15:47, 15 января 2021
Добавлен раздел про генерацию звуковой волны, дополнен раздел про WaveNet
Система, генерирующая человеческую речь, основываясь на тексте, называется '''text-to-speech''' системой (сокр. TTS).
В процессе человеческой речи сначала транслируется нервная система транслирует некоторый текст или мысленный концепт в движение мышц, связанных с органами дыхания и речи. Затем, используя поток воздуха из легких,производится генерация акустического сигнала, который с помощью потока воздуха из легких. Сигнал содержит как периодические компоненты (созданные с помощьью помощью вибрации органов речи), так и апериодические
(созданные окружающей средой и фоновым шумом). Используя изменяющиеся во времени сокращения мышц, меняются частотные характеристики акустического сигнала.
Задача систем генерации речи по тексту {{---}} симулировать данный процесс в каком-либо виде.
Этап синтеза речи, в свою очередь, принимает на вход последовательность фонем и возвращает синтезированную звуковую волну речи.
Данный этап обычно включает в себя алгоритмы предсказания [https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%81%D0%BE%D0%B4%D0%B8%D1%8F_(%D0%BB%D0%B8%D0%BD%D0%B3%D0%B2%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0)/ просодии ] - характеристик речи, описывающих признаки, являющиеся дополнительными к основной артикуляции звука, такие, как тон, ударение, громкость и алгоритмы генерации звуковых волн т.д.  == Генерация звуковой волны == Обычно, синтезаторы речине работают непосредственно с сигналом звуковой волны, а так же может содержатьиспользует некоторое представление этого сигнала, например, спектрограмму. Алгоритм, способный выделить такие параметры и по ним обратно восстановить звуковую волну, называется '''вокодер ''' (англ. voice encoder) . Примерами таких алгоритмов являются мю-закон <ref name="mu law">[http://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-G.711-198811-I!!PDF-E&type=items/ "ITU-T Recommendation G.711"]</ref> и восстановление сигнала по его спектрограмме.  Мю-закон преобразует каждое значение дискретизированного сигнала <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 < x_t < 1</math>, а затем кодирует сигнал как двузначное шестнадцатеричное число, который обозначает некоторый интервал на числовой прямой. Обратное преобразование выбирает значение преобразованного сигнала <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 < y_t < 1</math>. Алгоритм [[Синтез речи#WaveNet | WaveNet]] использует закодированные номера интервалов как входную последовательность. В качестве представления звукового сигнала может выступать [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>w</math> {{---}}используемое окно и <math>STFT(t, w)</math> {{---} } оконное преобразование Фурье. Для восстановления исходного сигнала по его спектрограмме может быть использован алгоритм или устройствоГриффина-Лима<ref name="griffin-lim">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.</ref>, который основан на минимизации средней квадратичной ошибки между оконным преобразованием Фурье оцениваемого сигнала и затем использовать её для генерации похожей волныимеющимся преобразованием в спектрограмме.
== Классы подходов к синтезу речи ==
Идеальный синтезатор речи генерирует одновременно и натуральную, и разборчивую речь.
=== Конкатенативный синтез ===
'''Конкатенативный синтез''' (англ. concatenative synthesis) основывается на конкатенации предварительно записанных примеров человеческой речи в единую звуковую последовательность. Данный подход синтезирует наиболее естественную речь, но генерируемая речь часто содержит значительные отличия и ошибки по сравнению с человеческой речью.Примеры конкатенативного синтеза:
* '''Синтез с выбором''' (англ. unit selection synthesis) является самым используемым подходом конкатенативного синтеза и использует большую базу данных записанной речи. При создании базы данных записанные фразы могут делиться на различные звуковые единицы, такие, как фоны, дифоны, полуфоны, слоги, морфемы, целые фразы или предложения. При запуске, алгоритм генерирует выходную звуковую волну с помощью выбора наилучшей последовательности звуковых единиц из базы данных. Данный выбор обычно реализован с помощью [[Дерево решений и случайный лес|дерева решений]].Данный подход обеспечивает наиболее естественную речь, так как использует минимальную цифровую обработку сигналов. Недостатком подхода является необходимость в довольно большой базе данных звуков для достижения наибольшей естественности речи.
* '''Дифонный синтез''' (англ. diphone synthesis) является частным случаем синтеза с выбором, который использует в качестве звуковых единиц дифоны (переход от звука к звуку). Подход использует только один образец каждого дифона. База данных дифонов при этом получается сравнительно небольшой. Например, немецкий язык содержит около 800 дифонов, а испанский {{---}} около 2500. При работе алгоритма просодия входной последовательности накладывается на дифоны в базе данных с помощью различных алгоритмов цифровой обработки сигналов. Данный алгоритм значительно уступает по качеству другим подходам и, кроме меньшего размера базы данных, не дает весомых преимуществ.
* '''Синтез речи, ограниченный предметной областью''' (англ. domain-specific speech synthesis) также является частным случаем синтеза с выбором и использует базу данных предварительно записанных слов, фраз и предложений для составления выходной последовательности. Он используется в задачах, где вариативность и размер используемых фраз ограничены некоторой предметной областью, например, прогнозирование погоды или составление расписания транспорта. Из-за значительной простоты реализации и использования данный подход уже долго применяется в коммерческих продуктах, например, говорящие часы или калькуляторы. При этом данный подход может обеспечивать высокую естественность речи вследствие ограниченности используемой базы данных. Недостатками таких систем является ограниченность областью применимости и неспособность учитывать контекст речи, что может вызывать ощутимые ошибки в некоторых языках.
=== Параметрический синтез ===
== Алгоритмы, основанные на нейронных сетях ==
=== WaveNet ===
[[ФайлWaveNet<ref>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:dilatedTowards End-causalto-convolutionsEnd Speech Synthesis.png|thumb|300px| [https://arxiv.org/abs/16091703.0349910135/ Рисунок 1 — строение причинной сверточной сети (сверху) и расширенной причинной сверточной сети (снизу)arXiv:1703.10135]</ref> является [[Порождающие модели | порождающей моделью]]WaveNet является генеративной моделью, использующей параметрический подход к синтезу речи. Её задача {{---}} восстановить распределение вероятности вероятностей звукового сигнала<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> зависит от вероятностей предыдущих сигналов. При этом, в качестве вокодера используется преобразование, известноекак [[Синтез речи#Генерация звуковой волны | мю-закон <ref name="mu law">[http://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-G.711-198811-I!!PDF-E&type=items/ "ITU-T Recommendation G.711"]</ref>: <math>o_t = f(x_t) = sign(x_t) \frac{\ln(1+\mu|x_t|)}{\ln(1+\mu)}</math>, где <math>\mu = 255</math> и <math>-1 < x_t < 1</math>].
Модель представляет собой множество слоев сверточной нейронной сети, аналогично модели [[PixelRNN_и_PixelCNN | PixelCNN]].
Сеть не содержит уровней [[Сверточные нейронные сети#Пулинговый слой | пулинга ]] и выходной вектор имеет размерность, равную размерности входного вектора.
Выходом модели является категориальное распределение вероятности, получаемое с помощью softmax-преобразования.
в последующие моменты времени <math>t+2, t+3, \dots, T</math>. Во время обучения сети сигналы из обучающих данных подаются на вход сети одновременно. На этапе генерации
сигналы на вход модели подаются последовательно: каждый сгенерированный моделью сигнал подается обратно на вход для генерации последующего. Причинные сверточные сети обучаются
быстрее, чем [[Рекуррентные нейронные сети | рекуррентные нейронные сети]], но требуют достаточно большого количества уровней для обеспечивания большого окна восприятия сигнала (англ. signal reception window) {{---}} количество предыдущих сигналов, от которых зависит оценка сигнала в текущий момент.
[[Файл:dilated-causal-convolutions.png|thumb|300px| Рисунок 1 — [https://arxiv.org/abs/1609.03499/ строение причинной сверточной сети (сверху) и расширенной причинной сверточной сети (снизу)]]]
Модификация причинных сверточных сетей, называемая расширенные причинные сверточные сети, способна увеличить окно восприятия сигнала в разы и является основной идеей модели WaveNet.
Модификация заключается в применении свертки к области размерности большей, чем её длина, пропуская входные связи с некоторым шагом. Данный подход аналогичен применениюпулинга или свертки с шагом большим единицы, но результирует в выходную выходом расширенной причинной сверточной сети является последовательность той же размерности, равной размерности входной последовательности. Расширенные причинные сверточные сети способны достигать большего окна
восприятия сигнала, используя меньшее количество уровней, при этом сохраняя вычислительную сложность причинных сверточных сетей. Структура причинных сверточных сетей изображена на Рисунке 1.
 
[[Файл:wavenet.png|thumb|300px| Рисунок 2 — [https://arxiv.org/abs/1609.03499/ строение модели WaveNet]]]
Полная структура модели WaveNet изображена на Рисунке 2. Модель на вход принимает закодированную мю-законом последовательность сигналов <math>\textbf{x}</math> и, опционально, некоторую дополнительную информацию, обозначаемую как вектор параметров <math>h</math>, а на выходе возвращает распределение вероятностей для параметров мю-закона, по которым можно восстановить сигнал. В случае использования модели для генерации речи по тексту, данный вектор может содержать информацию о рассматриваемом тексте. Сама модель представляет собой набор из <math>K</math> [[Сверточные нейронные сети#Residual block | блоков с остаточной связью]], содержащих преобразование расширенной причинной свертки и функцию активации.
 
Функция активации при этом аналогична функции, предложенной в модели Gated PixelCNN <ref>Aaron van den Oord, Nal Kalchbrenner, Oriol Vinyals, Lasse Espeholt, Alex Graves, & Koray Kavukcuoglu. (2016). Conditional Image Generation with PixelCNN Decoders. [https://arxiv.org/abs/1606.05328/ arXiv:1606.05328]
</ref>:
 
<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{y}</math> будет являться операцией свертки размера 1.
Самый известный пример применения 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>.
=== Tacotron ===
[[Файл:Tacotron.PNG|thumb|300px| Рисунок 3 — [https://arxiv.org/abs/1703.10135/ Рисунок 2 — строение модели Tacotron]]][[Файл:Tacotron-cbhg.PNG|thumb|300px| Рисунок 4 — [https://arxiv.org/abs/1703.10135/ Рисунок 3 — строение модуля CBHG модели Tacotron]]]Tacotron {{---}} модель <ref>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> параметрического синтеза речи, основанная на подходе [[Механизм внимания | 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
передается сети пост-обработки для генерации непосредственно звуковой волны.
В качестве сети пост-обработки используется модуль CBHG, описанный ранее. После этого спектрограмма звуковой волны передается на вход [[Синтез речи#Генерация звуковой волны | алгоритму Гриффина-Лима<ref name="griffin-lim">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.</ref>, который способен спомощью спектрограммы восстановить исходную волну используя быстрое преобразование Фурье]].
== Проблемы ==
29
правок

Навигация