ф
data.Add (‘text=’ + text);
data.Add (‘tl=’ + myLang);
data.Add (‘sl=’ + toLang);
data.Add (‘client=x’);
Responses TStringStream.Create (*’);
late_a/t\ data, Response);
//парсер
s:= Response. DataString;
k:= pos (‘trans”:”\ s);
n:= posex (“\ ”\ s, k);
s:= copy (s, к +8, n - к - 8);
//вывод данных с перекоди-
ровкой
result:= Koi_WinConvert (s);
Голосовой синтез текста
Т
еперь сформируем POST-за-
прос на адрес
http://translate.
google.ru/translate_tts
для получения
синтезированного
аудиотекста.
Подход тот же самый, однако кон-
тент будем загружать с помощью
объекта класса
TMemoryStream
, который имеет
метод
SaveToFUe
для быстрого сохранения в файл.
Поскольку наша программа предназначена для
работы под Windows, то воспроизведение полу-
ченного файла будем осуществлять средствами
самой системы через интерфейс MCI. Для этого
есть такая API команда
MCISendString
(ее описа-
ние:
dows/desktop/dd757161 (v=vs.85).aspx):
//получение файла озвучки перевода
ms:= TmemoryStream. Create;
//параметры запроса озвучки
data.Clear;
Если нет кодека MP3 в системе
В
едь такая ситуация вполне вероятна, а зна-
чит для воспроизведения остается исполь-
зовать формат PCM WAV. Значит нужно перекоди-
ровать полученный файл. Но как? Ничего страшно-
го, ведь есть свободный LAME MP3 Encoder
или
http://lame.su)
под
Windows, DOS, GNU/Linux, MacOS X, *BSD, Solaris,
HP-UX, Tru64 Unix, AIX, Irix, NeXTStep, SCO Unix,
UnixWare, Ultrix, Plan 9, OpenVMS,
MacOS Classic, BeOS, QNX,
RiscOS, AmigaOS, OS/2, SkyOS,
FreeMiNT (Atari).
Он поддерживает сжатие и рас-
паковку аудиофайлов (WAV/MP3)
с постоянным (CBR) или пере-
менным (VBR) битрейтом, ID3 те-
ги и прочее. Предоставляет уйму
различных настроек и шаблонов
для сжатия. Использует собст-
венную психоакустическую мо-
дель и распространяется с откры-
тым исходным кодом.
А главное, что нам собственно
и нужно, может работать как отдельная кон-
сольная программа (lame.exe), DLL’xa (lame.dll)
или Windows кодек (ACM). Для перекодировки в
консольном режиме следует выполнить следу-
ющую команду:
lame —decode filename.mp3
В
нашем случае, для работы с командной стро-
кой можно воспользоваться функцией
Shell-
Execute
с параметром
Sw_Hide
(в скрытом режи-
ме) из модуля
Shell API:
//перекодируем файл озвучки перевода
MP3-to-WAV
shellexecute (0,//хэндл, оставляем пустым
Рис. 7. Результат перевода
текста сервисом Google в
нашей программе
+
озвучка
data.Add (‘ie=UTF-8’);
data.Add (‘q=’+ s);
data.Add (‘tl=’ + myLang);
data.Add (‘prev=input’);
//отсылаем запрос
late_tts’, data, ms);
//сохраняем MP3
ms.SaveToFile (filename);
//подчищаем за собой
data.Free; IdHTTPI.Free; ms.Free;
//стоп, на всякий случай
MCISendString (pchar (‘stop ‘ + filename), nil, 0,0);
//воспроизводим перевод
if play then MCISendString
(PChar (‘play ‘ + filename), nil, 0,
0
);
Программы
высиживаю
‘open’,//команда
pansichar (‘lame.exe’),//lame mp3 encoder
предыдущая страница 47 Компьютер 2012 11-12 читать онлайн следующая страница 49 Компьютер 2012 11-12 читать онлайн Домой Выключить/включить текст