It блог вчимо ipod shuffle 3g говорити по-російськи

Поки ми чекаємо що iTunes (Apple) навчить нові iPod Shuffle говорити по-російськи, чому б не спробувати самим?

Перед тим як почати

Технічна сторона питання
Функція voiceover, що з'явилася в нових iPod (вимовляє голосом назва пісні / плейлиста) реалізується, звичайно ж, не самим iPod-ом, а програмою iTunes (саме тому для роботи з новим iPod потрібен iTunes не нижче ніж 8.1), яка при синхронізації синтезує звукові файли і закачує їх на iPod. iPod, в свою чергу, їх читає (при "зручному" випадку).


Звукові файли, котороие використовуються для промовляння знаходяться в директорії Speakable. По мимо всього іншого (системних голосових повідомлень про заряд батарея і т.д.) в ній є дві піддиректорії - Tracks і Playlists. В яких знаходяться озвучені назви плейлистів і треків, в форматі wav (raw PCM, 22050 Hz), з досить дивними іменами. Як з'ясувалося, ці імена - ідентифікатори пісень і плейлистів в базі даних, яка зберігається на iPod.

Варто звернути увагу, що оскільки число яке виправляли (зміщення) задано жорстко, не залежно від версії БД, то пропатчені таким чином libgpod не працюватиме зі старими версіями iPod. Щоб зробити по-нормальному довелося б досить сильно змінювати бібліотеку, що на меті не було.

Отже, зумівши прочитати БД iPod-а побачили що назви файлів з озвучуванням - це ідентифікатори плейлистів і треків. У тій же БД, на щастя, є вся інформація і про назви плейлистів, треках, назвах Албом і виконавців. Наступне питання - як озвучувати, тобто як самим синтезувати звукові файли з російського тексту.

Озвучуємо по-російськи, festival

Щоб можна було користуватися відразу російською мовою в festival, потрібно додати команду (set! Voice_default 'voice_msu_ru_nsh_clunits) в файл /etc/festival/siteinit.scm.
Festival дозволяє отримати досить непогану якість російського тексту, але у нього є одна біда - англійський текст виходить не дуже хорошим. скоріше навіть зовсім не хорошим (це якщо обраний російський голос).

У нас вийшла ось така програма (C, GTK +):

Тиснемо прочитати iPod, вибираємо iPod, отримуємо список плейлистів і треків. Права колонка - файл, - ім'я файлу з "озвучкою", для відповідної позиції
Подвійний клік на рядку, - відтворити файл, який в даний момент відповідає треку / списку Параметри.
Вибираємо що саме потрібно озвучити, тиснемо озвучити і чекаємо, досить довго, внизу прогрес.

У програми ще є консольний (не інтерактивні) інтерфейс (дивимося --help і README).

Отже, нам буде потрібно:
  1. Власне програма (тут)
  2. Пропатчені libgpod (тут)
  3. версії пакетів GTK +, GStreamer і libgpod для розробників (у Гент це ті ж самі пакети, в дебіане, здається, вони з постфіксом -dev). Поставити улюбленими засобами.
Розпаковуємо libgpod, всередині виконуємо
./ configure
make
(Тільки якщо не збираєтеся користуватися gtkpod з більш старими моделями iPod) make install

Розпаковуючи програму, всередині виконуємо
./ configure
make
(Make install виконувати не потрібно, тому що все одно немає desktop-файлу, тобто в меню нічого не додасться)

Якщо в попередньому пункті (про libgpod) не роблять make install, то потрібно зробити наступне (інакше, можна пропустити до останнього параграфа цієї частини):

скопіювати файл libgpod / src / .libs / libgpod.a в директорію shuffle-vo / src, libgpod - це директорія в якій розпаковані бібліотека libgpod, shuffle-vo - директорія з розпакованої програмою.
Перейти в директорію shuffle-vo / src, виконати там make clean, потім make, скопіювати рядок приблизно такого вигляду (вона буде останньою):

gcc -Wall -g -g -O2 -Wl, - export-dynamic -o shuffle_vo main.o -pthread -L / usr / lib /usr/lib64/libgtk-x11-2.0.so / usr / lib64 / libgdk- x11-2.0.so /usr/lib64/libatk-1.0.so /usr/lib64/libpangocairo-1.0.so /usr/lib64/libpangoft2-1.0.so /usr/lib64/libcairo.so / usr / lib64 / libpixman- 1.so /usr/lib64/libpng12.so /usr/lib64/libXrender.so /usr/lib64/libX11.so /usr/lib64/libXau.so /usr/lib64/libXdmcp.so / usr / lib64 / libpango- 1.0.so /usr/lib64/libfontconfig.so /usr/lib64/libfreetype.so /usr/lib64/libexpat.so /usr/lib/libgpod.so /usr/lib64/libgdk_pixbuf-2.0.so / usr / lib64 / libgio-2.0.so /usr/lib64/libgstreamer-0.10.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgmodule-2.0.so /usr/lib64/libgthread-2.0.so -lpthread -lrt / usr / lib64 / libxml2.so -ldl -lz -lm /usr/lib64/libglib-2.0.so -pthread

і замінити /usr/lib/libgpod.so в цьому рядку на libgpod.a, а потім виконати вийшла рядок

Таким чином, наша програма буде статично пов'язана з потрібною бібліотекою libgpod, при цьому в системі буде бібліотека libgpod, яка зможе працювати з попередніми версіями iPod.

Щоб перевірити що зв'язування статичну можна виконати наступне - ldd shuffle_vo, в списку не повинно бути такі рядки
libgpod.so.4 => /usr/lib/libgpod.so.4 (0x00007fe6537f1000)

Читаємо README, який з програмою, налаштовуємо відповідним чином festival.

Якість озвучування англійсого слів в російських текстах залишає бажати кращого, тому буде здорово якщо хто-небудь, наприклад, uBot організовує сервіс з озвучення, у uBot. до речі, якість озвучування російських текстів вище ніж у festival. Ну і чекаємо коли apple випустить оновлення для iTunes, яке дозволить озвучувати російські назви, чекаємо сильно, тому що iTunes озвучує англійські тексти дуже добре, якщо також буде озвучувати російські буде дуже здорово.

Це перший публічний реліз програми, так що, напевно, в ній повно глюків і помилок.

З приводу подальшого розвитку програми - сміливо завантажуйте, змінюйте і викладайте. У мене, швидше за все не буде часу для її розвитку. Хіба що якщо буде інтеграція з uBot.

Схожі статті