Разбираемся, что слышит умная колонка. О нелинейных искажениях и метрике FRR

Салют, Хабр!  

Меня зовут Александр. Я DSP-инженер, то есть специалист по цифровой обработке сигналов, и в SberDevices занимаюсь VQE — Voice Quality Enhancement, блоком улучшения качества звука. Мы часто упоминаем его, когда говорим об аудиоустройствах.

Тут стоит уточнить, улучшением какого звука мы занимаемся и что такое «качество». Звук, который слышит пользователь, и звук, который «слышит» ассистент в колонке — не одно и то же. Команда VQE занимается как раз звуком, который «слышат» модели распознавания голоса. Улучшаем мы его, чтобы уменьшить число ошибок распознавания. Соответственно, критерии качества — это метрики распознавания, а не, например, субъективная оценка пользователем звучания устройства.

В отличие от объективной и субъективной оценок звучания, где существуют стандартные методики и рекомендуемые значения, для сигналов, которые поступают на вход систем распознавания голоса, нет ни стандартных критериев качества, ни стандартных методик оценки. Одна из метрик качества распознавания называется FRR (false rejection rarte) — доля пропущенных умным устройством запросов. Проще говоря, процент случаев, когда колонка не услышала ключевое (споттерное) слово. Оценка FRR — сложный процесс: нужно собрать и разметить достаточное число записей, оценить процент пропущенных запросов и ложных срабатываний.

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

Так возникает необходимость в, возможно, грубой, но быстрой оценке FRR прямо в процессе проектирования и ��оработки устройств. Мы разработали методику прогнозирования FRR по объективным показателям работы эхоподавления, а измерения и оценку параметров стандартизировали. Благодаря этому методику можно использовать для любых устройств без сложного дополнительного оборудования.

База, с которой всё будет понятнее

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

Чтобы «слушать», умное устройство использует микрофоны. Микрофоны расположены внутри корпуса, в котором находятся и динамики. (Вообще это не лучшее место для микрофонов, но выбора нет).

С точки зрения модуля VQE звуковой тракт — это единая программно-акустико-механическо-электрическая система передачи звука. Этот звук появляется из звуковой подсистемы ОС и распространяется:

  • через усилитель и динамик;

  • в микрофон (по воздуху — искажённый усилителем и динамиком, механически — с влиянием вибрации корпуса и внутренних конструкций);

  • через АЦП сигнала loopback и драйверы PDM-микрофонов.

Структура звукового тракта умной колонки
Структура звукового тракта умной колонки

Два сигнала на входе VQE нужны прежде всего для работы алгоритма подавления акустического эха AEC (acoustic echo cancellation). В этом случае эхом называется весь тот звук, который, будучи излучённым динамиком, всеми возможными путями (echo path) воздействует на микрофон. Пути эти сложны и многочисленны. Поэтому нельзя просто взять и вычесть сигнал, который был подан на динамик, из микрофонного сигнала, чтобы перестать слышать динамик. А динамик нужно перестать слышать, потому что он:

  • как правило, громче голоса пользователя и заглушает его;

  • сам может воспроизводить речь, которую распознавать совсем не нужно.

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

В качестве референса, или опорного сигнала, AEC использует так называемый loopback. Это оцифрованный сигнал, снятый непосредственно с динамика, в которые входят и все искажения, внесённые усилителем. Именно на основе loopback AEC «вычисляет», что именно в сигнале, который поступил на микрофон, рождено динамиком (эхо в комнате, сама проигрываемая колонкой музыка), а что — внешние шумы (дребезг корпуса, нелинейные искажения).

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

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

THD+N, SNR, ERLE: смысл и взаимосвязь

Три показателя, которые применяются для прогнозирования FRR и в целом для оценки звучания — это THD+N, SNR и ERLE. 

THD+N (Total Harmonic Distortion + Noise) — это отношение среднеквадратичного значения (RMS) всех призвуков основного тона — гармонических и негармонических составляющих, шума, постоянной соcтавляющей — к RMS основного тона или полного сигнала. Он же коэффициент нелинейных искажений (КНИ).

SNR (Signal to Noise Ratio) — это отношение мощностей полезного сигнала и шумов. Или попросту отношение сигнал / шум (ОСШ). Нам понадобятся два SNR: на входе AEC (SNRin) и на выходе (SNRout).

ERLE (Echo return Loss Enhancement) — это отношение мощности сигнала на входе AEC к мощности сигнала на выходе AEC. Это – основная метрика степени подавления эха алгоритмом AEC.

Естественно, измеряются они не с внешнего измерительного микрофона, а с микрофонов самого устройства. Это звук, который «слышит» голосовой ассистент.

Все три показателя взаимосвязаны через AEC. В микрофонном сигнале AEC подавляет только звучание самой колонки — громкость речи и шумов не меняется. То есть на выходе AEC ровно столько же продуктов нелинейных искажений, сколько на входе. Поэтому повышение THD+N снижает эффективность AEC. На входе — полная мощность сигнала, на выходе — мощность искажений. Следовательно, через THD+N можно оценить теоретический предел ERLE и SNR. В абсолютном выражении это выглядит так:

ERLE_{max} = \cfrac{P}{P_{distortion}}

где P = полная мощность сигнала, Pdistortion — мощность искажений

ERLE_{max} = \cfrac{SNR_{OUT\_max}}{SNR_{IN}} \implies SNR_{OUT\_max} = SNR_{IN} \cdot ERLE_{max} THDN_{effective} = 100\% \cdot \sqrt{\cfrac{P_{distortion}}{P}} \implies \cfrac{P_{distortion}}{P} = \left( \cfrac{THDN}{100\%} \right)^2 ERLE_{max} = \cfrac{1}{\left( \cfrac{THDN}{100\%} \right)^2} SNR_{OUT\_max} = \cfrac{SNR_{IN}}{\left( \cfrac{THDN}{100\%} \right)^2}

Мы оцениваем именно THD+N, а не THD. THD учитывает только гармонические призвуки, и поэтому не связано простой зависимостью с ERLE.

В свою очередь, THD+N позволяет определить теоретический предел ERLE, достижимый при данном уровне искажений.

Измерение THD+N

Для оценки THD+N на устройстве воспроизводится свип-тон — синусоидальный сигнал, у которого плавно меняется частота в определённом диапазоне. Выбор границ изменения частоты зависит от конкретных задач. Например, нижняя граница может определяться частотным диапазоном динамиков, а верхняя — диапазоном воспроизводимых частот или диапазоном частот, в которых работает VQE. 

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

Для корректной оценки THD+N нужно компенсировать неравномерность частотной характеристики (ЧХ) динамика устройства и микрофона устройства. При этом оценивать их ЧХ отдельно не нужно... да и сложнее, чем оценить сквозную ЧХ динамик + микрофон. Эта сквозная ЧХ определяется как отношение амплитудных спектров микрофонного сигнала и сигнала loopback.

Далее микрофонный сигнал разбивается на короткие фрагменты. Их длительность выбирается исходя из двух целей:

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

• обеспечить на длительности фрагмента изменение частоты свиптона не более 50%. Иначе пики основного тона и гармоник начала и конца анализируемого фрагмента для самой низкой тестовой частоты могут слиться. 

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

THDN_{effective} = 100\% \cdot \sqrt{\cfrac{P_{distortion}}{P}} = 100\% \cdot \sqrt{\cfrac{\sum \limits _{n=-\frac{N}{2}}^{\frac{N}{2}-1}\left[X_n \cdot H_n^{corr} \cdot H_{band\_stop}\right]^2}{\sum \limits _{n=-\frac{N}{2}}^{\frac{N}{2}-1}\left[ X_n \cdot H_n^{corr} \right]^2}}

Hband_stop — частотная характеристика режекторного фильтра с центральной частотой, равной основному тону

Hcorr — коррекция частотной характеристики и микрофона

Xn = | FFT{x}|  — амплитудный спектр тестового сигнала

Примечание: это формула THDNeffective — отношение шумов к полной мощности сигнала. Есть также THDNfundamental — отношение шумов к среднеквадратичному значению основного тона. 

THDN_{fundamental} = 100\% \cdot \sqrt{\cfrac{P_{distortion}}{P_{от}}} = 100\% \cdot \sqrt{\cfrac{\sum \limits _{n=-\frac{N}{2}}^{\frac{N}{2}-1}\left[X_n \cdot H_n^{corr} \cdot H_n^{band\_stop}\right]^2}{\sum \limits _{n=-\frac{N}{2}}^{\frac{N}{2}-1}\left[X_n \cdot H_n^{corr} \cdot H_n^{band\_pass}\right]^2}}

Hband_pass — частотная характеристика полосового фильтра с центральной частотой, равной основному тону

Измерение SNR и ERLE

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

SNR оценивается в ситуации запроса пользователя к устройству, воспроизводящему некий контент. В нашем случае SNR оценивается как отношение мощности речи пользователя к мощности остаточного сигнала, воспроизводимого колонкой (остаточного эха), на выходе AEC. То есть речь — полезный сигнал, а воспроизводимый колонкой звук — шум.

Чтобы набрать репрезентативную выборку, необходимо некоторое количество записей: для SNR — голосовых запросов (человек что-то говорит колонке) и контента, который воспроизводит умное устройство (музыки), а для ERLE — только второе. По нашим экспериментальным оценкам, требуется записать минимум 3 минуты звучания. 

Мы оцениваем SNR в полосе 300… 3400 Гц. Это – полоса, в которой сосредоточена максимальная энергия речевого сигнала. Записи разбиваются на фрагменты 20-30 мс — по длительности это близко к интервалу станционарности речевого сигнала. Например, при частоте дискретизации 16 кГц удобный интервал — 512 сэмплов, или 32 мс. А при 48 кГц — 1024 сэмпла, что эквивалентно 21 мс.

Для каждого фрагмента вычисляются мгновенная SNR и мгновенная ERLE. Мгновенная — так как оценка выполнена на длительности, много меньшей длительности сигнала. Это SNRinst и ERLEinst.

SNR_{inst}[m] = \cfrac {\sum \limits_{i=m}^{m+L-1}\hat{x}_{signal}^2}{\sum \limits_{i=m}^{m+L-1}\hat{x}_{noise}^2} = {\cfrac{\sum \limits _{n=-\frac{L}{2}}^{\frac{L}{2}-1}\left[S_n \cdot H_n^{voice}\right]^2}{\sum \limits _{n=-\frac{L}{2}}^{\frac{L}{2}-1}\left[ N_n \cdot H_n^{voice} \right]^2}}

m — начало анализируемого фрагмента. 

L — длина анализируемого фрагмента. 

Hvoice — ЧХ полосового фильтра 300...3400 Гц. 

Sn = | FFT{speech}| — амплитудный спектр фрагмента речевого сигнала. 

Nn = | FFT{ music}| — амплитудный спектр фрагмента шума (музыкального сигнала). 

ERLE_{inst}[m] = \cfrac {\sum \limits_{i=m}^{m+L-1}\hat{x}_{mic}^2}{\sum \limits_{i=m}^{m+L-1}\hat{x}_{vqe}^2} = {\cfrac{\sum \limits _{n=-\frac{L}{2}}^{\frac{L}{2}-1}\left[N_n^{mic} \cdot H_n^{voice}\right]^2}{\sum \limits _{n=-\frac{L}{2}}^{\frac{L}{2}-1}\left[ N_n^{vqe} \cdot H_n^{voice} \right]^2}} = \cfrac {SNR_{vqe}[m]}{SNR_{mic}[m]}

Nnmic = | FFT{mic_music}| — амплитудный спектр фрагмента музыки на входе VQE. 

Nnvqe = | FFT{vqe_music}| — амплитудный спектр фрагмента музыки на выходе VQE. 

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

Корреляция с FRR

Как мы помним, изначально мы стремились прогнозировать FRR, зная SNR и THD+N, то есть тогда, когда устройство ещё не обрело конечный вид. А следовательно, требовалось определить взаимосвязь между SNR, ERLE или THD-N с одной стороны и FRR — с другой.  

Мы провели оценку средних значений ERLE, SNR и THD+N на нескольких типах умных колонок (SberBoom и другие), а также усреднили FRR по огромному количеству записей. В оценке FRR используются записи от тестировщиков: на их устройствах включено логирование звука, так что при каждом срабатывании споттера на сервер отсылаются сигналы микрофонов, loopback и результат обработки в VQE. Дополнительно мы сделали студийные записи с ключевым (споттерным) словом. Это позволило вычислить достоверное среднее значение FRR.

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

Оказалось, что с FRR высоко коррелированны SNRout — ОСШ на выходе VQE — и среднее значение THD+N. Эти параметры можно оценить за несколько часов, специальное или дополнительное оборудование не требуется.

Кроме того, возможен и обратный процесс. Мы просто берём максимально приемлемое по продуктовым требованиям значение FRR и добиваемся значений SNRout и THD+N, которые его обеспечат. В том числе, это решается конструктивно, влияя на устройство умных колонок. Для повышения выходного SNR, согласно формулам выше, нужно повышать входное SNR, а значит, снижать проникновение звука динамика в микрофон через корпус. Для THD+N — выбирать усилитель и динамик с большим запасом до «перегрузки» и максимально изолировать динамик от дребезжащих частей корпуса и вообще снижать дребезг.

Заключение

Методика прогноза FRR по THD+N и SNR позволяет нам предварительно оценивать метрику на любой из стадий разработки конструктива колонки. А значит, и оперативно поправить его, если видим явную проблему со споттером.

Пока методика — экспериментальная. А значит, мы стараемся как минимум дополнять её объективными измерениями. Например, прослушиванием выходных сигналов VQE из тестов SNR, чтобы оценить характер искажений и разборчивость речи в выходном сигнале. Это ещё дополнительный критерий, который подтверждает: всё хорошо. Фактически выполняется диагностика устройства. И её нельзя провести просто по формальным показателям: нужна экспертная оценка человека, комплексная оценка многих факторов. Как в случае с живым организмом.