На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> А что лучше применять?
    После выделения полезного сигнала из потока, какой лучше применить метод его обработки и поиска наибольшего совпадения в смысле скорость/качество/простота реализации.
    А то я на распутье в настоящее время.
      re: А что лучше применять?
      Немного сначала о формировании блока для обработки.
      С ростом производительности машин, с появлением специализированнных чипов наступает эпоха on-fly обработки, в отличии от прошлой называемой on-line. On-fly подразумевает непрерывную обработку, без мёртвого времени. Алгоритм подобен алгоритму вычисления скользящего среднего. Непрерывное обновление части данных буффера: первым пришёл последним уходишь - похоже на кольцо. Размер кольца выбирается опытным путём или с потолка.
      А теперь к обработке.
      Для on-line подходит любой стандартный алгоритм. Так как данные располагаются в памяти последовательно и пробегание по массиву - просто инкремент индекса. Для on-fly кольца - индекс необходимо возвращать на ноль при достижении граница буффера. И здесь уже необходимо иметь под рукой исходник цикла обработки либо расписыать его самому на основе раскрытых алгоритмов. Например быстрого преобразования Фурье из журнала СТА, конечно требуется переделка под целочисленные вычисления.
      Критерием в выборе подхода является скорость. Ведь в системе присутствуют и другие задачи которым тоже хочется быть активными.
      Инструментарий для первичного визуального анализа on-line или on-fly:
      1. Входной поток данных.
      2. Фурье-преобразование
      3. Отображение на экране частотного спектра в линейном/логарифмическом масштабе.
      4. и далее. Результаты последующей обработки
      Желательно иметь возможность просматривать ранее записанные входные потоки(off-line). Сразу несколько на экране для сопоставления и поиска закономерностей. Допустим, буква сказанная вами по-разному.
      Что делать в обработке?
      Проще всего начать с построения так называемой сигнатуры частотного спектра. Например, просто гистограммирование частотного спектра, в разумных границах, а не от нуля до бесконечности, в 8, 16, 32 ячейки, как понравится. Желательно также иметь сигнатуру при сдвинутых на полшага ячейках. Эта сигнатура логическая (например: бит =1 - есть пик в ячейке,0-нет). При обучении получается словарь. При обработке поиск наиболее похожего из словаря. Данный подход настраивается под частотный спектр конкретного пользователя.
      Более универсально перед началом построения сигнатур произвести нормализацию спектра. То есть привести его к пользователе-независимому виду. Что и происходит у нас в мозгу. Нормализирующая функция - нелинейное преобразование частотного спектра, нечто похожее на аппаратную функцию f :
      Out(w)=Integral(f(w,w'')*I(w`)dw`).
      I(w`)- входной спектр
      Out(w) - нормализованный спектр.
      И уже она будет являться носителем особенностей пользователя. Так например: при пропорциональном увеличении частот w''->const*w( проигрываем с большей скоростью) мы сразу чувствуем искуственность полученного голоса. Отсюда и вывод о необходимости нелинейного преобразования. Это избавит от построения словарей для каждого пользователя.
      Говорить.
      Смотреть на спектр, сигнатуру.
      Постараться определиться с алгоритмом построений нормализирующей функции.
      Пока всё.
        Сегодня ночью постараюсь осуществить
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0165 ]   [ 15 queries used ]   [ Generated: 19.04.24, 21:43 GMT ]