Проект: Речевой движок

Processing, playback of audio and video
  • идея отличная.. но даже в первом варианте придется анализировать слово целиком, даже тщательней чем во 2-м варианте (т.к. надо определять мягкость/твердость, и т.д., в то время как во 2м варианте просто проигрываем нужный слог). В 3-м варианте конечно количество семплов неисчисляемо, зато код должен будет обрабатывать разве что только знаки препинания, а слова просто проигрывать (в отличие от 2-го не надо возиться с ударением, произношением букв не так как они пишутся (прим.: малако), хотя такой словарь вида " молоко-малако' " можно составить и для первых 2х вариантов).
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Ну, идея со словарями старая. Правда в текущих движках под Windоws, иногда доводят до абсурда. Например что у Катерины, что у Алёны слово "тел" всегда читается в конце предложения как "телефон", как результат появляются пёрлы вроде "Коридоры были завалены множеством... телефон".
  • Думаю, что можно совместить все три вариант или только два. Не обязательно все существующие слова забивать в базу (представляю, как размер у неё получится, да и невозможно это), а только наиболее часто употребляемые или наименее качественно воспроизводимые другими методами. Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри ;-).

    ..bw
  • Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри
    ИМХО проблемно все имена знать, а тем более правильно произносить. По этой причине я остановлюсь либо на 1 варианте, либо на 2. Скорее всего изначально 1, затем переработаю до 2. Просто в процессе написания варианта 1 уже будут готовы промежуточные процедуры и написание варианта 2 несколько облегчится. Плюс потребуется решить проблему базы данных соответствия произносимых слов. Написание парсера (синтаксического анализатора) тоже непростая задача.
  • Интересная тема, только идея была организовать воспроизведение слов в (к примеру) .мр3. Я конечно понимаю, что медиабибилиотека будет ого-го, но все же...
    Эх, если б молодость бы знала, а старость все могла :)
  • Для воспроизведения слов mp3 возможно подойдет, но для звуков и слогов сомнительно, имхо будет заметное ухудшение разборчивости речи, кроме того усложнение реализации - нет готовой библиотеки, чтобы подать на вход упакованные данные, а на выходе получить распакованные.

    А также:
    www.vorbis.com
    If you decide to sell your music in MP3 format, you are responsible for paying Fraunhofer a percentage of each sale because you are using their patents. Vorbis is patent and license-free, so you will never need to pay anyone in order to sell, give away, or stream your own music.
  • Mario wrote:Для воспроизведения слов mp3 возможно подойдет, но для звуков и слогов сомнительно, имхо будет заметное ухудшение разборчивости речи, кроме того усложнение реализации - нет готовой библотеки чтобы подать на вход упакованные данные, а на выходе получить распакованные.
    Это зависит от того, на какой гармонике обрезается частотный спектр. Чем короче сигнал, и чем больше в нем взрывных и шипящих согласных - тем выше доля верхних частот в спектре.

    Но в любом случае, частотная запись акустических сигналов - гораздо компактнее осциллографической, и лучше подходит для дальнейшего микширования, распознавания и синтеза.

    А библиотека кодеков действительно нужна. Так же как и драйвер для HD Audio.
    Евангелие от Иоанна: стих 1

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • Нагуглил список слогов здесь http://lingvoforum.net
    syls.7z (21.14 KiB)
    Downloaded 438 times
    В списке 6357 слогов.
  • Впрочем я тут подумал - если отбросить правила русского языка (нам ведь не писать, а произносить) то можно обойтись 2-х, ну в крайнем случае 3-х символьными сочетаниями, а это чуть больше тысячи сочетаний, что уже в разы проще.

    Пожалуй перед воспроизведением будет препарсинг слова. Преобразуем в таблицу указателей на звуковые блоки. Для каждого словосочетания достаточно 2-х байт - все равно количество словосочетаний не превысит 65536.

    1) Итого например, слово "дирижабль", в первичном анализаторе:

    0x0500 = ди
    0x2300 = ри
    0x1700 = жа
    0x3300 = бль

    0xFFFF = терминатор выражения

    dw 0x0500, 0x2300, 0x1700, 0x3300, 0xFFFF

    2) Далее вторичный код анализа воспроизводящий звук берет из таблицы указатели на области со звукам и циклически вызывает блок воспроизведения.

    Можно конечно сразу составить таблицу соответствия буквосочетаний и областей звука, но например в 64-х битной среде уже придется по 8 байт на каждое буквосочетание расходовать если так. Хотя я пока не разбирался с перспективами использования Long Mode процессора.
  • Когда-то довольно давно ковырял espeak (http://espeak.sourceforge.net/). Разобрать то, что он произносит, можно очень хорошо - а занимает все это всего около 1 мб со словарями.
    Используется синтез по формантам.
  • Нужно ещё будет подобрать подходящую скорость чтения, размер паузы между словами и в зависимости от знаков препинания.
  • Mario, каждый слог нужно озвучивать в двух вариантах - ударном и не ударном.
  • Ударный и не ударный зачастую сложно решить. Вот как различать слова "зАмок" и "замОк"? Это только на словах все просто - программе не доступен сложный алгоритм анализа, который есть в голове человека.
  • ну espeak, например, вполне сносно отрабатывает значок ` в качестве ударения.
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Who is online

    Users browsing this forum: No registered users and 6 guests