Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как считать звук с микрофона? [D7, XP]


Страницы:   1 2

Rembo2010 ©   (2010-08-10 01:35:00) 

Здравствуйте! Я хотел написать программу (просто для себя), которая считывала бы звук с микрофона и, если звук громкий (например, хлопок), она, к примеру гасила бы экран.
Как считать звук, я знаю, только не понимаю что сделать чтобы экран погасал, только когда звук громкий?
Объясните мне пожалуйста, поподробнее, как это сделать, т.к. в Delphi я новичок.


KilkennyCat   (2010-08-11 19:45:00) [1]

но вообще, хлопковость уже не модно. модно силою мысли.


Сергей М.   (2010-08-11 18:39:00) [2]


> KilkennyCat ©   (11.08.10 18:35) [38]


Ну если только для "визуального прощепонимания", тогда возражений не имею)


KilkennyCat   (2010-08-11 18:35:00) [3]


> Сергей М. ©   (11.08.10 16:00) [33]
> KilkennyCat ©  про осциллограмму от балды ляпнул,

ну не совсем, просто это как бы визуально проще понимается, где громко, где негромко и какой частоты. Разумеется, рисовать ее не надо :))


Сергей М.   (2010-08-11 17:20:00) [4]


> Rembo2010   (11.08.10 16:40) [35]


А ты уже разобрался с PCM-форматом кодирования ?


Сергей М.   (2010-08-11 17:19:00) [5]


> RWolf ©   (11.08.10 16:11) [34]


А по барабану)
Главное чтобы юзер упал с дивана с теми же "дебицилами".
Что собснно автору и требуется)
Ну а ежели требуется отличить падение с дивана от хлопка в ладоши, достаточно добавить в начало цепочки один или более полосовых фильтров, отсекающих ненужные участки спектра.


Rembo2010   (2010-08-11 16:40:00) [6]


> Сергей М."Выпрямляешь" исходный сигнал, сглаживаешь его
> и подаешь на вход пороговового компаратора - и всех делов)


Можно поподробнее?


RWolf   (2010-08-11 16:11:00) [7]


> Сергей М. ©   (11.08.10 16:00) [33]

такой детектор не отличит хлопок в ладоши от падения юзера с дивана. Громкость-то одна.


Сергей М.   (2010-08-11 16:00:00) [8]


> Rembo2010   (11.08.10 15:28) [31]


KilkennyCat ©  про осциллограмму от балды ляпнул, а ты бросился искать "осциллограф")
Нафих он тут нужен, если все гораздо проще ?

"Выпрямляешь" исходный сигнал, сглаживаешь его и подаешь на вход пороговового компаратора - и всех делов)


Jeer   (2010-08-11 15:37:00) [9]


> главное чтобы она ЧТО-ТО делала


"Матюкалась" устроит ? :)


Rembo2010   (2010-08-11 15:28:00) [10]

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 она что-то делала (неважно что, это я уже сам доделаю, главное чтобы она ЧТО-ТО делала)? Ну или может как по другому?


RWolf   (2010-08-11 10:05:00) [11]

Алгоритм действий мне представляется следующим:
1. Непрерывно слушать аудиовход и строить спектр входящего сигнала.
2. Если суммарная энергия сигнала по спектру превышает некий порог, то нормализовать спектр и сравнить с эталонным, чтобы отсеять посторонние громкие звуки. При достаточно точном совпадении — сделать то, ради чего написана программа, будь то включить монитор или что-то иное.


KilkennyCat   (2010-08-11 08:04:00) [12]


> Малополезно если под "громким звуком" подразумевается что-
> то типа "хлопок".

на основе WAV не сложно построить осцилограмму.  дальше берется любой лгоритм сравнивания подобных.


Германн   (2010-08-11 02:29:00) [13]


> да, здорово было бы так пошутить)))))! Ну а все-таки, как
> можно сделать, вообще что использовать, какие-то функции

Дайте код ! В конце то концов!
:)


Германн   (2010-08-11 01:44:00) [14]


> KilkennyCat ©   (11.08.10 00:40) [26]
...
> > как реализовать "громкий звук"
>
> изучить формат WAV
>

Малополезно если под "громким звуком" подразумевается что-то типа "хлопок".


> Ну да, здорово было бы так пошутить)

Когда сможешь "так пошутить", патентуй решение. Заработаешь кучу денег.


KilkennyCat   (2010-08-11 00:40:00) [15]


> какие-то функции

я уже писал. готовый код мне лень искать, и еще более лень писать.

> как реализовать "громкий звук"

изучить формат WAV


Rembo2010   (2010-08-10 23:34:00) [16]


> Так ведь в Караоке как раз в том и весь весь цимус чтобы
> поорать))
> Собрались друзья-приятели культурно выпить-закусить-поорать
> под чью-то фанеру, а ты им такой облом устроить хочешь -
>  экран гасить)
> Это, я бы сказал, даже рисковано - по случаю бытия навеселе
> могут и экран надеть на уши автору такой программной засады))


Ну да, здорово было бы так пошутить)))))! Ну а все-таки, как можно сделать, вообще что использовать, какие-то функции (а именно как реализовать "громкий звук"?)))) Не понятно...


Сергей М.   (2010-08-10 15:00:00) [17]


> Rembo2010   (10.08.10 14:12) [23]


Так ведь в Караоке как раз в том и весь весь цимус чтобы поорать))
Собрались друзья-приятели культурно выпить-закусить-поорать под чью-то фанеру, а ты им такой облом устроить хочешь - экран гасить)
Это, я бы сказал, даже рисковано - по случаю бытия навеселе могут и экран надеть на уши автору такой программной засады))


  (2010-08-10 14:12:00) [18]

Удалено модератором


  (2010-08-10 14:05:00) [19]

Удалено модератором


KilkennyCat   (2010-08-10 14:01:00) [20]

правильно в дебициллах ;)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо