Официальный сайт студ.городка НГТУ
Программирование и БД » обработка аудио данных 

#1  16.12.06 01:02

обработка аудио данных

смысл следующий
есть прога, которая читает данные с микрофона (формат PCM16)
нужно научить эту прогу отличать говорит ли кто-нибудь в микрофон, либо один фон пишется

Offline

#2  16.12.06 08:32

Re: обработка аудио данных

анализатор уровня, по идее... как везде.
в настройки кидаешь ползунок чувствительности. кароч, если уровень сигнала ниже определенного порога - считается, что никто ничо не сказал...

зы. я херню какую-то написал. кто понял - перефразируйте, плиз... заранее, спасибо.

Offline

#3  16.12.06 13:16

Re: обработка аудио данных

меня сам алгоритм интересует, а не компоненты какие-либо
то есть структура PCM-сэмплов, чтобы определить по каким байтам амплитуда строится
кстати, вопрос: если писать в формате pcm16, 8kHz, mono, то сэмпл 20ms сколько места займёт?

Offline

#4  16.12.06 17:26

Re: обработка аудио данных

На чем реализуешь?
Вообще битрейт считается так = (nChannels * nSamplesPerSec * wBitsPerSample) / 8
nChannels - число каналов
nSamplesPerSec - число выборок в секунду (частота дискретизации)
wBitsPerSample - размер одной выборки
Потом умножаешь на время и вот тебе разме данных за определённое время.
А вообще каждая выборка это значение амплитуды в данный момент времени.
Если где ошибся пусть меня поправят.

Исправлено Rastaman (16.12.06 17:28)

Offline

#5  16.12.06 18:11

Re: обработка аудио данных

на С++ реализовать это надо
то есть получается сэмпл длительностью 20ms будет весить (1*8000*16/8)/50 = 320 байт? верно?
и где в этих байтах искать амплитуду то? :)
ведь каждая выборка кроме амплитуды содержит еще и частоту? или как?

Offline

#6  16.12.06 20:00

Re: обработка аудио данных

simplex, ну ты и смотри все эти 320 байт. установи порог, скажем, 20 и сравнивайс ним каждый, больше или нет. ну, можно брать байт 50 из этих 320-ти, допустим...

Offline

#7  16.12.06 20:37

Re: обработка аудио данных

Ratus, объясни на пальцах, а то я чего-то недопонимаю
я просто не представляю как аудио данные хранятся в компе
и, кстати, какой смысл смотреть каждый байт? если простейший сэмпл 16 бит

Offline

#8  17.12.06 02:02

Re: обработка аудио данных

simplex, нет, частота там не хранится. Каждая выборка это тупо уровень сигнала.

Попробуй так. Прими за уровень фона процентов 30% макс. уровня сигнала.
Например выборка весит 2 байта. 2^(2*8)=65535 - максимальное число.
65535*0.3=19660 если в выборке число больше этого значит туда кто-то
говорит иначе это просто фон. И далее регулируешь уровень фона.

Offline

#9  17.12.06 14:03

Re: обработка аудио данных

ага
с сигналами я уже разобрался, спасибо
но нужно не фон регулировать, а определить закончил ли человек говорить, и если да, то передать управление в другой модуль
то есть нужно найти паузу длиной около секунды
смотреть каждый сэмпл из 8000, по-моему, не имеет смысла
я так понимаю нужно как-то усреднить уровень сигнала в течение одной секунды и сравнивать его с некоторым числом
тогда еще вопрос: как этот самый уровень усреднить? :)

Offline

#10  17.12.06 16:19

Re: обработка аудио данных

среднее арифметическое считай.

simplex написал(а):

если простейший сэмпл 16 бит

ну значит два байта бери...

я вообще с 4-х битным звуком тока работал))))

Исправлено Ratus (17.12.06 16:20)

Offline

#11  18.12.06 02:19

Re: обработка аудио данных

simplex, А что собственно мешает тебе обрабатывать такие данные?
У тебя ограничены ресурсы? Нормальный компьютер в лёгкую такую обработку вывезет.
В крайнем случае бери не каждую выборку а через одну.
А если усреднять то имхо очень хитро т.к. в течении секунды можно успеть чё нить сказать а прога это не словит или на фон будет срабатывать. Тут каждую секунду лучше анализировать какой нить функцией.

Offline

#12  18.12.06 06:43

Re: обработка аудио данных

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

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

Исправлено Ratus (18.12.06 06:49)

Offline

#13  18.12.06 09:52

Re: обработка аудио данных

Rastaman написал(а):

У тебя ограничены ресурсы?

угу... на смартфоне это работать будет
именно поэтому с дополнительными инструментами - облом
ладно, вроде понятно все
всем спасибо

Offline

Программирование и БД » обработка аудио данных 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.088 сек.
Выполнено 14 запросов.