Webaudio: запись звука после громкой синхронизации звука
Я создаю веб-приложение, которое записывает звук с микрофона сразу после того, как он слышит громкий синхронизирующий шум (например, хлопок). Я ищу решение, которое будет работать для Chrome на ПК и Android.
Я пробовал следующие подходы
- используйте узел скриптпроцессора, который слушает микрофон, обнаруживает громкий узел и сразу после него сохраняет необработанные данные.
Этот подход действительно работает. Но записанный звук является мусором и глючит из-за того, что узел работает в основном потоке и пропускает кадры.
- Используйте audioWorklet, чтобы поместить обработку звука в другой поток и отправить записанные данные обратно в основной поток, используя порт.
Такой подход работает намного лучше. Он работает на рабочем столе Chrome. Но записанный звук на андроиде звучит чушь. Я поднял вопрос о Chrome, см. Билет здесь
Есть ли у кого-нибудь другие подходы, которые они могли бы предложить? Возможно, каким-то образом с помощью MediaRecorder? Однако при этом у нас нет доступа к необработанному звуку, поэтому мы не можем сказать, воспроизводился ли громкий звук синхронизации, если нет какого-либо умного способа.
Обратите внимание: меня не интересует подход, который синхронизирует постзапись.
Обновлять
Использование узла обработчика сценариев для прослушивания громкого хлопка и запуска MediaRecorder - отличное решение!
1 ответ
Предложение @AKX о том, чтобы scriptprocessnode прослушивал громкий звук, а затем запускал MediaRecorder, кажется лучшим на данный момент. Уловка состоит в том, чтобы установить как можно меньший размер буфера для узла процессора сценариев!