Изучите комплексные решения ASR в частных доменах

искусственный интеллект

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ которого из которых заложена статья.

Эта статья опубликована в сообществе HUAWEI CLOUD.Как решить контекстный сдвиг? Путь к сквозному ASR в частной сфере (1)", оригинальный автор: xiaoye0829.

Для автоматического распознавания речи (ASR) на производственном уровне важной функцией является способность адаптироваться к контекстуальной предвзятости в частных доменах. Например, для ASR на мобильном телефоне система должна иметь возможность точно идентифицировать название приложения, имя контакта и т. д., произнесенное пользователем, а не другие слова с таким же произношением. Чтобы быть более конкретным, например, слово, произносимое как «ЯоМин», может быть нашим известным спортсменом «Яо Мин» в спортивной сфере, но на мобильном телефоне это может быть друг по имени «Яо Мин» в нашей адресной книге. . Как устранить эту предвзятость по мере изменения домена приложения — главный вопрос, который мы рассмотрим в этой серии статей.

Для традиционных систем ASR часто используются независимые акустические модели (AM), словари произношения (PM) и языковые модели (LM).Процесс распознавания смещения. Но для сквозной модели AM, PM и LM интегрированы в одну модель нейронной сети. На данный момент смена контекста очень сложна для сквозных моделей по нескольким причинам:

1. Сквозная модель использует для декодирования только текстовую информацию, в то время как LM в традиционных системах ASR можно обучать на большом количестве текста. В результате мы обнаружили, что сквозные модели более подвержены ошибкам, чем традиционные модели, при распознавании редких, контекстно-зависимых слов и словосочетаний, таких как именные словосочетания.

2. Сквозная модель учитывает эффективность декодирования, обычно на каждом шаге декодирования с поиском луча сохраняется лишь небольшое количество слов-кандидатов (обычно от 4 до 10 слов), поэтому редкие словесные фразы, такие как контекст- зависимые n-граммы (n-gram), скорее всего не в луче.

Предыдущая работа в основном была направлена ​​на интеграцию независимо обученных контекстных языковых моделей n-грамм в сквозные модели для решения проблемы контекстного моделирования, также известной как поверхностное слияние. Однако их метод плохо обрабатывает имена собственные, а имена собственные обычно обрезаются во время поиска луча, поэтому слишком поздно добавлять языковые модели к смещению, потому что такие смещения обычно выполняются после генерации каждого слова, а поиск луча находится в графема/словосочетание (для английского языка графема означает 26 английских букв + 1 пробел + 12 общеупотребительных знаков препинания. Для китайского языка графема означает 3755 китайских иероглифов первого уровня + 3008 китайских иероглифов второго уровня + 16 знаков препинания) и другое подслово прогнозируются единицы.

В этом сообщении блога мы представляем часть работы, которая пытается решить эту проблему: «Shallow-FusionEnd-to-End Contextual Biasing», работа Google, опубликованная на InterSpeech 2019. В этой работе, во-первых, чтобы избежать сокращения имен собственных без использования языковой модели для смещения, мы исследуем смещение единиц подслов. Во-вторых, мы изучаем использование контекстного FST перед обрезкой луча. В-третьих, поскольку контекстные n-граммы часто используются с общим набором префиксов («вызов», «текст»), мы также исследуем включение этих префиксов в неглубокое слияние. Наконец, чтобы помочь в моделировании имен собственных, мы изучаем различные методы использования крупномасштабных текстовых данных.

Здесь мы сначала вводим поверхностное слияние, учитывая строку речевых последовательностей x=(x_1, …, x_K), сквозная модель выводит строкууровень подсловаАпостериорное распределение вероятностей y=(y_1,...,y_L), то есть P(y|x). Неглубокое слияние означает объединение сквозной выходной оценки с оценкой LM, обученной извне, во время поиска луча. : y ^{*}=argmax logP(y|x)+\lambda P_C(y)_y_∗=argmaxlogP(у_∣_x)+_λПК_​(y)

где \lambda_λ_ — это параметр, используемый для настройки весов сквозной модели и языковой модели. Чтобы построить контекстную LM для сквозной модели, мы предполагаем, что известен набор смещенных фраз на уровне слов, и компилируем их в n-граммный WFST (взвешенный преобразователь с конечным состоянием). Этот WFST на уровне слов затем разлагается на FST, который действует как преобразователь правописания, который преобразует строку графем / словесных фрагментов в соответствующие слова.

