Ниже приведен сигнал, который представляет запись разговора. Я хотел бы создать серию меньших звуковых сигналов на основе этого. Идея состоит в том, чтобы определить, когда «важный» звук начинается и заканчивается, и использовать его для маркеров, чтобы создать новый фрагмент аудио. Другими словами, я хотел бы использовать тишину в качестве индикаторов относительно того, когда аудио-блок запускается или останавливается, и создавать новые звуковые буферы на основе этого.
Так, например, если человек записывает себя, говоря
Hi [some silence] My name is Bob [some silence] How are you?
тогда я хотел бы сделать три аудиоклипа из этого. Тот, который говорит Hi
, тот, который говорит, My name is Bob
и тот, который говорит How are you?
.
Моя первоначальная идея состоит в том, чтобы проходить через аудио-буфер, постоянно проверяя, где есть области с низкой амплитудой. Может быть, я мог бы сделать это, взяв первые десять выборок, усреднить значения и, если результат будет низким, пометить его как бесшумный. Я бы продолжил работу по буферу, проверив следующие десять образцов. Увеличиваясь таким образом, я мог определить, где конверты начинаются и останавливаются.
Если у кого-нибудь есть какой-нибудь совет относительно хорошего, но простого способа сделать это, это было бы здорово. Для моих целей решение может быть довольно элементарным.
Я не профессионал в DSP, но понимаю некоторые основные понятия. Кроме того, я буду делать это программно, поэтому лучше поговорить об алгоритмах и цифровых выборках.
Спасибо за помощь!
РЕДАКТИРОВАТЬ 1
Отличные отзывы пока! Я просто хотел уточнить, что это не относится к живому аудио, и я сам напишу алгоритмы на C или Objective-C, поэтому любые решения, использующие библиотеки, на самом деле не подходят.