Форум: "Начинающим";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];
ВнизКак считать звук с микрофона? Найти похожие ветки
← →
Rembo2010 (2010-08-10 01:35) [0]Здравствуйте! Я хотел написать программу (просто для себя), которая считывала бы звук с микрофона и, если звук громкий (например, хлопок), она, к примеру гасила бы экран.
Как считать звук, я знаю, только не понимаю что сделать чтобы экран погасал, только когда звук громкий?
Объясните мне пожалуйста, поподробнее, как это сделать, т.к. в Delphi я новичок.
← →
trsas © (2010-08-10 01:43) [1]
> только не понимаю что сделать чтобы экран погасал
А что значит "экран погасал"? Но это так мелочи.
Что значит "звук громкий"?
← →
KilkennyCat © (2010-08-10 01:49) [2]Кнопкой проще.
> Что значит "звук громкий"?
это означает, что колебание мембраны микрофона стало несколько сильнее, чем обычно. вероятно, следует чисто для практичности добавить еще "за некоторый период времени относительно "тихого" периода времени"
← →
trsas © (2010-08-10 02:17) [3]
> KilkennyCat © (10.08.10 01:49) [2]
...
> это означает, что колебание мембраны микрофона стало несколько
> сильнее, чем обычно. вероятно, следует чисто для практичности
> добавить еще "за некоторый период времени относительно "тихого"
> периода времени"
А зачем домысливать за автора? Он ведь уже знает как считать звук.
← →
Юрий Зотов © (2010-08-10 02:39) [4]Надо хлопнуть по экрану. Сам погаснет, без микрофонов.
← →
KilkennyCat © (2010-08-10 02:55) [5]
> Юрий Зотов © (10.08.10 02:39) [4]
угу. завтра с утра такой экран у охранников "включать буду". то ли хлопнули, то ли еще что, программистов-то среди них нет, даж начинающих.
← →
Германн © (2010-08-10 02:58) [6]Удалено модератором
← →
Германн © (2010-08-10 03:00) [7]Удалено модератором
← →
KilkennyCat © (2010-08-10 03:09) [8]
> trsas © (10.08.10 02:17) [3]
> А зачем домысливать за автора?
а что еще делать-то...
я лично не знаю, что ему посоветовать...
монитор:
WM_SYSCOMMAND, SC_MONITORPOWER через SendMessage
http://msdn.microsoft.com/en-us/library/ms646360%28VS.85%29.aspx
микрофон:
http://msdn.microsoft.com/en-us/library/aa908147.aspx
← →
KilkennyCat © (2010-08-10 03:13) [9]по микрофону точнее вот эта:
http://msdn.microsoft.com/en-us/library/dd743847%28VS.85%29.aspx
> Германн © (10.08.10 03:00) [7]
обычные, охрана бизнес-центра. драйвер подсветки сдох.
← →
trsas © (2010-08-10 03:33) [10]Удалено модератором
← →
KilkennyCat © (2010-08-10 03:35) [11]Удалено модератором
← →
Германн © (2010-08-10 03:39) [12]Удалено модератором
← →
brother © (2010-08-10 05:21) [13]Удалено модератором
← →
ixen © (2010-08-10 06:56) [14]я не знаю как это реализовать программно, но если рассуждать логически то:
1) научись просто гасить экран, хотя бы по кнопке на форме
2) научись определять частоту входящего звука, в цифровом эквиваленте.
3) определи частоту звука как громкую, при которой следует выключать монитор
4) проверяй в таймере частоту входящего звука и сравнивай с громкой, если больше или равно гаси монитор
ИМХО
← →
RWolf © (2010-08-10 11:58) [15]> [14]
в результате монитор будет гаснуть от звука телевизора, упавшего предмета, дверного звонка…
← →
ixen (2010-08-10 12:03) [16]> в результате монитор будет гаснуть от звука телевизора,
> упавшего предмета, дверного звонка…
а как иначе? конечно будет... можно конечно включить анализатор звука.. который будет определять хлопок это или нет... но я думаю такой анализатор не каждый программист осилит...
← →
Virgo_Style © (2010-08-10 13:28) [17]
>2) научись определять частоту входящего звука, в цифровом эквиваленте.
>3) определи частоту звука как громкую,
Что такое, по-твоему, частота?
← →
Z from Police Academy (2010-08-10 13:35) [18]А если наорать на монитор, то и экран лопнет... печально.
← →
ixen (2010-08-10 13:44) [19]> Что такое, по-твоему, частота?
имелось в виду определить громкость в числовом эквиваленте.. в децибиллах..я в физике не очень...
← →
ixen (2010-08-10 13:44) [20]в децибеллах.. опечатался..
← →
KilkennyCat © (2010-08-10 14:01) [21]правильно в дебициллах ;)
← →
имя (2010-08-10 14:05) [22]Удалено модератором
← →
имя (2010-08-10 14:12) [23]Удалено модератором
← →
Сергей М. © (2010-08-10 15:00) [24]
> Rembo2010 (10.08.10 14:12) [23]
Так ведь в Караоке как раз в том и весь весь цимус чтобы поорать))
Собрались друзья-приятели культурно выпить-закусить-поорать под чью-то фанеру, а ты им такой облом устроить хочешь - экран гасить)
Это, я бы сказал, даже рисковано - по случаю бытия навеселе могут и экран надеть на уши автору такой программной засады))
← →
Rembo2010 (2010-08-10 23:34) [25]
> Так ведь в Караоке как раз в том и весь весь цимус чтобы
> поорать))
> Собрались друзья-приятели культурно выпить-закусить-поорать
> под чью-то фанеру, а ты им такой облом устроить хочешь -
> экран гасить)
> Это, я бы сказал, даже рисковано - по случаю бытия навеселе
> могут и экран надеть на уши автору такой программной засады))
Ну да, здорово было бы так пошутить)))))! Ну а все-таки, как можно сделать, вообще что использовать, какие-то функции (а именно как реализовать "громкий звук"?)))) Не понятно...
← →
KilkennyCat © (2010-08-11 00:40) [26]
> какие-то функции
я уже писал. готовый код мне лень искать, и еще более лень писать.
> как реализовать "громкий звук"
изучить формат WAV
← →
Германн © (2010-08-11 01:44) [27]
> KilkennyCat © (11.08.10 00:40) [26]
...
> > как реализовать "громкий звук"
>
> изучить формат WAV
>
Малополезно если под "громким звуком" подразумевается что-то типа "хлопок".
> Ну да, здорово было бы так пошутить)
Когда сможешь "так пошутить", патентуй решение. Заработаешь кучу денег.
← →
Германн © (2010-08-11 02:29) [28]
> да, здорово было бы так пошутить)))))! Ну а все-таки, как
> можно сделать, вообще что использовать, какие-то функции
Дайте код ! В конце то концов!
:)
← →
KilkennyCat © (2010-08-11 08:04) [29]
> Малополезно если под "громким звуком" подразумевается что-
> то типа "хлопок".
на основе WAV не сложно построить осцилограмму. дальше берется любой лгоритм сравнивания подобных.
← →
RWolf © (2010-08-11 10:05) [30]Алгоритм действий мне представляется следующим:
1. Непрерывно слушать аудиовход и строить спектр входящего сигнала.
2. Если суммарная энергия сигнала по спектру превышает некий порог, то нормализовать спектр и сравнить с эталонным, чтобы отсеять посторонние громкие звуки. При достаточно точном совпадении — сделать то, ради чего написана программа, будь то включить монитор или что-то иное.
← →
Rembo2010 (2010-08-11 15:28) [31]procedure TForm1.OnWaveIn;
var
i: integer;
data8: PData8;
data16: PData16;
h: integer;
XScale, YScale: single;
begin
h := PaintBox1.Height;
XScale := PaintBox1.Width / BufSize;
if Bits16 then begin
data16 := PData16(PWaveHdr(Msg.lParam)^.lpData);
YScale := h / (1 shl 16);
for i := 0 to BufSize - 1 do
p^[i] := Point(round(i * XScale),
round(h / 2 - data16^[i] * YScale));
end else begin
Data8 := PData8(PWaveHdr(Msg.lParam)^.lpData);
YScale := h / (1 shl 8);
for i := 0 to BufSize - 1 do
p^[i] := Point(round(i * XScale),
round(h - data8^[i] * YScale));
end;
with PaintBox1.Canvas do begin
Brush.Color := clWhite;
FillRect(ClipRect);
Polyline(Slice(p^, BufSize));
end;
if stop
then WaveInAddBuffer(WaveIn, PWaveHdr(Msg.lParam),
SizeOf(TWaveHdr))
else stop := true;
end;
Вот эта функция выводит сигнал с микрофона в PainBox, там такая типа осицилограмма. Как может ее переделать чтобы при превышениии уровня осициллограмме в PainBox"e она что-то делала (неважно что, это я уже сам доделаю, главное чтобы она ЧТО-ТО делала)? Ну или может как по другому?
← →
Jeer © (2010-08-11 15:37) [32]
> главное чтобы она ЧТО-ТО делала
"Матюкалась" устроит ? :)
← →
Сергей М. © (2010-08-11 16:00) [33]
> Rembo2010 (11.08.10 15:28) [31]
KilkennyCat © про осциллограмму от балды ляпнул, а ты бросился искать "осциллограф")
Нафих он тут нужен, если все гораздо проще ?
"Выпрямляешь" исходный сигнал, сглаживаешь его и подаешь на вход пороговового компаратора - и всех делов)
← →
RWolf © (2010-08-11 16:11) [34]
> Сергей М. © (11.08.10 16:00) [33]
такой детектор не отличит хлопок в ладоши от падения юзера с дивана. Громкость-то одна.
← →
Rembo2010 (2010-08-11 16:40) [35]
> Сергей М."Выпрямляешь" исходный сигнал, сглаживаешь его
> и подаешь на вход пороговового компаратора - и всех делов)
Можно поподробнее?
← →
Сергей М. © (2010-08-11 17:19) [36]
> RWolf © (11.08.10 16:11) [34]
А по барабану)
Главное чтобы юзер упал с дивана с теми же "дебицилами".
Что собснно автору и требуется)
Ну а ежели требуется отличить падение с дивана от хлопка в ладоши, достаточно добавить в начало цепочки один или более полосовых фильтров, отсекающих ненужные участки спектра.
← →
Сергей М. © (2010-08-11 17:20) [37]
> Rembo2010 (11.08.10 16:40) [35]
А ты уже разобрался с PCM-форматом кодирования ?
← →
KilkennyCat © (2010-08-11 18:35) [38]
> Сергей М. © (11.08.10 16:00) [33]
> KilkennyCat © про осциллограмму от балды ляпнул,
ну не совсем, просто это как бы визуально проще понимается, где громко, где негромко и какой частоты. Разумеется, рисовать ее не надо :))
← →
Сергей М. © (2010-08-11 18:39) [39]
> KilkennyCat © (11.08.10 18:35) [38]
Ну если только для "визуального прощепонимания", тогда возражений не имею)
← →
KilkennyCat © (2010-08-11 19:45) [40]но вообще, хлопковость уже не модно. модно силою мысли.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.004 c