![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Я решил разобратся как работают файлы wav, с нуля.
Впринципи почти все понятно. WAV очень короткий звуковой фрагмент подгружается в буфер массив байтов Код:
buffer1: array [0..44099] of byte; WaveOutWrite Код:
procedure TForm1.PlayBuffer(soundBuffer: array of byte);
var
i, err: integer;
begin
with header do begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 1;
nSamplesPerSec := 44100;
wBitsPerSample := 8;
nBlockAlign := nChannels * (wBitsPerSample div 8);
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
cbSize := 0;
end;
if Opened = false then begin
err:=WaveOutOpen(addr(waveOut), 0, @header, Handle, 0, CALLBACK_WINDOW);
if Err <> 0 then Exit;
for i:=0 to 1 do begin
pBuf[i] := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, length(soundBuffer));
pBuffer[i]:=GlobalLock(pBuf[i]);
with outHdr[i] do begin
lpData := pbuffer[i];
dwBufferLength := length(soundBuffer);
dwUser := 0;
dwFlags := 0;
dwLoops := 0;
end;
err:=WaveOutPrepareHeader(waveOut, @outHdr[i], sizeof(outHdr));
if Err <> 0 then Exit;
copyMemory(pBuffer[i], @soundBuffer, length(soundBuffer));
err:=WaveOutWrite(waveOut, @outHdr[i], sizeof(outHdr));
if Err <> 0 then Exit;
end;
end else begin
for i:=0 to 1do
copyMemory(pBuffer[i], @soundBuffer, length(soundBuffer));
end;
end;И так далее wav файл постепенно подгружается в буфер и выводится на звуковую карту Теперь вопрос. Мне нужно как то получить с микрофона звуковой фрагмент в buffer1. Но как это сделать ума нехватает, прошу помоч советом. Мне это нужно что бы потом графически отобразить, шум в микрофоне, и при определенном уровне шума выполнить действие. Разбирался недавно как работает гугловская программа для перевода речи в текст, на удивление русская речь переводится на 90% успешно. Вот и хотел сделать програмку что бы по двойному хлопку в ладоши программа включала переводчик речи в текст и делала запрос в ютубе. Что бы не вставая с дивана просматривать ютуб) Последний раз редактировалось -sanya-, 12.04.2012 в 19:10. |