Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Jul 16, 2020 4:54 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 65 posts ]  Go to page 1 2 3 4 5 Next
Author Message
PostPosted: Sun Jul 05, 2009 12:12 pm 
Давно уже (года 2) вертится в виде фонового процесса в мозгу, с периодически всплывающими напоминающими вызовами идея сваять голосовой движок.

Варианты:

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

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

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

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

Есть у кого-нибудь соображения в тему?


Top
   
PostPosted: Sun Jul 05, 2009 2:12 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
идея отличная.. но даже в первом варианте придется анализировать слово целиком, даже тщательней чем во 2-м варианте (т.к. надо определять мягкость/твердость, и т.д., в то время как во 2м варианте просто проигрываем нужный слог). В 3-м варианте конечно количество семплов неисчисляемо, зато код должен будет обрабатывать разве что только знаки препинания, а слова просто проигрывать (в отличие от 2-го не надо возиться с ударением, произношением букв не так как они пишутся (прим.: малако), хотя такой словарь вида " молоко-малако' " можно составить и для первых 2х вариантов).

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sun Jul 05, 2009 3:32 pm 
Ну, идея со словарями старая. Правда в текущих движках под Windоws, иногда доводят до абсурда. Например что у Катерины, что у Алёны слово "тел" всегда читается в конце предложения как "телефон", как результат появляются пёрлы вроде "Коридоры были завалены множеством... телефон".


Top
   
PostPosted: Sun Jul 05, 2009 5:48 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 426
Думаю, что можно совместить все три вариант или только два. Не обязательно все существующие слова забивать в базу (представляю, как размер у неё получится, да и невозможно это), а только наиболее часто употребляемые или наименее качественно воспроизводимые другими методами. Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри ;-).

..bw


Top
   
PostPosted: Sun Jul 05, 2009 8:06 pm 
Quote:
Например не будет большой сложностью воспроизводить все имена третьим способом, а так же слово Колибри

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


Top
   
PostPosted: Tue Oct 06, 2009 5:57 am 
Offline

Joined: Tue Oct 06, 2009 4:56 am
Posts: 1
Интересная тема, только идея была организовать воспроизведение слов в (к примеру) .мр3. Я конечно понимаю, что медиабибилиотека будет ого-го, но все же...
Эх, если б молодость бы знала, а старость все могла :)


Top
   
PostPosted: Tue Oct 06, 2009 9:44 am 
Для воспроизведения слов mp3 возможно подойдет, но для звуков и слогов сомнительно, имхо будет заметное ухудшение разборчивости речи, кроме того усложнение реализации - нет готовой библиотеки, чтобы подать на вход упакованные данные, а на выходе получить распакованные.

А также:
www.vorbis.com
Quote:
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.


Top
   
PostPosted: Tue Oct 06, 2009 11:55 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1411
Mario wrote:
Для воспроизведения слов mp3 возможно подойдет, но для звуков и слогов сомнительно, имхо будет заметное ухудшение разборчивости речи, кроме того усложнение реализации - нет готовой библотеки чтобы подать на вход упакованные данные, а на выходе получить распакованные.

Это зависит от того, на какой гармонике обрезается частотный спектр. Чем короче сигнал, и чем больше в нем взрывных и шипящих согласных - тем выше доля верхних частот в спектре.

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

А библиотека кодеков действительно нужна. Так же как и драйвер для HD Audio.

_________________
Узкий специалист подобен флюсу: полнота его - односторонняя.
Козьма Прутков


Top
   
PostPosted: Mon Nov 01, 2010 12:16 pm 
Нагуглил список слогов здесь http://lingvoforum.net
Attachment:
syls.7z [21.14 KiB]
Downloaded 438 times

В списке 6357 слогов.


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

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

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

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

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

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

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

Можно конечно сразу составить таблицу соответствия буквосочетаний и областей звука, но например в 64-х битной среде уже придется по 8 байт на каждое буквосочетание расходовать если так. Хотя я пока не разбирался с перспективами использования Long Mode процессора.


Top
   
PostPosted: Mon Nov 01, 2010 5:49 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Когда-то довольно давно ковырял espeak (http://espeak.sourceforge.net/). Разобрать то, что он произносит, можно очень хорошо - а занимает все это всего около 1 мб со словарями.
Используется синтез по формантам.


Top
   
PostPosted: Mon Nov 01, 2010 9:53 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Нужно ещё будет подобрать подходящую скорость чтения, размер паузы между словами и в зависимости от знаков препинания.


Top
   
PostPosted: Tue Nov 02, 2010 6:06 pm 
Offline

Joined: Sun Nov 04, 2007 2:46 am
Posts: 390
Mario, каждый слог нужно озвучивать в двух вариантах - ударном и не ударном.


Top
   
PostPosted: Tue Nov 02, 2010 8:04 pm 
Ударный и не ударный зачастую сложно решить. Вот как различать слова "зАмок" и "замОк"? Это только на словах все просто - программе не доступен сложный алгоритм анализа, который есть в голове человека.


Top
   
PostPosted: Tue Nov 02, 2010 8:22 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
ну espeak, например, вполне сносно отрабатывает значок ` в качестве ударения.

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 65 posts ]  Go to page 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited