2013-10-11 1 views
0

Я разрабатываю программное обеспечение, которое может автоматически записывать и извлекать все слова в моем голосе. Я использовал библиотеку portaudio для ее решения. Но я застрял на обнаружении звука: я установил значение молчания равным нулю, поэтому, если есть образец, который равен нулю, он должен быть начальной или конечной точкой звука. Но когда я его запускал, программа создала много слов. Я думаю, потому что значение, которое я прочитал portaudio, является необработанными данными, поэтому оно не может быть обработано так. Я прав? Как я могу это исправить? Кстати, я кодирую в C++: DКак я могу обнаружить звук в необработанном звуковом файле

ответ

1

Чтобы обнаружить наличие сигнала в потоке PCM, вы сможете его обнаружить. Как сказал dprogramz, уровень шума вашей звуковой карты, вероятно, не идеальный, и поэтому будет записан некоторый шум (даже без подключения микрофона).

Решение заключается в использовании алгоритмаили VAD для обнаружения присутствия вашего голоса. VOX может быть сложным, поскольку в большинстве электроники потребительского класса уровень шума достаточно низкий, чтобы быть «тишиной» для человеческого уха по отношению к сигналу. Это означает, что разница между амплитудой между уровнем шума и сигналом может быть небольшим. Если ваша звуковая карта активирована AGC, это может сделать ее еще более трудной, так как уровень шума может перемещаться. Сказав это, VOX может быть успешно реализован на оборудовании потребительского класса. Для установления порога требуется больше усилий. Когда это делается лучше всего, пороговое значение рассчитывается периодически, пока поток активен.

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

0

Я не думаю, что это потому, что это значение RAW. Звуковые файлы RAW являются битовым потоком информации о частоте и громкости.

Однако значение будет редко (если вообще когда-либо) равным нулю. Вы должны учитывать, что микрофон потребляет небольшое количество электрических шумов. Выясните «холостой» дБ вашего микрофона (просто проверьте уровень, когда вы не говорите в нем). Затем вам нужно установить порог тишины (ниже определенного уровня дБ для определенного количества выборок), чтобы обнаружить начало/конец. Попытка обнаружить нулевое значение будет почти невозможной.

+0

Я использовал однонаправленный микрофон для записи, поэтому я думаю, что значение молчания равно нулю (я записал и снова открыл его Audacity, чтобы оценить его) – user2530847

 Смежные вопросы

  • Нет связанных вопросов^_^