суббота, 9 января 2010 г.

Создаем аудиобазу иностранных слов

Начался новый год, завершаются праздники и каникулы, скоро предстоят рабочие будни. Хотя у кого-то они уже начались: сессия, консультации, экзамены. Не знаю, как Вы, а я с нового года решил подтянуть свой английский язык и в очередной раз взяться за изучение японского. Слово дал, но вот что с ним делать? Надо же когда-то браться за свое образование, вот я и решил отгулять праздники, подумать и собраться.
Собрался, но подошел в этом плане по-программерски, чтобы было интересно и полезно ни только мне. Вообще, при изучении иностранного языка самое сложное – произношение (как я с ним намучался, и сколько мучений еще предстоит), но суть не в том, а в том, чтобы всегда под рукой иметь некий аудиофайл, чтобы сверить сове произношение, ну или, как в случае с английским языком, понять, как данное слов читается. Вот попробуйте с ходу прочитать pronunciation. У меня, когда я этот ужас увидел в первый раз, не получилось его прочитать, а очень бы хотелось.
Попробуем собрать собственную аудиобазу изучаемых слов – лингво нам не подходит – слишком громоздкий, да и не бесплатный, а мы Фаны свободного программного обеспеченья. Что же делать – лазить по Интернету и искать подходящий словарь с аудибзой не хочется – время дорого. Ключевое слово – искать. Кто у нас все знает? – Google. Да в добавок еще и сервисы свои бесплатно предоставляет. Вот и воспользуемся одним из его серверов - http://translate.google.com. Если не использовали этот он-лайн переводчик – обязательно попробуйте, но о его методах перевода – если время будет, поговорим отдельно.
Сильно не ругайтесь, что отошел от темы Python в Blender. Просто я все еще работаю с Blender, как средой программирования. Но вернемся к базе адиофайлов. Переводчик, предлагаемый Google’ом, может произносить слова – здорово этим и воспользуемся. Заставим диктора произнести наше pronunciation. Заставили – послушали, а дальше-то что? Надо понять, откуда диктор его читает. Запускаем сниффер и перехватываем вот такой адрес – URL = http://translate.google.com/translate_tts?q=pronunciation&tl=en. Принцип работы ясен: на url-адрес http://translate.google.com/translate_tts - передаем два параметра: q – что будем произносить, tl – язык, а результатом этого запроса будет нужный нам аудиофайл – не верите, скопируйте адрес в броузер, загрузите файл, допишите ему расширение .mp3 и прослушайте.
Алгоритм добывания слов ясен, как добыть слово руками – понятно, теперь автоматизируем это добывание, с помощью Python.

У нас будет процедура speach с двумя параметрами: язык и слово. Слово будет так же и именем аудифайла, чтобы знать, какое слово, где лежит. Формируем запрос, отправляем запрос, получаем результат, сохраняем результат – вот и все.

import sys
import urllib2
import urllib
'''
autor : ArkSmoke
url : http://arkpython.blogspot.com

'''

def speach(tl, text):
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'My')]

live_word = opener.open(
"http://translate.google.com/translate_tts?" +
urllib.urlencode({'tl': tl}),
data = urllib.urlencode({'tl': tl,
'q': text})
)

snd = live_word.read()
open(text +'.mp3','wb').write(snd)

speach('en', 'Yes')
print 'done'


По большому счету в данном скрипте и комментировать нечего – все словами описано выше. Удачи Вам. И приятного изучения языка.