|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.01.2013, 05:57 | #1 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Алгоритм сравнения спектров (звуков)
Здравствуйте.
Пишу диплом: программу для голосового управления компьютером. Программа сравнивает полученные с микрофона данные с записанными. Если звуковые фрагменты совпадают на определенное количество процентов, то выполняется какое-то предустановленное действие на данную команду. Для сравнения звуковых фрагментов, я преобразовываю звук в спектральный вид, т.е. выполняю БПФ (Быстрое преобразование Фурье). Преобразование выполняется окнами (блоками), это видно на рисунке, окна расположенны в столбик, их 7 штук (для команды "Открыть"). Здесь изображены спектры двух произнесений команды "Открыть", которую я произнес 2 раза (под номером 1 и 2) которые и необходимо сравнить. Пробываю их сравнивать, путем определения их разницы. Результаты не очень утишительные. Может у Вас есть идеи, как их можно сравнить, учитывая то, что продолжительность команды, а также спекральное содержимое может отличаться при каждом новом произнесении команды. Буду рад любым идеям. Вот звуковая команда "Пуск":
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
Последний раз редактировалось chertovich; 21.01.2013 в 06:41. |
08.02.2013, 17:51 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
1. Почему именно 7?
2. Представляется, что дискретность по спектру выбрана избыточной, а по времени - недостаточной. По идее спектр нужно приводить к достаточно широким интервалам (заведомо не уже 1/3 октавы), но длина элементарного участка не должна превышать одну фонему, что, если мне не изменяет память, по прядку соответствует 10-30 мс. |
08.02.2013, 17:55 | #3 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Данный фрагмент длинной примерно от 500 до 700 мс. И получается, одно окно примерно равно 100 мс. Пробывал меньше, результат получается хуже... Получится больше окон, а поскольку, я их сравниваю один к одному, то результаты будут плачебными. Но все равно спасибо за помощь.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
|
09.02.2013, 14:53 | #4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Обычно, когда мы хотим получить результат, то делать следует так, как правильно, а не так, как проще.
Если одна фонема существенно короче 100 мс, значит, обработка фрагментов длиной 100 мс принципиально неспособна привести к решению поставленной задачи. Т.е. ориентироваться нужно, исходя из конкретных характеристик предметной области. Кроме того, считать, думаю, нужно не точное совпадение, а коэффициент корреляции, и для целей распознавания задавать некоторое пороговое значение. Ну и внутри "окна" должно быть не более 10-15 значений. Последний раз редактировалось s-andriano; 09.02.2013 в 15:11. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Корректная отображение спектров | digital-stream | Мультимедиа в Delphi | 1 | 25.05.2012 00:08 |
Сравнение звуков | MakarovAlv | Помощь студентам | 1 | 26.06.2009 16:13 |
алгоритм сравнения больших чисел со сдвигом | WOLFak | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 29.12.2008 22:36 |
Алгоритм сравнения | f3nix | Общие вопросы Delphi | 1 | 16.02.2008 11:12 |