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

Processing, playback of audio and video
Mario

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

Post by Mario »

Давно уже (года 2) вертится в виде фонового процесса в мозгу, с периодически всплывающими напоминающими вызовами идея сваять голосовой движок.

Варианты:

1) Произношение по буквам
Преимущества: легкость реализации, малое количество сэмплов.
Недостатки: низкое качество речи, трудно воспринимаемое неподготовленным слушателем.

2) Произношение по слогам
Преимущества: повышенное качество речи.
Недостатки: реализация труднее чем п.1, большое количество сэмплов.

3) Произношение по словам
Преимущество: максимальное качество воспроизведения.
Недостатки: реализация нереальна для одиночного разработчика, потому что количество сэмплов для русского языка порядка 120 тысяч, а если учитывать все падежи, и прочие особенности, то вообще нереальное.

Как итог, я лично пока готов заниматься только вариантом 1.

Есть у кого-нибудь соображения в тему?
User avatar
Gluk
Posts: 1222
Joined: Mon Apr 16, 2007 6:38 pm

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

Post by Gluk »

идея отличная.. но даже в первом варианте придется анализировать слово целиком, даже тщательней чем во 2-м варианте (т.к. надо определять мягкость/твердость, и т.д., в то время как во 2м варианте просто проигрываем нужный слог). В 3-м варианте конечно количество семплов неисчисляемо, зато код должен будет обрабатывать разве что только знаки препинания, а слова просто проигрывать (в отличие от 2-го не надо возиться с ударением, произношением букв не так как они пишутся (прим.: малако), хотя такой словарь вида " молоко-малако' " можно составить и для первых 2х вариантов).
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Mario

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

Post by Mario »

Ну, идея со словарями старая. Правда в текущих движках под Windоws, иногда доводят до абсурда. Например что у Катерины, что у Алёны слово "тел" всегда читается в конце предложения как "телефон", как результат появляются пёрлы вроде "Коридоры были завалены множеством... телефон".
User avatar
bw
Posts: 443
Joined: Thu Mar 01, 2007 4:16 pm

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

Post by bw »

Думаю, что можно совместить все три вариант или только два. Не обязательно все существующие слова забивать в базу (представляю, как размер у неё получится, да и невозможно это), а только наиболее часто употребляемые или наименее качественно воспроизводимые другими методами. Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри ;-).

..bw
Mario

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

Post by Mario »

Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри
ИМХО проблемно все имена знать, а тем более правильно произносить. По этой причине я остановлюсь либо на 1 варианте, либо на 2. Скорее всего изначально 1, затем переработаю до 2. Просто в процессе написания варианта 1 уже будут готовы промежуточные процедуры и написание варианта 2 несколько облегчится. Плюс потребуется решить проблему базы данных соответствия произносимых слов. Написание парсера (синтаксического анализатора) тоже непростая задача.
Валерьян
Posts: 1
Joined: Tue Oct 06, 2009 4:56 am

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

Post by Валерьян »

Интересная тема, только идея была организовать воспроизведение слов в (к примеру) .мр3. Я конечно понимаю, что медиабибилиотека будет ого-го, но все же...
Эх, если б молодость бы знала, а старость все могла :)
Mario

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

Post by Mario »

Для воспроизведения слов 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.
User avatar
art_zh
Kernel Developer
Posts: 1462
Joined: Fri Aug 14, 2009 1:46 am

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

Post by art_zh »

Mario wrote:Для воспроизведения слов mp3 возможно подойдет, но для звуков и слогов сомнительно, имхо будет заметное ухудшение разборчивости речи, кроме того усложнение реализации - нет готовой библотеки чтобы подать на вход упакованные данные, а на выходе получить распакованные.
Это зависит от того, на какой гармонике обрезается частотный спектр. Чем короче сигнал, и чем больше в нем взрывных и шипящих согласных - тем выше доля верхних частот в спектре.

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

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

Code: Select all

; В начале было Слово:
B32:        mov     ax, os_stack       ; Selector for os
[/size]
Mario

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

Post by Mario »

Нагуглил список слогов здесь http://lingvoforum.net
syls.7z
(21.14 KiB) Downloaded 438 times
В списке 6357 слогов.
Mario

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

Post by Mario »

Впрочем я тут подумал - если отбросить правила русского языка (нам ведь не писать, а произносить) то можно обойтись 2-х, ну в крайнем случае 3-х символьными сочетаниями, а это чуть больше тысячи сочетаний, что уже в разы проще.

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

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

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

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

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

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

Можно конечно сразу составить таблицу соответствия буквосочетаний и областей звука, но например в 64-х битной среде уже придется по 8 байт на каждое буквосочетание расходовать если так. Хотя я пока не разбирался с перспективами использования Long Mode процессора.
SoUrcerer
Posts: 2810
Joined: Mon Sep 24, 2007 11:11 am

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

Post by SoUrcerer »

Когда-то довольно давно ковырял espeak (http://espeak.sourceforge.net/). Разобрать то, что он произносит, можно очень хорошо - а занимает все это всего около 1 мб со словарями.
Используется синтез по формантам.
User avatar
Asper
Posts: 988
Joined: Fri Jun 27, 2008 3:22 pm

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

Post by Asper »

Нужно ещё будет подобрать подходящую скорость чтения, размер паузы между словами и в зависимости от знаков препинания.
maximYCH
Posts: 390
Joined: Sun Nov 04, 2007 2:46 am

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

Post by maximYCH »

Mario, каждый слог нужно озвучивать в двух вариантах - ударном и не ударном.
Mario

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

Post by Mario »

Ударный и не ударный зачастую сложно решить. Вот как различать слова "зАмок" и "замОк"? Это только на словах все просто - программе не доступен сложный алгоритм анализа, который есть в голове человека.
User avatar
Gluk
Posts: 1222
Joined: Mon Apr 16, 2007 6:38 pm

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

Post by Gluk »

ну espeak, например, вполне сносно отрабатывает значок ` в качестве ударения.
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests