С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 40

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

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

Студворк — интернет-сервис помощи студентам
Ну начну:

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

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

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

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

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

Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2011, 12:25
Ответы с готовыми решениями:

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

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

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

2
0 / 0 / 0
Регистрация: 06.10.2008
Сообщений: 48
18.02.2011, 17:37
Обработка звука со спектральным анализом это уже 'обратные некорректные задачи'.. там целая наука
я лично сомневаюсь, что есть какая-нибудь библиотека с функцией 'сравнить звуковые файлы на похожесть'
если кто найдет - просветите, пожалуйста
0
1 / 1 / 1
Регистрация: 29.04.2011
Сообщений: 28
01.05.2011, 14:12
Могу тебя обрадовать на 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2011, 14:12
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru