0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 40
1

Сравнение двух звуковых файлов.

17.02.2011, 12:25. Показов 4464. Ответов 2
Метки нет (Все метки)

Ну начну:

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

Идея мне ясна. Мне не ясно как это реализовывать.
Первое: можно ли это дело сделать с помощью Delphi? Если да, то:
Как прочитать WAV файл и как распознать сигнал на входе карты.

Второе: на чем еще можно сделать, если на Delphi не возможно?

Третье: мож кто знает русскоязычные ресурсы, по теме оцифрования и обработки звука, только не применительно к студии, п применительно к моему случаю?

Дополнительно скажу, что сигнал с микрофона поступает в течении 24 часов.

Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2011, 12:25
Ответы с готовыми решениями:

Хранение звуковых файлов
Скажите пожалуйста, можно ли хранить в БД Access звуковые файлы (wav) и подключать их по id, в...

Сравнение двух текстовых файлов
Имеется 2 файла txt. Нужно сравнить эти файлы.Они почти идентичны, но в начале первого файла есть...

Сравнение двух огромных (!) файлов
Привет. Потребовалось сравнивать текстовые файлы (несколько файлов сравниваются с другим): Файл...

Сравнение двух таблиц, с разных вордовских файлов
Всем доброго времени суток, уважаемые знатоки, подскажите пожалуйста каким образом или возможно ли...

2
0 / 0 / 0
Регистрация: 06.10.2008
Сообщений: 48
18.02.2011, 17:37 2
Обработка звука со спектральным анализом это уже 'обратные некорректные задачи'.. там целая наука
я лично сомневаюсь, что есть какая-нибудь библиотека с функцией 'сравнить звуковые файлы на похожесть'
если кто найдет - просветите, пожалуйста
0
1 / 1 / 1
Регистрация: 29.04.2011
Сообщений: 28
01.05.2011, 14:12 3
Могу тебя обрадовать на Delphi это можно реализовать... Только вот слишком сложна проблема, которую ты собираешься решать.

Единственное, чем могу тебе помочь, это как прочитать WAVE файл формата PCM (Если интересует, как прочитать WAVE файл другого формата, например ADPCM или MPEG Layer 3, тоже могу рассказать, свяжись по ICQ или отправь письмо на мыло)…

Сначала опишу структуру WAVE файла:

4 Байта а Глобальный фрагмент WAVE файла (должно быть RIFF)
4 Байта а Размер глобального фрагмента ( равен размеру всего файла, за исключением 4 ёх байт глобального идентификатора RIFF )
4 Байта а Дополнительный идентификатор WAVE
4 Байта а Идентификатор формата определяющий формат звуковых данных, fmt ( последним символом является пробел ), этот идентификатор обозначает что вслед за ним следует структура описывающая формат исходных данных..
4 Байта а размер структуры описывающей формат исходных данных

{------------Структура описывающая формат исходных данных---------------------}

2 Байта а Идентификатор типа звукового формата. В модуле MMSystem определяются константы для многих типов форматов, например WAVE_FORMAT_PCM для данных в формате PCM…
2 Байта а Количество каналов, например, 1 ( моно ), 2 ( Стерео )
4 Байта а Частота дискретизации, т.е. количество выборок за секунду
4 Байта а Скорость воспроизведения
2 Байта а Используется для выравнивания на границу блока
2 Байта а Количество Бит в выборке сигнала. Стандартные значения – 8 (Бит) и 16 Бит
2 Байта а Размер дополнительных данных, распологающихся вслед за данной структурой в памяти на диске..

{---------------------------------------------------------------------------------------------------}

4 Байта а Идентификатор данных data означает, что вслед за ним будут идти данные
4 Байта а Размер данных идущих вслед за data

Далее идут непосредственно сами данные, размер которых определяется предыдущим полем…

А теперь приведу пример функции загружающей блок звуковых данных в память.
В качестве входных параметров указывается Имя загружаемого Wave файла ( FileName ), Указатель в который будет помещен указатель на выделенный блок звуковых данных (Buffer ), переменная в которую будет помещён Размер звуковых данных (BufferSize), Структура в которую будет занесена информация о формате звуковых данных )…
Если во время загрузки звуковых данных в память произойдёт ошибка, то функция возвратит False…

Uses MMSystem;

function LoadSound(const FileName:String; Buffer : Pointer; out BufferSize : Cardinal; out WaveFormat : TwaveFormatex ):Boolean;
var
F :File;
Id :array[0..8] of Char;
SizeHeaderWORD;
begin

Result := False;

//Проверяем существует ли указанный файл
If not FileExists(FileName) then Exit;

//Открываем файл
AssignFile(F,FileName);
try
Reset(F,1);

//Пропускаем первые 8 Байтов, это RIFF + размер глобального идентификатора
Seek(F,8);

//Считываем 8 Байтов
Blockread(F,Id,8);

//Если этот идентификатор не Wavefmt, то значит файл повреждён
if AnsiStrLiComp(Id,'WAVEfmt ',8)<>0 then
begin
CloseFile(F);
Exit;
end;

//Считываем размер структуры описывающей размер структуры описывающей формат звуковых данных
BlockRead(F,SizeHeader,4);

//Е сли размер структуры описывающей формат звуковых данных, больше максимально допустимой для формата PCM, то с такими файлами не работаем
If SizeHeader>SizeOf(TWaveFormatex) then
begin
CloseFile(F);
Exit;
end;

//Считываем структуру описывающую формат исходных данных
BlockRea
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2011, 14:12
Помогаю со студенческими работами здесь

Сравнение двух текстовых файлов без выгрузки в Memo
Здравствуйте. Стоит задача сравнения двух текстовых файлов. До этого, делал так: var a,b:string;...

Сравнение даты изменения двух файлов с использованием edit
Подскажите пожалуйста долгое время бьюсь над способом сравнения двух одинаковых файлов. в двух...

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

Воспроизвести несколько звуковых файлов одновременно
Как можно воспроизвести несколько файлов одновременно? SendMCIcommand выдает ошибку, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru