Когда начинается трек смеха?

14

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

Я потратил довольно много времени на изучение подходов машинного обучения для обнаружения смеха, но понял, что это больше связано с обнаружением отдельного смеха. У двухсот человек, смеющихся одновременно, будут разные акустические свойства, и моя интуиция заключается в том, что их следует различать с помощью гораздо более грубых методов, чем нейронная сеть. Я могу быть совершенно не прав, хотя! Был бы признателен за мысли по этому вопросу.

Вот что я попробовал до сих пор: я разделил пятиминутный отрывок из недавнего эпизода Saturday Night Live на два вторых клипа. Затем я пометил эти «смех» или «не смеется». Используя экстрактор функций Librosa MFCC, я запустил кластеризацию данных K-Means и получил хорошие результаты - эти два кластера очень аккуратно сопоставились с моими метками. Но когда я попытался перебрать более длинный файл, прогнозы не оправдались.

Что я собираюсь попробовать сейчас: я собираюсь быть более точным в создании этих клипов для смеха. Вместо того, чтобы делать слепое разделение и сортировку, я собираюсь вручную извлечь их, чтобы никакой диалог не загрязнял сигнал. Затем я разделю их на клипы четверти секунды, вычислю их MFCC и использую их для обучения SVM.

Мои вопросы на данный момент:

  1. Есть ли в этом смысл?

  2. Может ли статистика помочь здесь? Я прокручивал в режиме просмотра спектрограммы Audacity и довольно четко вижу, где происходит смех. В спектрограмме логарифма речь имеет очень характерный, «нахмуренный» вид. Напротив, смех покрывает широкий спектр частот довольно равномерно, почти как нормальное распределение. Даже можно визуально отличить аплодисменты от смеха по более ограниченному набору частот, представленных в аплодисментах. Это заставляет меня думать о стандартных отклонениях. Я вижу, что-то называется тестом Колмогорова-Смирнова, может ли это быть полезным здесь? Лог-спектрограмма (Вы можете видеть смех на изображении выше как стену апельсина, поражающую на 45% пути.)

  3. Линейная спектрограмма, кажется, показывает, что смех более энергичен на низких частотах и ​​затухает к более высоким частотам - означает ли это, что он квалифицируется как розовый шум? Если это так, может ли это быть точкой опоры для проблемы? спектрограмма

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

Erik
источник
1
Я согласен с тем, что "не понадобится нейронная сеть, чтобы получить надежный детектор для смеха". Я также согласен с тем, что вы бросили Колмогорова по сигналу, учитывая, что если вы правы, а трек смеха - это (взвешенная) сумма смеха, вы должны получить какие- то нормальные черты . Может быть, вы все еще хотите увеличить разрешение по частоте. Кстати, для кого-то, кто не «любит» DSP, ваш жаргон вполне подходит :) к сожалению, я не аудио-парень, поэтому я, вероятно, не очень помог.
Маркус Мюллер
Я рад помочь. У вас есть данные для обучения? Одна из самых важных вещей - это маркировка данных. Мусор на входе - мусор на выходе. Одним из самых простых и эффективных подходов было бы обучить GMM «мешок с рамой» и оценить вероятность.
jojek
Сначала вы можете проверить, можете ли вы отделить смех от молчания, проверив мощность / амплитуду вашего сигнала в данное время. Предоставляя вам возможность пороговых моментов, когда происходит «что-то». Тогда вы можете попытаться посмотреть на распределение частоты. Например, речь может иметь некоторые характерные острые пики (не важно, где именно эти пики, только то, что они существуют), в то время как смех однороден, как вы сказали. Отслеживание этого может дать значение, чтобы решить, является ли это смехом. (Вам нужна информация о громкости, чтобы убедиться, что у вас нет единой тишины)
user6522399

Ответы:

0

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

Есть много способов взглянуть на проблему.

Подход № 1

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

Подход № 2

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

Подход № 3

Принудительно применить кодирование типа LPC / CELP к сигналу и наблюдать за остатком. CELP Coding создает очень точную модель производства речи.

Из ссылки здесь: ТЕОРИЯ КОДИРОВАНИЯ CELP

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

Проще говоря, после того, как вся речь, предсказанная анализатором, удалена - остается остаток, который передается для воссоздания точной формы волны.

Как это поможет с вашей проблемой? В основном, если вы применяете CELP-кодирование, речь в сигнале в основном удаляется, а остается остаток. В случае смеха большая часть сигнала может быть сохранена, потому что CELP не сможет предсказать такой сигнал при моделировании голосового тракта, где отдельная речь будет иметь очень небольшой остаток. Вы также можете проанализировать этот остаток обратно в частотной области, чтобы увидеть, смех или речь.

Дипан Мехта
источник
0

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

боб
источник