Примеры озвучивания (wav, порядка 100к каждый):
Festival позволяет получить довольно неплохое качество русского текста, но у него есть одна беда английский текст получается не очень хорошим скорее даже совсем не хорошим (это если выбран русский голос).
Чтобы можно было пользоваться сразу русским языком в festival, нужно добавить команду (set! voice_default 'voice_msu_ru_nsh_clunits) в файл /etc/festival/siteinit.scm.
Мне удалось найти только одно бесплатное решение для озвучивания, festival, дистрибутив есть, наверное, во всех дистрибутивах Linux, если нет, можно скачать исходники с сайта разработчиков ( ). Официальный дистрибутив не поддерживает русский язык, но есть решение, позволяющее озвучивать русский текст. Описание можно найти здесь ( )
Озвучиваем по-русски, festival
Итак, сумев прочитать БД iPod-а увидели что названия файлов с озвучиванием это идентификаторы плейлистов и треков. В той же БД, к счастью, есть вся информация и о названиях плейлистов, треках, названиях албомов и исполнителей. Следующий вопрос как озвучивать, т.е. как самим синтезировать звуковые файлы из русского текста.
Стоит обратить внимание, что т.к. число которое исправляли (смещение) задано жестко, не зависимо от версии БД, то пропатченная таким образом libgpod не будет работать со старыми версиями iPod. Чтобы сделать по-нормальному пришлось бы довольно сильно менять библиотеку, что целью не являлось.
На рисунке справа показан соответствующий участок кода. Первое подчеркнутое смещение, которое в той версии БД, которая в новых iPod, изменилось и стало 8 (это видно если открыть файл hex-редактором, в нашем случае это был GHex). Второе подчеркнутое изменения котороые сделали (пока искали информацию в сети, нашли что числа стали 32-х битными в новых iPod, так ли это не проверяли, но на всякий случай сделали :).
(К слову, здесь речь идет о библиотеке версии 7.0, существовала, на момент начала разработки, версия 7.2, которая так же не умела читать шафлы третьего поколения.)
Тут возникла сложность библиотека возвращала ошибку, что-то в духе «не правильный размер записи (11 < 18)». Пришлось смотреть исходники библиотеки.
В поисках места, откуда iPod берет имена файлов с озвучкой, наткнулись на файлы в директории iPod_Control/iTunes, в которых встречаются имена файлов, точнее, если некоторые числовые последовательности из файлов представить в виде шестнадцетиричной строки, то получались имена файлов. Разбираться с форматом БД iTunes не было ни времени, ни желания, поэтому решили поискать готовые решения. Выбор пал на библиотеку libgpod (о ней узнали из зависимостей приложения gtkpod очень неплохая замена iTunes для линукс для которого, судя по-всему эта библиотека и была разработана).
Ищем способ читать iPod libgpod
Звуковые файлы, котороые используются для проговаривания находятся в директории Speakable. По мимо всего прочего (системных голосовых сообщений о заряде батареии и т.д.) в ней есть две поддиректории Tracks и Playlists. В которых находятся озвученные названия плейлистов и треков, в формате wav (raw PCM, 22050 Hz), с довольно странными именами. Как выяснилось, эти имена идентификаторы песен и плейлистов в базе данных, которая хранится на iPod.
Функция voiceover, появившаяся в новых iPod (произносит голосом название песни/плейлиста) реализуется, конечно же, не самим iPod-ом, а программой iTunes (именно поэтому для работы с новым iPod нужен iTunes не ниже чем 8.1), которая при синхронизации синтезирует звуковые файлы и закачивает их на iPod. iPod, в свою очередь, их читает (при «удобном» случае).
Техническая сторона вопроса
Все что здесь описано не предназначено для замены iTunes, а служит, скорее, дополнением, которое нужно только до тех пор, пока iTunes не научится озвучивать названия по-русски (очень надеюсь что научится).
Перед тем как начать
Пока мы ждем что iTunes (Apple) научит новые iPod Shuffle говорить по-русски, почему бы не попробовать самим?
Учим iPod Shuffle G3 говорить по-русски
Учим iPod Shuffle G3 говорить по-русски / Хабрахабр
Комментариев нет:
Отправить комментарий