На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> Распознавание речи без библиотек, В системах распознавания речи, содержащих слова, распознавание требует сравнения между входным словом и различными словами в словаре, пробуем обойтись без этого.
    Алгоритмов обработки сигналов великое множество. У каждого есть свои достоинства и недостатки. В распознавании звуковых сигналов приоритет отдан цифровой обработке сигналов где все построено на расчете изменений тока во времени. На заре развития электросвязи для измерения частоты использовались резонансные фильтры. Для объяснения работы органов слуха использовали резонансную теорию которая имеет много сторонников и до сих пор считается классической. Если допустить что при распознавании звуков главным является не определение спектра частот то появится возможность найти «философский камень» — алгоритмы распознавания звуковых сигналов не используя производных от времени которые бы однозначно классифицировали звуковую волну. Если считать что слуховой образ — не сумма тональностей а соотношение тональностей то не потребуется определять все частоты звуковом сигнале как делается в существующих программах распознавания звуковых сигналов. В системах распознавания речи, содержащих слова, распознавание происходит путем сравнения между входным словом и различными словами в словаре. Мы не будем делать этого.
    Мы можем узнать мелодию сыгранную на любом инструменте. Мы можем узнать слово «мама», и неважно, сказано это слово мужским голосом или женским. Мы можем узнать слово прокрутив его быстрее или тише с большей или меньшей громкостью. Единственное что остается неизменным это соотношения соседних частот а не сумма частот. Частоты определяются с помощью фильтров или разложением в ряд Фурье а так же подсчитыванием количества импульсов за единицу времени как в цифровых частотомерах. Измеряют таким способом лишь периодические сигналы без резких изменений частоты. Считается что для измерения речевых сигналов такой способ не подходит. Для музыкальных звуков такой способ можно применить. Предлагаю обсудить следующий алгоритм измерения частоты периодических звуковых сигналов без нахождения и вычисления частоты сигнала в заданном промежутке времени а сравнением количества периодов(импульсов) соседних участков звука.

    При цифровых измерениях частоты используется методы формирования измерительного строба с помощью эталонной последовательности и определения измеряемой частоты путем подсчета целых периодов измеряемой частоты в этом стробе (окне). В предлагаемом мной алгоритме в скользящем окне регистрируются одновременно количество периодов прямого и задержанного сигнала. Это можно сделать сдвигом исходного сигнал по оси времени. Для этого производим запись проекций уровней квантования от прямого и задержанного сигнала без квантования по времени. В нашем случае получим временной ряд показывающий соотношение прямого сигнала с запаздывающему. Импульсы записываются как точка и тире или как ноль и единица. Получим в итоге непрерывный код. Когда частота не меняется количество импульсов в прямом и задержанном сигнале будет одинаково, и в строке записи будет чередование нулей и единичек, примерно так : 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. А продвинутые программисты кому идея показалась не фиолетовой могут написать программу распознавания речи таким способом на других языках. Не забудьте потом упомянуть меня как автора идеи.
    Приглашаю к обсуждению. Уровень знаний и умений у меня ниже среднего, будьте снисходительны да и возраст ближе к мразматическому.
      Разместил этот материал на двух форумах программистов. откликов ни каких или не поняли или решили что бред. Просмотры есть но ни кто не сказал что такой алгоритм известен. Пробую разложить все по порядку кто не понял.
      1, Фонограмма очищается от шумов если требуется.
      2. Делается точная копия.
      3. Для речевого сигнала воспроизведение копии задерживаем на 10-50 мсек.
      4. В каждом периоде по всей записи выделяем одну или несколько точек квантования по уровню. Можно выбрать точки перехода через нуль. В этом случае каждый период будет представлен всего двумя точками и всего двумя байтами.
      5. Записи накладываются друг на друга и на оси времени будет лишь чередование точек перехода через нуль. Получим картину как сдвинутый негатив и позитив.
      6. Если записывать точку с основного сигнала как "точка" а с задержанного как "тире" получится бесконечная морзянка. Каждый период будет представлен два раза сдвинутые относительно друг друга.
      7. Дальнейшая обработка сигнала думается будет так же по линейному алгоритму. Об этом пока не думал.
      8. Для музыкального сигнала такой алгоритм вполне рабочий это можно доказать простыми арифметическими действиями без высшей математики. Доказательств не привожу это может сделать каждый простыми умозаключениями.
      Сообщение отредактировано: babai-rais -
        Предложенный алгоритм следит сколько фронтов импульсов укладывается между фронтами текущего сигнала к отстоящему на 10-50 мс. Самое близкое понятие которое могу привлечь для объяснения это работа цифрового частотомера. Там подсчитывают количество импульсов между эталонными строб импульсами. В предложенном мной алгоритме строб импульсами являются фронты импульсов задержанного сигнала. Понятия фонемы к этому уже неприемлемы как и всё что используется в традиционных способах распознавания речи. Мы с самого начала отказались от частотного анализа , и также в нашем полученном коде нет времени. Полученный код позволят сказать лишь во сколько раз предыдущая высота звука отличается от другой, в какой октаве и близка к какой ноте если находится в одной октаве.
        На выходе получаются данные количество комбинаций которых имеют предел, значит можно составить таблицу или алфавит?! Из чередования единичек и нулей можно создать укрупненный код для дикторо зависимого распознавания. По этому коду можно вычислить диктора. Это идея подойдет для дипломной работы. Может получится простая программа для умного дома распознавания дикторо зависимых команд. Что и как получится дальше, трудно сказать, это пока просто новая идея.
          Главное в анализе речевых данных – это выделить признаки, которые можно считать основными для идентификации лингвистического содержания. Все шумы и признаки которые отвечают за окраску можно отбросить. Принято использовать частотные или временные признаки отдельно или совместно. Считаю возможным использовать безразмерную величину как скважность, один из классификационных признаков импульсных систем, определяющий отношение периода следования (повторения) импульсов к длительности импульса.
          Речевой сигнал на выходе компаратора получится прямоугольным, с импульсами с различной длительности и периодов. Смысловое содержание при прослушивании сохраняется. Чем выше частота тем ближе звук к оригиналу. В теории ни бум-бум НО проверял на практике.
          Речь диктора можно прокрутить быстрее или тише значит изменятся и частотные и временные характеристики. Не изменится лишь скважность. Остается найти алгоритмы нахождения участков со скважностью присущих различным комбинациям звуков, Я предложил один из возможных алгоритмов который хотел бы обсудить а не с кем. :wall:
            Удивительно, что в форум еще кто-то пишет. Есть кстати каналы в телеграме по распознаванию речи, есть также каналы на ods.ai.

            Судя по всему, вы делаете что-то вроде получения частоты перехода через 0, такой признак обсуждался в литературе... лет 40-50 назад.
            Сейчас же мало кого интересуют признаки и DSP (для распознавания речи), используют либо классические MFCC и производные, либо прямо спектр на вход нейросети. Работа по выделению признаков ложится на нейросеть либо иной классификатор. Вроде бы, академически вопрос с новыми признаками еще исследуют, но на практике это уже не актуально.

            Хотел бы отметить, что вам и дальше будет не с кем обсудить, если вы будете некропостить и игнорировать теорию и современную практику. Если вы считаете, что теорию многодесятилетней давности изучать необязательно, то справедливо считать, что и ваши идеи изучать необязательно тоже.
              Цитата neurofish @
              Хотел бы отметить, что вам и дальше будет не с кем обсудить, если вы будете некропостить и игнорировать теорию и современную практику. Если вы считаете, что теорию многодесятилетней давности изучать необязательно, то справедливо считать, что и ваши идеи изучать необязательно тоже.

              Ваши речи правильные. Меня смущает то что почему на самой заре распознавания речи ни кто не додумался из фонограммы сразу печатать текст без всяких библиотек. Так если это возможно то мне пора давать Нобелевскую премию и докторскую без защиты. :tong: Ни чего не остается делать как показать язык потому что по существу алгоритма ни чего не сказали. А просмотры есть ждем-с,может кто то и прочитает. Если у меня появилась такая идея то я наверно искал что то подобное, но не нашел и поэтому решил с кем то обсудить.
                Для частоты 110 Hz длина волны составит примерно 3.1 м. Задержка сигнала на таком расстоянии составляет 9 ms по сравнению с микрофоном расположенным в начале трубы с длиной 3 м. Сигналы с микрофонов подаем реверсивный счетчик с показаний которого чертим график показывающий как изменяется частота. Длина волны с частотой 3400 гц будет 10 см значит при этой частоте внутри трубы при такой частоте разместится тридцать периодов. При постоянной частоте показания счетчика будут показывать сколько периодов в данный момент находится в трубе. Записывая показания счетчика можно проследить изменения высоты звука. Каждый звук разместиться на своей полочке как в нотной грамоте.
                Что не так в моих рассуждениях?
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script Execution time: 0,0783 ]   [ 14 queries used ]   [ Generated: 2.12.20, 19:31 GMT ]