Во всех предыдущих работах по миграции, будь то традиционные методы или сквозные модели, использовались контекстуальные LM и базовые модели (такие как сквозные или ASR-акустические модели) для присвоения баллов словам (словам) или подсловам (подсловам). слово) на сетке. Сквозная модель обычно устанавливает относительно небольшой порог луча во время декодирования, что приводит к меньшему количеству путей декодирования, чем традиционные методы. Поэтому в этой статье в основном исследуется применение контекстной информации к сквозной модели перед обрезкой луча.

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

Например, как показано на рисунке выше, если мы хотим сместить слово «кошка», то целью контекстной конструкции FST является смещение трех букв «с», «а» и «т». Когда мы хотим сместить букву «с», мы можем не только добавить «кот» к лучу, но и добавить к лучу несвязанное слово, такое как «автомобиль». Но если мы произведем смещение на уровне слов, у связанных подслов будет меньше совпадений, поэтому в луч можно добавить больше связанных слов. Возьмем в качестве примера «кошку», если провести смещение по словесному фрагменту, то слово «машина» не попадет в луч. Поэтому в этой статье мы используем словарь слов размером 4096.

Далее мы анализируем, что поверхностное слияние изменяет апостериорную вероятность вывода, поэтому мы также можем обнаружить, что поверхностное слияние вредит речи, в которой нет слов для компенсации, то есть тем, которые деконтекстуализированы. Поэтому мы изучаем зачет только тех фраз, которые соответствуют определенному префиксу.Например, при поиске контакта на мобильном телефоне обычно первым произносится «звонок» или «сообщение», или когда вы хотите поиграть музыку, вы сначала скажете "играть". Поэтому в данной статье мы учитываем эти префиксные слова при построении контекстуальной FST. Мы извлекаем префиксные слова, которые появляются более чем за 50 слов до слова смещения контекста. В итоге мы получили 292 общих префиксных слова для поиска контактов, 11 для воспроизведения песен и 66 для поиска приложений. Мы создаем невесомый префикс FST и объединяем его с контекстом FST. Мы также разрешаем пустую опцию префикса, чтобы пропустить эти префиксные слова.

Один из способов улучшить охват имен собственных — использовать большие объемы неконтролируемых данных. Неконтролируемые данные поступают из анонимной речи в голосовом поиске. Эти речи обрабатываются с использованием модели SOTA, и сохраняются только речи с высокой достоверностью. Наконец, чтобы гарантировать, что речь, которую мы оставили, в основном касается имен собственных, мы используем средство разметки имен собственных (то есть CRF in ner для обозначения последовательности) и сохраняем речь с именами собственными. Используя вышеуказанный метод, мы получили 100 миллионов неконтролируемых выступлений и объединили их с 35 миллионами контролируемых выступлений для обучения.Во время обучения 80% времени в каждом пакете составляют контролируемые данные, а 20% — неконтролируемые данные. С неконтролируемыми данными одна проблема заключается в том, что слова, которые они распознают, могут быть неправильными, а результаты распознавания также ограничивают написание имен, таких как Эрик, или Эрик, или Эрик. Следовательно, мы также можем использовать большое количество имен собственных в сочетании с методом TTS для создания синтетического набора данных. Мы извлекаем большое количество контекстно-смещенных слов из Интернета для различных категорий, таких как мультимедиа, социальные сети и приложения. Наконец, мы извлекли имена около 580 000 контактов, 42 000 названий песен и 70 000 названий приложений. Далее из лога добываем большое количество префиксных слов, например, «позвонить в Johnmobile», мы можем получить префиксное слово «позвонить», соответствующее социальному полю. Затем мы использовали специфические для класса префиксы и имена собственные для создания распознаваемого речи текста и, используя синтезатор речи, сгенерировали примерно 1 миллион высказываний для каждого класса. Мы также добавили шум к этим речам, чтобы имитировать звуки комнаты. Наконец, во время обучения 90 % времени в каждом пакете занимают контролируемые данные, а 10 % — синтетические данные.

Наконец, мы исследовали, можем ли мы добавить больше имен собственных в контролируемый обучающий набор. В частности, мы используем теггер имен собственных для каждого высказывания, чтобы найти в нем имена собственные. Для каждого имени собственного мы получили его произносительные характеристики. Например, «Кейтлин» может быть выражена фонемами «КеИ т л@н».Далее мы находим слова с такой же последовательностью фонетических единиц из словаря произношения, например «Кейтлин». Для реальной речи и заменяемых слов мы случайным образом заменяем их во время обучения. Эта практика позволяет модели наблюдать больше имен собственных. Более прямой отправной точкой является то, что модель может произносить больше имен во время обучения, а затем при последующем декодировании в сочетании с контекстным FST она может лучше произносить эти имена.

Взгляните на экспериментальную часть ниже. Все эксперименты основаны на модели RNN-T, кодировщик содержит слой сокращения времени и 8 слоев LSTM, каждый слой имеет 2000 единиц скрытого слоя. Декодер состоит из двухслойного LSTM с 2000 скрытых единиц в каждом слое. Кодер и декодер подключены к объединенной сети с 600 модулями скрытых слоев. Затем эта совместная сеть передается в softmax, который выдает либо графемы с 96 единицами, либо слова с 4096 единицами. При выводе каждое высказывание сопровождается серией смещенных фраз, используемых для построения контекстной FST. В этом FST каждая дуга (дуга) имеет одинаковый вес. Этот вес настраивается отдельно для тестового набора для каждой директории (например, музыка, контакты и т. д.).

Выше приведены некоторые результаты Shallow Fusion, E0 и E1 — результаты графемы и словесных фрагментов, эти модели не смещены. E2 является результатом графемы со смещением, но без какой-либо стратегии бустинга в этой статье. E3 использует вычитающую стоимость, чтобы предотвратить попадание плохих кандидатов в луч, и эта операция приносит улучшения почти во все наборы тестов. Преобразование смещений на уровне графемы в смещения на уровне слов, т. е. смещение на более длинных единицах, помогает удерживать релевантные слова-кандидаты в пределах луча и повышает производительность модели. Наконец, наша модель E5 применяет смещение FST перед отсечением поиска луча, которое мы называем ранним смещением, что помогает гарантировать, что хорошие кандидаты сохраняются в луче раньше, и обеспечивает дополнительные улучшения производительности. В заключение, наши лучшие модели неглубокого синтеза смещены на уровне слов с вычитанием стоимости и ранним смещением.

Поскольку в предложении может существовать контекстная предвзятость, нам также необходимо убедиться, что при отсутствии контекстуальной предвзятости эффект модели не уменьшится, то есть распознавание речей без предвзятых слов не ухудшится. Чтобы проверить это, мы провели эксперименты с тестовым набором данных VS, где мы случайным образом выбрали 200 предвзятых фраз из тестового набора Cnt-TTS для построения предвзятого FST. На следующем рисунке показаны результаты эксперимента:

Как видно из этой таблицы, E1 является нашей базовой моделью, и когда добавляется смещение, модель E5 имеет значительное снижение VS. Чтобы решить эту проблему, традиционные модели включают префиксные слова в смещение FST. Если мы применим смещение (E6) только после того, как увидим какие-либо непустые префиксные слова, мы можем наблюдать улучшение по сравнению с E5 в наборе данных VS, но в других наборах тестов со смещенными словами результаты будут потеряны. Далее, когда мы позволили одному из префиксов быть пустым (в основном пытались обращаться к сценариям со смещенными словами), но получили только результаты, аналогичные E5. Чтобы решить эту проблему, мы применяем меньший вес к контекстной фразе, если ей предшествует пустой префикс (т. е. префикс отсутствует). Используя этот метод, мы наблюдаем, что E8 достигает небольшого снижения производительности на VS по сравнению с моделью E1, но сохраняет значительное улучшение на тестовом наборе со смещенными фразами.

Проанализировав вышеизложенное, мы дополнительно изучаем, можем ли мы дополнительно улучшить способность смещения, когда модель может воспринимать больше имен собственных. Наша базовая модель — E8, которая обучена на контролируемом наборе данных из 35 миллионов. Объединив наши вышеуказанные неконтролируемые данные и сгенерированные данные, мы провели следующие эксперименты:

Экспериментальные результаты E9 показывают, что при совместном обучении данных без учителя эффект улучшается для каждого набора данных. Когда есть сгенерированные данные для обучения вместе (E10), по сравнению с E9, это оказывает большее влияние на тестовый набор TTS, но на наборе данных реальной сцены Cnt-Real наблюдается большее снижение (7,1 против 5,8), что указывает что улучшение набора тестов смещения TTS в основном связано с соответствием звуковой среды между обучающими и тестовыми наборами, а не с изучением более богатого словарного запаса имен собственных.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~