| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Использование TAPRO |
| Автор: unreg 4.11.2004, 11:16 |
| Здравствуйте. Установил себе компоненты turbo async professional 4.06. Нужны для моего автоответчика. ОС winxp sp2. для передачи/приема звук. файла/голоса в звук файл, попытался использовать компонент TApdTapiDevice. компонент заругался, что не тот SAPI установлен. Скачал "тот" (SAPI4.0) все пошло нормально. Я могу записывать звук из линии и проигрывать звук в линию (!). Решил пойти дальше. С помощью голосового движка прочитать в линию какой-нибудь текст. Для этого используются компоненты TApdSapiEngine и TApdSapiPhone. Снова компоненты заругались, что не могут инициализировать некий интерфейс. нашел строчку в AdSapiEn.pas и заремил вызов процедуры InitializeSR. (компонент не мог инициализировать DirectSR, хотя он у меня есть, да и бог с ним). Ругаться компонент перестал. Все это написано для тех кому не хочется наступать на теже грабли, что и я. А теперь, собственно, проблема. При попытке инициализировать голос в линию, опять маты в мою сторону. Примерно такие: движок не оптимизирован для передачи звука в телефонную линию. Т.е. он бы и рад, да не может (формат не позволяет). Я снова покопался в исходника компонентов и нашел флаг который сигнализирует о том оптимизирован голос для телефона или нет. В системе у меня стоит 5 голосовых движков Digalo, и 4 штуки от Lernout&... (муж. жен./англ. рус.), перепробовал все. и ни один не подходит получается??? Кто-нибудь сталкивался с подобной проблемой???? спасибо. PS есть вариант записывать текст в вав-файл. Это у TApdSapiEngine получается здорово. Но нужен конвертер который из этой вав-ки сделает другую вав-ку но с более низким качеством (8 кГц, 16 бит, Моно) и естественно у конвертера должна быть возможность управляться програмно (как ком-объект или из командной строки или еще как). Я такого конвертера не знаю. |
| Автор: p0s0l 4.11.2004, 14:40 |
| Если wav'ы пишутся в формате PCM (без сжатия), то довольно просто будет вручную сконвертить... |
| Автор: unreg 4.11.2004, 17:17 |
| Да, пишет в PCM. А как сконвертировать ? |
| Автор: p0s0l 5.11.2004, 02:03 | ||||||
| Накидал примерно как это должно быть... Но... Блин, не могу нормально понизить BitsPerSample (с 16 бит на 8). Получается какая-то бяка... Щас сделано так: если входной файл имеет 16-битные данные, то берутся 8 старших бит данных (младшие теряются)... Видимо надо другой алгоритм... Подумай, как надо правильно... (смотри SetV)
Пример:
PS: пробовал через MCI менять формат - не получилось Хотя есть команда MCI_SET, и в MSDN сказано:
|
| Автор: unreg 5.11.2004, 06:20 |
| Спасибо. Код работает. Ковнертирует без проблем, буду пользоваться. Спасибо еще раз. Найду время, обязательно поковыряюсь с API. Кстати, в поисках решения краем глаза зацепил функции семейства ACM... ими, вроде, тоже можно конвертировать. |
| Автор: Medved 6.11.2004, 16:04 |
| Кстати, когда -то давно приводили исходник работы с голосвым движком от Mircosoft. Воспользуйтесь поиском. |