На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> Проект SoundAgent , Оригинальный подход к распознаванию речи в рамках проблемы искусственного интеллекта
    Проект SoundAgent. Исполняемая программа AiSound.
    Ссылка на папку
    https://disk.yandex.ru/d/cvK4ufMdDz7xrQ
    В ней архив V1_48send.zip

    В папке EXE – исполняемый файл AiSound.exe
    В папке PAS – исходники для Delphi7. Они же легко компилятся в Delphi 10.4 Никаких сторонних библиотек, только оригинальные. Для нейросетей взята старая добрая наработка NeuralBase, слегка «подкручена» и лежит в основной папке проекта в виде DCU и PAS.
    В папке WAV/ АЕИЧСК размеченная выборка слов в формате wav для нейросети, которая обучается распознавать звуки «АЕИЧСК»
    выборка1- основная
    минивыборка – усеченная
    тест1 – тестовая выборка
    weight31.txt – весовая матрица обученной сети
    InVector=24
    Layer0=24
    Layer1=24
    Layer2=12
    Layer3=6
    OutVector=6

    Выходной вектор имеет 6 значений, которые указывают на вероятность распознавания звуков АЕИЧСК.
    Входной вектор состоит из 12 нормированных значений амплитуд гармоник в кадре и 12 нормированных значений частот этих гармоник. Кадр это 40 миллисекунд потока от звуковой карты, в котором производится преобразование товарища Фурье. Всего кадр описывается двенадцатью гармониками. Их амплитуды и позиции на оси частот и составляют входной вектор.

    В чем идея? Во-первых это не законченный проект. Во-вторых это инструмент. Распознавание речи решенная задача и все тут… Не, не всё. Современный подход предполагает жесткое обучение. Моя же задача построить систему, которая не заканчивает свое обучение. Минимизировать все параметры речи на столько, на сколько это возможно, не потеряв при этом способность распознавания вообще, критерием которого является способность распознавания человеком. Выстроить иерархию признаков речи. Например в данном варианте их нет. Но в дальнейшем предполагается использовать в качестве входного вектора параметры огибающей, которая в иерархическом плане выше спектральных характеристик. Возможно для этого надо создать другую сеть, а не использовать одну общую.
    Сейчас мне бы хотелось понять, как работает обучение сети в случае появления ошибок разметки.
    Это актуальная ситуация. Многие звуки очень похожи и когда оператор создает обучающую выборку он в плену своих представлений о том или ином звуке. Например звук «А» и «Е» вообще выглядят на спектральной картине одинаково, а человек помечает их как разные. Как при этом работает сеть? А она не сходится. Попадает в локальный минимум и бесконечно в нем крутится.
    Всё это можно наблюдать и изучать, используя этот инструмент.

    Программа может работать с микрофоном и загружать в качестве данных заранее подготовленные звуковые файлы в формате WAV
    Частота дискретизации(Hz): 12000
    Mono 16 bit
    Для начала надо проверить работает ли микрофон. В верхнем поле мониторится реальный звук. Если что-то сказать, то появится огибающая. Значение Level указывает на линию дискретизации, ниже которой шум. Микрофон надо конечно хороший, это зависит от звуковой карты, где есть и аппаратный шумодав.
    Если микрофон не работает, то можно загрузить подготовленные мной файлы. В папке WAV/ АЕИЧСК
    File+LoadWav
    В окне Envelope появится огибающая спектральной плотности. Кнопка Play проигрывает по кругу, она же стоп.
    В окне Spectr можно просмотреть каждый кадр, нажимая < >.
    В окне FormMain – редактор спектров. После появления огибающей и спектра нажимаем Load from Сurrent. Появляется огибающая и спектр. Нажимая кнопки <> мы видим каждый кадр. Если левой кнопкой мышки нажать точно на гармонику, то она исчезнет. Если с нажатым Ctrl это сделать, то гармоника появится в том месте, где мышь. Так можно редактировать каждый кадр, а потом проиграть Play, будет забавно.
    Нейросети.
    File+Load Weight выбираем файл weight31.txt
    В правом окне FormView внизу галочка Recognition, нажимаем.
    File + Load Wav + !chelovek_new1%Ч%Е%А%Е%К.wav
    Это файл из разметки, поэтому он на 100% распознает. И мы увидим:
    2 : А= 0.00 Е= 0.00 И= 0.00 Ч= 1.00 С= 0.00 К= 0.00
    4 : А= 0.00 Е= 1.00 И= 0.00 Ч= 0.00 С= 0.00 К= 0.00
    8 : А= 1.00 Е= 0.00 И= 0.00 Ч= 0.00 С= 0.00 К= 0.00
    13 : А= 0.00 Е= 0.99 И= 0.00 Ч= 0.00 С= 0.00 К= 0.00
    17 : А= 0.00 Е= 0.00 И= 0.00 Ч= 0.00 С= 0.00 К= 1.00

    2,4,8,13,17 – номера кадров

    Если микрофон работает, то надо нажать в окне Envelpe галочку Mikrophone, произнести слово и закрыть галочку. Увидим распознавание.
      Ваша программа может синтезировать речь по образцу ?
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0262 ]   [ 15 queries used ]   [ Generated: 19.03.24, 06:06 GMT ]