-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Распознавание речи без библиотек

Пятница, 30 Октября 2020 г. 11:27 + в цитатник
babai-rais: Алгоритмов обработки сигналов великое множество. У каждого есть свои достоинства и недостатки. В распознавании звуковых сигналов приоритет отдан цифровой обработке сигналов где все построено на расчете изменений тока во времени. На заре развития электросвязи для измерения частоты использовались резонансные фильтры. Для объяснения работы органов слуха использовали резонансную теорию которая имеет много сторонников и до сих пор считается классической. Если допустить что при распознавании звуков главным является не определение спектра частот то появится возможность найти «философский камень» — алгоритмы распознавания звуковых сигналов не используя производных от времени которые бы однозначно классифицировали звуковую волну. Если считать что слуховой образ — не сумма тональностей а соотношение тональностей то не потребуется определять все частоты звуковом сигнале как делается в существующих программах распознавания звуковых сигналов. В системах распознавания речи, содержащих слова, распознавание происходит путем сравнения между входным словом и различными словами в словаре. Мы не будем делать этого.
Мы можем узнать мелодию сыгранную на любом инструменте. Мы можем узнать слово «мама», и неважно, сказано это слово мужским голосом или женским. Мы можем узнать слово прокрутив его быстрее или тише с большей или меньшей громкостью. Единственное что остается неизменным это соотношения соседних частот а не сумма частот. Частоты определяются с помощью фильтров или разложением в ряд Фурье а так же подсчитыванием количества импульсов за единицу времени как в цифровых частотомерах. Измеряют таким способом лишь периодические сигналы без резких изменений частоты. Считается что для измерения речевых сигналов такой способ не подходит. Для музыкальных звуков такой способ можно применить. Предлагаю обсудить следующий алгоритм измерения частоты периодических звуковых сигналов без нахождения и вычисления частоты сигнала в заданном промежутке времени а сравнением количества периодов(импульсов) соседних участков звука.

При цифровых измерениях частоты используется методы формирования измерительного строба с помощью эталонной последовательности и определения измеряемой частоты путем подсчета целых периодов измеряемой частоты в этом стробе (окне). В предлагаемом мной алгоритме в скользящем окне регистрируются одновременно количество периодов прямого и задержанного сигнала. Это можно сделать сдвигом исходного сигнал по оси времени. Для этого производим запись проекций уровней квантования от прямого и задержанного сигнала без квантования по времени. В нашем случае получим временной ряд показывающий соотношение прямого сигнала с запаздывающему. Импульсы записываются как точка и тире или как ноль и единица. Получим в итоге непрерывный код. Когда частота не меняется количество импульсов в прямом и задержанном сигнале будет одинаково, и в строке записи будет чередование нулей и единичек, примерно так : 0101010101…. , при любых равных частотах. При разных частотах количество будет отличатся. Во сколько раз одна частота больше другой покажет соотношение нулей единиц. Строка 110110110110110…. показывает что одна частота больше другой в два раза. Для музыкальных сигналов легко представить как будет выглядеть файл записи музыки таким способом из чередования единиц и нулей. Частота соседних октав различается в два раза, соотношения между нотами в октаве тоже известны поэтому непрерывный код из единиц и нулей можно записать в виде нотной грамоты. Если на одной числовой оси мы будем записывать »1» с канала с основным сигналом а «0» от задержанного на сколько то миллисекунд то появится возможность судить как изменяется сигнал в относительных величинах в окне задержки. Сдвиг (ширину окна) для музыкальных мелодий рассчитываем исходя из законов музыкальной грамоты. Какой получится результат при такой записи музыкальных гармонических колебаний можно представить путем простых расчётов и умозаключений. Написать программу сравнения, подсчета и вычисления соотношений прямого и задержанного сигнала не так сложно. Время задержки рассчитывается исходя из нотной грамоты. Для речевых сигналов время задержки выберем исходя из особенностей слухового восприятия. Слуховой аппарат, как и любая другая колебательная система, инерционная. При исчезновении звука слуховое ощущение исчезает не сразу, а постепенно, уменьшаясь до нуля. Если к слушателю приходят два коротких звуковых импульса, одинаковых по частотному составу и уровню, но один из них запаздывает, то они будут восприниматься слитно при запаздывании, не превышающем 50 мс. При больших интервалах запаздывания оба импульса воспринимаются раздельно, возникает эхо. Если и для речевых сигналов получится создать свою "нотную" азбуку где место каждого звука будет определятся соотношением к предыдущему звуку тогда не потребуются библиотеки фонем.

Реализовать эту бредовую идею мне не под силу. Приглашаю к обсуждению и сотрудничеству тех кто решил изучать как и я язык Python.

Для проверки идеи, моего уровня знаний пока хватило лишь разобраться с работой портов GPIO Raspberry Pi и с помощью программы на Python вывести на экран сигналы поданные на два порта от двух генераторов сигналов. Высокий уровень с одного входа записывается единицей с другого нулем. При подаче сигнала лишь на один порт ни какой информации об сигнале получить нельзя, какую бы частоту мы не подавали на выходе будут или одни единицы или нули. При подаче одновременно одинаковой по частоте сигнала на оба порта на выходе получается чередование единиц и нулей, можно делать вывод что частоты равны. Если одна частота выше другой в два раза соотношение нулей и единиц будет 2:1. Множитель 2 показывает что частоты отличаются на октаву. Имеет значение именно соотношение («во сколько раз выше»), а не разница частот («на сколько герц больше»). Например, между 100 и 200 Гц такой же интервал, как между 300 и 600 Гц, — октава (2:1). Чтобы сложить два интервала, мы перемножаем их соотношения. «На октаву выше» значит «в 2 раза выше по частоте», поэтому на две октавы выше — в 4 раза выше, на три октавы — в 8 раз выше, и так далее. Если частоты генераторов находятся в одной октаве то получаем ряд из чередование нулей и единиц с точками "биения". Чем меньше разница по частоте тем реже переходы через периоды. На этом мои эксперименты пока закончились.
Если кто не понял того что я пытаюсь объяснить посмотрите и поиграйте с интерактивным сложения волн и оцифровки сигнала. Следующим этапом хочу сделать задержку звука на Raspberry Pi Затем используя запись импульсов в непрерывный ряд от основного канала и со сдвинутого по времени можно определять как меняется частота сигнала на отрезке времени задержки. Для музыкальной мелодии исполненной на разных инструментах графическое отображение частоты будет одинаковым. Полученный график можно преобразовать в запись нотной грамоте.
Задача стоит в определении буквенных комбинаций а не отдельных букв.По данным «Словаря русского языка», из 32 букв можно составить 992 двухбуквенных комбинаций. Примерно такого порядка должен получится алфавит кода перевода речевого сообщения в печатные символы по предлагаемому мной алгоритму.

Я не нашел в интернете способа записи нот с помощью определения интервала между соседними участками в фонограмме. Если даже такой способ существует то работая над этим проектом смогу изучать программирование на Python. А продвинутые программисты кому идея показалась не фиолетовой могут написать программу распознавания речи таким способом на других языках. Не забудьте потом упомянуть меня как автора идеи.
Приглашаю к обсуждению. Уровень знаний и умений у меня ниже среднего, будьте снисходительны да и возраст ближе к мразматическому.

https://forum.sources.ru/index.php?showtopic=420429&view=findpost&p=3841310

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку