Что измеряет частоту звука
Что такое звук? Как устроено ухо? Что значит герц и децибел? Как устроен микрофон?
Звук. Он окружает нас с самого рождения. После зрения он, пожалуй, самое главное, с помощью чего мы воспринимаем наш мир. Но что это? Какова его природа? По каким законам он живёт? Давайте разбираться!
Откуда берется звук и почему мы его слышим?
Почему все звуки разные и что такое частоты и герцы, амплитуда и децибелы, а также громкость?
Как устроена звукозапись?
2.Мы разобрались с тем, что такое звук и каким образом мы его воспринимаем. Но что его характеризует? И почему все звуки разные?
У любой звуковой волны (то есть у колебания молекул в пространстве) есть несколько свойств: частота (высота), амплитуда (громкость), длина (продолжительность), а также спектр (тембр). В статье рассматриваются только первые два, самые ключевые свойства.
Так, низкие по частоте звуковые волны более продолжительны.
Теперь разберемся с амплитудой, частично задающей то, что мы называем громкостью. Амплитуда это величина, показывающая на сколько сильны колебания воздуха, то есть на сколько сильное давление создает звуковая волна. Вот как выглядят больший и меньший по амплитуде звуки:
0 — порог слышимости
5 — почти ничего не слышно — тишина среди ночи.
10 — почти не слышно — шёпот, тиканье часов.
15 — едва слышно — шелест листьев.
20 — едва слышно — уровень фона на открытой местности;
25 — мурлыканье кота на расстоянии 0,5 м.
30 — тихо — настенные часы, максимально разрешённый шум для источников постоянного шума, расположенных в жилых помещениях, ночью с 21:00 до 7:00.
35 — хорошо слышно — приглушённый разговор, тихая библиотека, шум в лифте.
40 — хорошо слышно — тихий разговор, учреждение (офис), шум кондиционера, шум телевизора в соседней комнате.
50 — отчётливо слышно — разговор средней громкости, тихая улица, стиральная машина.
60 — умеренно шумно — громкий разговор, норма для контор.
65 — весьма шумно — громкий разговор на расстоянии 1 м.
70 — шумно — громкие разговоры на расстоянии 1 м, шум пишущей машинки, шумная улица, пылесос на расстоянии 3 м.
75 — шумно — крик, смех с расстояния 1 м, шум в старом железнодорожном вагоне.
80 — очень шумно — громкий будильник на расстоянии 1 м, крик, мотоцикл с глушителем, шум работающего двигателя грузового автомобиля, длительный звук вызывает ухудшение слуха.
85 — очень шумно — громкий крик, мотоцикл с глушителем;
90 — очень шумно пневматический отбойный молоток, грузовой вагон на расстоянии 7 м.
95 — очень шумно — вагон метро на расстоянии 7 м, громкая игра на фортепиано на расстоянии 1 м;
100 — крайне шумно — громкий автомобильный сигнал на расстоянии 5—7 м, кузнечный цех, очень шумный завод;
110 — крайне шумно — шум работающего трактора на расстоянии 1 м, громкая музыка, вертолёт;
115 — крайне шумно — пескоструйный аппарат на расстоянии 1 м, м, пневмосигнал для велосипеда;
120 — почти невыносимо — болевой порог, гром, отбойный молоток, кислородная горелка;
130 — боль — сирена, рекорд по самому громкому крику, мотоцикл (без глушителя);
140 — травма внутреннего уха — взлёт реактивного самолёта на расстоянии 25 м, максимальная громкость на рок-концерте;
150 — контузия, травмы — реактивный двигатель на расстоянии 30 м, соревнования по автомобильным звуковым системам, ухудшается зрение;
160 — шок, травмы, возможен разрыв барабанной перепонки — выстрел из ружья близко от уха, ударная волна от сверхзвукового самолёта или от взрыва давлением 0,002 МПа;
165—185 — светошумовая граната[4];
194 — воздушная ударная волна давлением 0,1 МПа, равным атмосферному давлению, возможен разрыв лёгких;
200 — воздушная ударная волна давлением 0,2 МПа, возможна быстрая смерть;
250 — максимальное давление воздушной ударной волны при взрыве тринитротолуола — 60 МПа[5];
282 — максимальное давление воздушной ударной волны при ядерном взрыве — 2500 МПа[6];
300 — среднее давление детонации обычных взрывчатых веществ — 20 000 МПа;
374 — максимальное давление продуктов реакции в момент ядерного взрыва — 100 000 000 МПа;
Поговорим подробнее о громкости. Выше я уже рассказал, что громкость это распознавание нашим мозгом того, насколько уж простите за тавтологию громким является звук. При этом громкость зависит не только от амплитуды, но во многом и от частоты. Взгляните на таблицу:
Это так называемая кривая громкости, она показывает зависимость уровня громкости, который измеряется здесь в условных единицах фонах, от амплитуды и частоты. Если вы вдруг не поняли, как ей пользоваться, приведу справку: по вертикали уроверь громкости в децибелах, по горизонтали частота в герцах. Выбираете определенную громкость и частоту, и проводите от них воображаемые линии. Точка пересечения линий будет уровнем громкости в фонах. Картинка:
3.В завершение статьи хотелось бы упомянуть о том, как устроен микрофон, и каким образом он преобразует звуковые волны, то есть колебания молекул воздуха, в электрический сигнал. Существует большое количество различных типов микрофонов, отличающихся по своей конструкции и способу работы. Хотелось бы рассмотреть конденсаторный микрофон, ведь сейчас это один из самых распространённых типов микрофонов, кроме того, звукозапись музыки или какого либо другого аудиоматериала в студиях всегда осуществляется именно на него. Сразу представлю схему микрофона:
Две синии пластинки это конденсатор. Они не соединены между собой, крайняя представляет из себя тонкую пленку, покрытую никелем с внутренней стороны, которая активно колеблется под действием звуковых волн. Она называется диафрагмой. Вторая пластинка неподвижна. Обе пластинки подключены в электрическую цепь, в них есть ток. При колебании диафрагмы ее расстояние до второй пластинки изменяется, а ее электрические токи действуют на нее. Таким образом, напряжение во второй пластинке меняется в зависимости от приближения, или отдаления диафрагмы. На wavefrom (дорожка, показывающая входящие звуковые волны при звукозаписи в различных аудиоредакторах) показывается ни что иное, как сила тока, идущая от микрофона, и меняющаяся при изменении напряжения, вызванного колебанием диафрагмы.
Акустические измерения. Измеряем АЧХ подручными средствами
Я купил bluetooth-наушники Motorola Pulse Escape. Звучание в целом понравилось, но остался непонятен один момент. Согласно инструкции, в них имеется переключение эквалайзера. Предположительно, наушники имеют несколько вшитых настроек, которые переключаются по кругу. К сожалению, я не смог определить на слух, какие там настройки и сколько их, и решил выяснить это при помощи измерений.
Итак, мы хотим измерить амплитудно-частотную характеристику (АЧХ) наушников — это график, который показывает, какие частоты воспроизводятся громче, а какие — тише. Оказывается, такие измерения можно произвести «на коленке», без специальной аппаратуры.
Нам понадобится компьютер с Windows (я использовал ноутбук), микрофон, а также источник звука — какой-нибудь плеер с bluetooth (я взял смартфон). Ну и сами наушники, конечно.
(Под катом — много картинок).
Подготовка
Вот такой микрофон у меня нашёлся среди старых гаджетов. Микрофон копеечный, для разговоров, не предназначенный ни для записи музыки, ни тем более не для измерений.
Конечно, такой микрофон имеет свою АЧХ (и, забегая вперёд, диаграмму направленности), поэтому сильно исказит результаты измерений, но для поставленной задачи подойдёт, потому что нас интересуют не столько абсолютные характеристики наушников, сколько то, как они изменяются при переключении эквалайзера.
У ноутбука имелся всего один комбинированный аудиоразъём. Подключаем туда наш микрофон:
Windows спрашивает, что за прибор мы подключили. Отвечаем, что это микрофон:
Windows — немецкий, извините. Я ведь обещал использовать подручные материалы.
Тем самым единственный аудиоразъём оказывается занятым, поэтому и нужен дополнительный источник звука. Скачиваем на смартфон специальный тестовый аудиосигнал — так называемый розовый шум. Розовый шум — это звук, содержащий весь спектр частот, причём равной мощности по всему диапазону. (Не путайте его с белым шумом! У белого шума другое распределение мощности, поэтому его нельзя использовать для измерений, это грозит повреждением динамиков).
Настраиваем уровень чувствительности микрофона. Нажимаем правую кнопку мыши на значке громкоговорителя в Windows и выбираем регулировку устройств записи:
Находим наш микрофон (у меня он получил название Jack Mic):
Выбираем его в качестве устройства записи (птичка в зелёном кружочке). Выставляем ему уровень чувствительности поближе к максимуму:
Microphone Boost (если есть) убираем! Это автоматическая подстройка чувствительности. Для голоса — хорошо, а при измерениях будет только мешать.
Устанавливаем на ноутбук измерительную программу. Я люблю TrueRTA за возможность видеть сразу много графиков на одном экране. (RTA — по-английски АЧХ). В бесплатной демо-версии программа измеряет АЧХ с шагом в октаву (то есть соседние точки измерения отличаются по частоте в 2 раза). Это, конечно, очень грубо, но для наших целей сойдёт.
При помощи скотча закрепляем микрофон около края стола, так чтобы его можно было накрыть наушником:
Важно зафиксировать микрофон, чтобы не сдвинулся в процессе измерений. Подсоединяем наушники проводом к смартфону и кладём одним наушником поверх микрофона, так чтобы плотно закрыть его сверху — примерно так наушник охватывает человеческое ухо:
Второй наушник свободно висит под столом, из него мы будем слышать включённый тестовый сигнал. Убеждаемся, что наушники лежат стабильно, их тоже нельзя сдвигать в процессе измерений. Можно начинать.
Измерения
Запускаем программу TrueRTA и видим:
Основная часть окна — поле для графиков. Слева от него находятся кнопки генератора сигналов, он нам не понадобится, потому что у нас внешний источник сигнала, смартфон. Справа — настройки графиков и измерений. Сверху — ещё кое-какие настройки и управление. Ставим белый цвет поля, чтобы лучше видеть графики (меню View → Background Color → White).
Выставляем границу измерений 20 Hz и количество измерений, скажем, 100. Программа будет автоматически делать указанное количество измерений подряд и усреднять результат, для шумового сигнала это необходимо. Выключаем отображение столбчатых диаграмм, пусть вместо них рисуются графики (кнопка сверху с изображением столбиков, отмечена на следующем скриншоте).
Сделав настройки, производим первое измерение — это будет измерение тишины. Закрываем окна и двери, просим детей помолчать и нажимаем Go:
Если всё сделано правильно, в поле начнёт вырисовываться график. Подождём, пока он стабилизируется (перестанет «плясать» туда-сюда) и нажмём Stop:
Теперь будем измерять настоящий тестовый сигнал. Включаем плеер на смартфоне, начав с малой громкости.
Дождавшись стабилизации графика, останавливаем измерение кнопкой Stop в программе. Плеер тоже пока останавливаем. Итак, что мы видим на графике? Неплохие басы (кроме самых глубоких), некоторый спад к средним частотам и резкий спад к верхним частотам. Напоминаю, что это не настоящая АЧХ наушников, свой вклад вносит микрофон.
Этот график мы возьмем в качестве эталонного. Наушники получали сигнал по проводу, в этом режиме они работают как пассивные динамики без всяких эквалайзеров, их кнопки не действуют. Занесём график в память номер 1 (через меню View → Save to Memory → Save to Memory 1 или нажав Alt+1). В ячейках памяти можно сохранять графики, а кнопками Mem1..Mem20 в верхней части окна включать или отключать показ этих графиков на экране.
Теперь отсоединяем провод (как от наушников, так и от смартфона) и подключаем наушники к смартфону по bluetooth, стараясь не сдвинуть их на столе.
Снова включаем плеер, запускаем измерение кнопкой Go и, регулируя громкость на смартфоне, приводим новый график по уровню к эталонному. Эталонный график изображён зелёным, а новый — синим:
Останавливаем измерение (плеер можно не выключать, если не раздражает шипение из свободного наушника) и радуемся, что по bluetooth наушники выдают такую же АЧХ, как по проводу. Заносим график в память номер 2 (Alt+2), чтоб не ушёл с экрана.
Теперь переключаем эквалайзер кнопками наушников. Наушники рапортуют бодрым женским голосом «EQ changed». Включаем измерение и, дождавшись стабилизации графика, видим:
Хм. Кое-где есть отличия в 1 децибел, но это как-то несерьёзно. Скорее похоже на погрешности измерений. Заносим и этот график в память, переключаем эквалайзер ещё раз и после измерения видим ещё один график (если очень хорошо присмотреться):
Ну, вы уже поняли. Сколько я ни переключал эквалайзер на наушниках, никаких изменений это не давало!
На этом, в принципе, можно заканчивать работу и делать вывод: у этих наушников работающего эквалайзера нет. (Теперь понятно, почему его не получалось услышать).
Однако тот факт, что мы не увидели никаких изменений в результатах, огорчает и даже вызывает сомнения в правильности методики. Может, мы измеряли что-то не то?
Бонусные измерения
Чтобы убедиться, что мы измеряли АЧХ, а не погоду на Луне, давайте покрутим эквалайзер в другом месте. У нас же есть плеер в смартфоне! Воспользуемся его эквалайзером:
И вот результат измерений:
Вот это другое дело! Новый график заметно отличается от старых. Занесём его тоже в память (у меня получился номер памяти 6) и найдём разность между новым графиком и эталонным, TrueRTA это умеет (меню Utilities → Difference):
Вычитаем из графика номер 6 график номер 1 и помещаем результат в память номер 12. Убираем остальные графики с экрана кнопочками Mem1, Mem2 и т. д., оставляем только Mem12:
Не правда ли, эта кривая приблизительно напоминает то, что обещал эквалайзер?
Выключаем эквалайзер, с ним всё понятно. А ещё я говорил вначале, что нельзя двигать наушники и микрофон между измерениями. А что будет, если сдвинуть на сантиметр?
Смотрите-ка, от сдвига график слегка изменился: басов поубавилось, верхов добавилось. Это говорит, скорее всего, о том, что у микрофона различная чувствительность к звукам, приходящим с разных направлений (это называется диаграммой направленности).
Проведём ещё один опыт: измерим звучание, отказавшись от закрытого объёма. Вот так:
Pitch-tracking, или определение частоты основного тона в речи, на примерах алгоритмов Praat, YAAPT и YIN
В сфере распознавания эмоций голос – второй по важности после лица источник эмоциональных данных. Голос можно охарактеризовать по нескольким параметрам. Высота голоса – одна из основных таких характеристик, однако в сфере акустических технологий корректнее называть этот параметр частотой основного тона.
Частота основного тона имеет непосредственное отношение к тому, что мы называем интонацией. А интонация, например, связана с эмоционально-экспрессивными характеристиками голоса.
Тем не менее, определение частоты основного тона является не совсем тривиальной задачей с интересными нюансами. В этой статье мы обсудим особенности алгоритмов для ее определения и сравним существующие решения на примерах конкретных аудиозаписей.
Введение
Для начала вспомним, чем, по сути, является частота основного тона и в каких задачах она может понадобиться. Частота основного тона, которую еще обозначают как ЧОТ, Fundamental Frequency или F0 – это частота колебания голосовых связок при произнесении тоновых звуков (voiced). При произнесении нетоновых звуков (unvoiced), например говорении шепотом или произнесении шипящих и свистящих звуков, связки не колеблются, а значит эта характеристика для них не релевантна.
* Обратите внимание, что деление на тоновые и не тоновые звуки не эквивалентно делению на гласные и согласные.
Вариабельность частоты основного тона довольно велика, причем она может сильно отличаться не только между людьми (для более низких в среднем мужских голосов частота составляет 70-200 Гц, а для женских может достигать 400 Гц), но и для одного человека, особенно в эмоциональной речи.
Определение частоты основного тона применяется для решения широкого спектра задач:
Кстати, помните историю про Laurel и Yanny? Различия в том, какие слова слышат люди при прослушивании одной и той же аудиозаписи, возникли как раз из-за разницы в восприятии F0, на которую влияют много факторов: возраст слушающего, степень усталости, устройство воспроизведения. Так, при прослушивании записи в колонках с качественным воспроизведением низких частот, вы будете слышать Laurel, а в аудиосистемах, где низкие частоты воспроизводятся плохо, Yanny. Эффект перехода можно заметить и на одном устройстве, например здесь. А в этой статье в качестве слушателя выступает нейросеть. В другой статье можно почитать, как объясняется феномен Yanny/Laurel с позиций речеобразования.
Поскольку подробный разбор всех методов определения F0 был бы чересчур объемным, статья носит обзорный характер и может помочь сориентироваться в теме.
Методы определения F0
Методы определения F0 можно разделить на три категории: основанные на временной динамике сигнала, или time-domain; основанные на частотной структуре, или frequency-domain, а также комбинированные методы. Предлагаем ознакомиться с обзорной статьей по теме, где подробно разбираются обозначенные методы выделения F0.
Отметим, что любой из обсуждаемых алгоритмов состоит из 3 основных шагов:
Препроцессинг (фильтрация сигнала, разделение его на фреймы)
Поиск возможных значений F0 (кандидатов)
Трекинг — выбор наиболее вероятной траектории F0 (поскольку для каждого момента времени мы имеем несколько конкурирующих кандидатов, нам необходимо найти среди них наиболее вероятный трек)
Очертим несколько общих моментов. Перед применением методов time-domain сигнал предварительно фильтруют, оставляя только низкие частоты. Задаются пороги – минимальная и максимальная частоты, например от 75 до 500 Гц. Определение F0 производится только для участков с гармонической речью, поскольку для пауз или шумовых звуков это не только бессмысленно, но и может внести ошибки в соседние фреймы при применении интерполяции и/или сглаживании. Длину фрейма выбирают так, чтобы в ней содержалось как минимум три периода.
Основной метод, на базе которого впоследствии появилось целое семейство алгоритмов – автокорреляционный. Подход достаточно прост — необходимо рассчитать автокорреляционную функцию и взять ее первый максимум. Он и будет отображать самую выраженную частотную компоненту в сигнале. В чем может быть сложность в случае использования автокорреляции и почему далеко не всегда первый максимум будет соответствовать нужной частоте? Даже в близких к идеальным условиям на записях высокого качества метод может ошибаться из-за сложной структуры сигнала. В условиях близких к реальным, где помимо прочего мы можем столкнуться с исчезновением нужного пика на шумных записях или записях изначально низкого качества, число ошибок резко возрастает.
Несмотря на ошибки, автокорреляционный метод довольно удобен и привлекателен своей базовой простотой и логичностью, поэтому именно он взят за основу во многих алгоритмах, в том числе в YIN (Инь). Даже само название алгоритма отсылает нас к балансу между удобством и неточностью метода автокорреляции: “The name YIN from ‘‘yin’’ and ‘‘yang’’ of oriental philosophy alludes to the interplay between autocorrelation and cancellation that it involves.” [4]
Создатели YIN попытались исправить слабые места автокорреляционного подхода. Первое изменение – использование функции Cumulative Mean Normalized Difference, которая должна снизить чувствительность к амплитудным модуляциям, сделать пики более явными:
\begin
d’_t(\tau)=
\begin
1, & \tau=0 \\
d_t(\tau) \bigg/ \bigg[ \frac<1> <\tau>\sum\limits_
\end
\end
Также YIN пытается избежать ошибок, возникающих в случаях, когда длина оконной функции не делится нацело на период колебания. Для этого используется параболическая интерполяция минимума. На последнем шаге обработки аудиосигнала выполняется функция Best Local Estimate для предотвращения резких скачков значений (хорошо это или плохо – вопрос спорный).
Если говорить о частотной области, то на первый план выходит гармоническая структура сигнала, то есть наличие спектральных пиков на частотах, кратных F0. “Свернуть” этот периодический паттерн в явный пик можно при помощи кепстрального анализа. Кепстр — преобразование Фурье от логарифма спектра мощности; кепстральный пик соответствует наиболее периодической компоненте спектра (про него можно почитать здесь и здесь).
Гибридные методы определения F0
Следующий алгоритм, на котором стоит остановиться поподробнее, имеет говорящее название YAAPT — Yet Another Algorithm of Pitch Tracking — и фактически является гибридным, потому что использует как частотную, так и временную информацию. Полное описание есть в статье, здесь мы опишем только основные этапы.
Рисунок 1. Схема алгоритма YAAPTalgo (ссылка).
YAAPT состоит из нескольких основных этапов, первым из которых является препроцессинг. На этом этапе значения изначального сигнала возводят в квадрат, получают вторую версию сигнала. Этот шаг преследует ту же цель, что и Cumulative Mean Normalized Difference Function в YIN – усиление и восстановление “затертых” пиков автокорреляции. Обе версии сигнала фильтруют — обычно берут диапазон 50-1500 Гц, иногда 50-900 Гц.
Затем по спектру преобразованного сигнала рассчитывается базовая траектория F0. Кандидаты на F0 определяются с помощью функции Spectral Harmonics Correlation (SHC).
\begin
SHC(t,f) = \sum\limits_
\end
где S(t,f) — магнитудный спектр для фрейма t и частоты f, WL — длина окна в Гц, NH — число гармоник (авторы рекомендуют использовать первые три гармоники). Также по спектральной мощности происходит определение фреймов voiced-unvoiced, после чего ищется наиболее оптимальная траектория, при этом учитывается возможность pitch doubling/pitch halving [3, Section II, C].
Далее, как для изначального сигнала, так и для преобразованного производится определение кандидатов на F0, и вместо автокорреляционной функции здесь используется Normalized Cross Correlation (NCCF).
\begin
NCCF(m) = \frac<\sum\limits_
Подробное описание алгоритма можно найти в статье 1993 года.
Как выглядит результат работы трекера (path-finder) можно посмотреть, нажав ОК и затем просмотрев (View & Edit) получившийся файл Pitch. Видно, что помимо выбранной траектории были еще довольно значимые кандидаты с частотой ниже.
Рисунок 3. PitchPath для первых 1,3 секунд аудиозаписи.
Возьмем две библиотеки, предлагающих питч-трекинг – aubio, в которой алгоритмом по умолчанию является YIN, и библиотеку AMFM_decompsition, в которой есть реализация алгоритма YAAPT. В отдельный файл (файл PraatPitch.txt) вставим значения F0 из Praat (это можно сделать вручную: выбрать звуковой файл, нажать View & Edit, выделить весь файл и выбрать в верхнем меню Pitch-Pitch listing).
Теперь сравним результаты по всем трем алгоритмам (YIN, YAAPT, Praat).
Рисунок 4. Сравнение работы алгоритмов YIN, YAAPT и Praat.
Мы видим, что при заданных по умолчанию параметрах YIN довольно сильно выбивается, получая очень плоскую траекторию с заниженными относительно Praat значениями и полностью теряя переходы между мужским и женским голосом, а также между эмоциональной и не эмоциональной речью.
YAAPT зарезал совсем высокий тон при эмоциональной женской речи, но в целом справился явно лучше. За счет каких своих особенностей YAAPT работает лучше — сразу ответить точно, конечно, нельзя, но можно предположить, что роль играет получение кандидатов из трех источников и более скрупулезный расчет их веса, чем в YIN.
Поскольку вопрос определения частоты основного тона (F0) в том или ином виде встает почти перед каждым, кто работает со звуком, путей для его решения достаточно много. Вопрос необходимой точности и особенности аудиоматериала в каждом конкретном случае определяют, насколько внимательно необходимо подбирать параметры, или в ином случае можно ограничиться базовым решения наподобие YAAPT. Принимая Praat за эталон алгоритма для обработки речи (все же им пользуется огромное количество исследователей), можно сделать вывод о том, что YAAPT в первом приближении надежнее и точнее, чем YIN, хотя и для него наш пример оказался сложноват.
Автор: Ева Казимирова, научный сотрудник Neurodata Lab, специалист по обработке речи.