программа говорящая текст
Вложений: 1
Программа говорит голосом франкенштейна :) долго смеялся когда услышал результат..., низкое качество произношения из-за неполного набора звуковых файлов-слогов, которые были взяты из какой-то dos-программы.
Алгоритм: разбираем предложение по имеющимся слогам в звуковых файлах и воспроизводим эти файлы. __Способы оптимизации алгоритма__ 1) Заранее создать массив из элементов Player и подключит к нему воспроизводимые файлы (если не все, то хотя бы текущего слова). Т.о. сократим промежуток между воспроизведением отдельных файлов. 2) Пока играет текущий звуковой файл загружать следующий. Основная проблема плеера заключается в позднем воспроизведении файла, что связано с внутренней организацией виртуальной машины – это: время инициализации плеера и скорости передачи данных из ресурсов. Например, при тестировании программы на телефоне sony-ericson задержка иногда составляла около 1 сек. Также в MIDletPascal’е нет метода для определения завершения мелодии. Единственный способ - получение длительности мелодии и приостановка основного потока программы на указанную величину. Здесь также столкнулся с досадной особенностью - телефоны не слишком точно соблюдают время усыпления потока. И в завершение ко всему метод getDuration(), который получает полное время звукового файла не сработал у меня на motorole E398. Пришлось открывать звуковые файлы и брать из заголовков wav-файлов длительность воспроизведения. __Рекомендации к улучшению программы__ Улучшить произношение на 30% можно путем создания всех видов слогов встречающихся в русском языке, это число примерно равно количеству согласных букв в комбинации с гласными, т.е. гласные*согласные, а общее кол-во гласные*согласные + одиночные_буквы. Таким образом, получаем: 10 гласных звуков, 21 согласных звуков не обозначающие звуки 2, т.е. твердые, мягкие, тогда 3-й вида произношения 10*21*3+33 = 663 10*21+33 = 243 (без учета твердых и мягких звуков) Для более-менее сносной программы требуется создать ~250 файлов звука, сделать их максимально чистыми и короткими, чтобы текст говорился внятно и быстро, но разборчиво. __Расчет размера получаемой программы__ Средний размер файла со звуком = 2400 bytes, т.о. общий размер данных = 250*2400 = 600000 bytes = 586 Kb процент сжатия =~25% (150000 bytes) общий объем = 600000-150000=450000 bytes = 440 Kb. Итоговый размер программы не менее 450 Kb, слабые телефоны работать с такими файлами не смогут. Выделенная под java-машину память ограничена, например в motorola (c380, c650, e390, v3, и т.д.) имеет размер 800 KB. Т.о. для работы программы остается: 800-450-150(мусор в памяти) =~200 КB ___ arT (c) 2006. e-mail: [email protected] |
Ответ: программа говорящая текст
|
Ответ: программа говорящая текст
Я использовал простой движек без каких-либо дополнительных библиотек, достаточно чтобы телефон мог воспроизводить звуковые файлы в формате wav (ну или какие вы сделаете), и поддерживал загрузку программ размером 450кб.
Если раздобыть профессионально сделанные файлы слогов, и оптимизировать как писал выше, то можно применить в качестве читалки книг с интернета... |
Ответ: программа говорящая текст
хватило бы и просто читалки, имхо. ну или возможность офф-лайн режима
|
Ответ: программа говорящая текст
можно будет сделать,... если кто-нить найдет все слоги русского языка, в формате WAV PCM 8 кГц, 8 bit mono, студийного качества, без шумов,
и общий размер файлов укладывался в расчеты. p.s. этот проект пылился уже пару лет, желания и времени искать звуки для профессиональной программы - нету, потому что везде у нас халява, и заработать на ней врятли получится |
Ответ: программа говорящая текст
ммм... я могу с помощью "Говорилки" создать звуковые файлы...
но останется "глюк" подгрузки слоговых файлов... -- а может возможно создание вав файла на лету? типа один процесс анализирует слова - создаёт буфер нескольких слов и формирует вав - а другой процесс исполняет подготовленный файл.. возможно ли такое? |
Ответ: программа говорящая текст
Теоретически, зная структуру WAV-файла и имея доступ к ФС такое можно реализовать, но, думаю, производительность все равно будет низкой.
|
Ответ: программа говорящая текст
Вложений: 1
Serg153, об этом как-то думал, но реализовывать не пробовал.
идея заинтересовала и поэтому решил щас написать либу для воспроизведения звука из строки, т.е. загружаем из ресурсов звуковой файл midi,wav и т.д. в строку и передаем её модифицированному плееру Можно подготавливать блоки данных в единый массив, создать для этого массива общий заголовок с воспроизводить плеером... Для нормальной работы лучше создать специализированную библиотеку с байтовыми массивами, в которые подгружать wav'ы текущего слова, т.к. на все звуковые файлы все равно не хватит места в памяти... Некоторые загвоздки: 1. байты в строку долго подгружается если файл больше 10 кб 2. строка не может быть слишком большой (более 50 кб), иначе может повиснуть java-машина 3. setplayercount не работат (воспроизведение только 1 раз) 4. Т.к. getduration() использует тип Long, то такая библиотека отказыватся подключаться к MIDletPascal, поэтому пришлось исключить это метод 5. размер WAV берется из заголовка загружаемого файла, иначе если readByte=0, то это считается как завершение файла с ресурсами, а нулевых байтов хватает... __ В архиве исходники и тестовый пример |
Ответ: программа говорящая текст
а если так (int)getduration();
|
Ответ: программа говорящая текст
Цитата:
приводит к ошибке. У меня получилось только так: PHP код:
|
Ответ: программа говорящая текст
спасибо за советы! попробую, думаю ошибка загрузки из-за того что MIDletPascal не корректно разбирает элементы, которые занимают по две позиции в константном пуле, т.е. Long и Double...
касательно библиотеки то ее будет удобно использовать для загрузки из интернета и сохранения в RMS коротких midi-файлов, типа настройки программы на ходу |
Ответ: программа говорящая текст
вот нарыл статью в инете - говорящая Java - там приведён пример на джаве.... глянтье - может что полезное там?
http://www.emanual.ru/download/www.eManual.ru_268.html |
Ответ: программа говорящая текст
Цитата:
|
Ответ: программа говорящая текст
Serg153, хорошая ссылка (правда применительно к упрощенной английской речи), какраз рассказывает о некоторых проблемах при создании голосового движка, звуковые файлы формата *.au схожи с форматом *.wav, и занимают примерно одинаковое кол-во места.
основные задачи подобных программ: 1) разбор текста на звуковые частицы 2) придание эмоциональной окраски производимой речи 3) склейка частей звука ---- 1) разбор можно производить только при наличии необходимого кол-ва звуковых заготовок 2) пока не рассматривается, т.к. это довольно тяжеловесная задача для сотового телефона 3) можно попробовать склеивать в один большой файл, но это довольно медленно, потому что прийдется перемещать довольно большие байтовые массивы, на месте "склейки" без предварительной обработки возможны щелчки звука, можно попробовать использовать микширование файлов, как в библиотеке для проигрывания нескольких файлов, но опять это будут поддерживать не все телефоны... ____ сделать программу нормальную реально, просто качество звука напрямую зависит от качества звуковых файлов и метода их слияния |
Ответ: программа говорящая текст
Нет ничего приличного на компе или кпк. Для телефона это нормально.
|
Часовой пояс GMT +4, время: 10:14. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot