Давно уже (года 2) вертится в виде фонового процесса в мозгу, с периодически всплывающими напоминающими вызовами идея сваять голосовой движок.
Варианты:
1) Произношение по буквам
Преимущества: легкость реализации, малое количество сэмплов.
Недостатки: низкое качество речи, трудно воспринимаемое неподготовленным слушателем.
2) Произношение по слогам
Преимущества: повышенное качество речи.
Недостатки: реализация труднее чем п.1, большое количество сэмплов.
3) Произношение по словам
Преимущество: максимальное качество воспроизведения.
Недостатки: реализация нереальна для одиночного разработчика, потому что количество сэмплов для русского языка порядка 120 тысяч, а если учитывать все падежи, и прочие особенности, то вообще нереальное.
Как итог, я лично пока готов заниматься только вариантом 1.
Есть у кого-нибудь соображения в тему?
Проект: Речевой движок
идея отличная.. но даже в первом варианте придется анализировать слово целиком, даже тщательней чем во 2-м варианте (т.к. надо определять мягкость/твердость, и т.д., в то время как во 2м варианте просто проигрываем нужный слог). В 3-м варианте конечно количество семплов неисчисляемо, зато код должен будет обрабатывать разве что только знаки препинания, а слова просто проигрывать (в отличие от 2-го не надо возиться с ударением, произношением букв не так как они пишутся (прим.: малако), хотя такой словарь вида " молоко-малако' " можно составить и для первых 2х вариантов).
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Ну, идея со словарями старая. Правда в текущих движках под Windоws, иногда доводят до абсурда. Например что у Катерины, что у Алёны слово "тел" всегда читается в конце предложения как "телефон", как результат появляются пёрлы вроде "Коридоры были завалены множеством... телефон".
Думаю, что можно совместить все три вариант или только два. Не обязательно все существующие слова забивать в базу (представляю, как размер у неё получится, да и невозможно это), а только наиболее часто употребляемые или наименее качественно воспроизводимые другими методами. Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри ;-).
..bw
..bw
ИМХО проблемно все имена знать, а тем более правильно произносить. По этой причине я остановлюсь либо на 1 варианте, либо на 2. Скорее всего изначально 1, затем переработаю до 2. Просто в процессе написания варианта 1 уже будут готовы промежуточные процедуры и написание варианта 2 несколько облегчится. Плюс потребуется решить проблему базы данных соответствия произносимых слов. Написание парсера (синтаксического анализатора) тоже непростая задача.Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри
Интересная тема, только идея была организовать воспроизведение слов в (к примеру) .мр3. Я конечно понимаю, что медиабибилиотека будет ого-го, но все же...
Эх, если б молодость бы знала, а старость все могла
Эх, если б молодость бы знала, а старость все могла
Для воспроизведения слов mp3 возможно подойдет, но для звуков и слогов сомнительно, имхо будет заметное ухудшение разборчивости речи, кроме того усложнение реализации - нет готовой библиотеки, чтобы подать на вход упакованные данные, а на выходе получить распакованные.
А также:
www.vorbis.com
А также:
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[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
Нагуглил список слогов здесь http://lingvoforum.net
В списке 6357 слогов.
Впрочем я тут подумал - если отбросить правила русского языка (нам ведь не писать, а произносить) то можно обойтись 2-х, ну в крайнем случае 3-х символьными сочетаниями, а это чуть больше тысячи сочетаний, что уже в разы проще.
Пожалуй перед воспроизведением будет препарсинг слова. Преобразуем в таблицу указателей на звуковые блоки. Для каждого словосочетания достаточно 2-х байт - все равно количество словосочетаний не превысит 65536.
1) Итого например, слово "дирижабль", в первичном анализаторе:
0x0500 = ди
0x2300 = ри
0x1700 = жа
0x3300 = бль
0xFFFF = терминатор выражения
dw 0x0500, 0x2300, 0x1700, 0x3300, 0xFFFF
2) Далее вторичный код анализа воспроизводящий звук берет из таблицы указатели на области со звукам и циклически вызывает блок воспроизведения.
Можно конечно сразу составить таблицу соответствия буквосочетаний и областей звука, но например в 64-х битной среде уже придется по 8 байт на каждое буквосочетание расходовать если так. Хотя я пока не разбирался с перспективами использования Long Mode процессора.
Пожалуй перед воспроизведением будет препарсинг слова. Преобразуем в таблицу указателей на звуковые блоки. Для каждого словосочетания достаточно 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 1 guest