Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.191.169] |
|
Сообщ.
#1
,
|
|
|
Народ, пните плз - надо по быренькому сляпать простенькую прожку чтобы говорила компьютерным голосом. По заданному тексту. Не надо слишком круто, как в навигаторах современных, можно прям очень синтетически, даже лучше, нужна "компьютерность". Может есть готовое решение которое можно сразу к дельфе подключить чтобы из мемо текст читала?
|
Сообщ.
#2
,
|
|
|
мыш
В винде уже есть движок синтез речи. Покопай в эту сторону |
Сообщ.
#3
,
|
|
|
Спасибо, но мне бы вот не копать а сразу в дамки времени нет поэтому если есть решение типа подключи то то и апи такой то - был бы космически благодарен и еще у меня в виндовом синтезе ток англичане
|
Сообщ.
#4
,
|
|
|
http://delphiworld.narod.ru/base/delphi_app_can_talk.html
Цитата и еще у меня в виндовом синтезе ток англичане Необходимо установить русские голосовые движки, но они платные. В моей прожке разговаривала ScanSoft Katerina. Для "озвучить текст" - нормально. |
Сообщ.
#5
,
|
|
|
Установил микрософтовскую Елену. Скачал даже готовое приложение на дельфи, которое должно загрузить списком движки, позволить выбрать один из них и проговаривать текст. Однако, при первой попытке обращения к некоему Com интерфейсу он выдает ошибку нарушения доступа.
Посмотрел - оказалось процедура из OLE32 библиотеки CoCreateInstance возвращает код REGDB_E_CLASSNOTREG при попытке создания с ее помощью интерфейса для доступа к голосовому движку. Вот что в MSDN написано Цитата REGDB_E_CLASSNOTREG A specified class is not registered in the registration database. Also can indicate that the type of server you requested in the CLSCTX enumeration is not registered or the values for the server types in the registry are corrupt. и вот дальше я не пойму что делать... Приложение брал из статьи отсюда http://win.tiflocomp.ru/synths/sapi/sapi_delphi01.php Ссылка на само приложение: http://win.tiflocomp.ru/synths/sapi/exampl..._speechtest.zip |
Сообщ.
#6
,
|
|
|
Держи:
http://edn.embarcadero.com/article/29583 Добавлено http://www.webdelphi.ru/2010/05/sapi-5-4-d...-v-delphi-2010/ Добавлено по-английски вообще все просто, 2 стройки кода: var SpVoice: Variant; begin SpVoice := CreateOleObject('SAPI.SpVoice'); SpVoice.Speak('hello, Can i help you?'); end; Добавлено Как понимаю нужно через GetVoices найти голоса, затем через Voice присвоить этот голос и через Speak его произнести |
Сообщ.
#7
,
|
|
|
^D^ima, спасибо, только там тоже не все гладко, при попытке скомпилировать скачанный проект пишет что нет пары модулей, которые нужно сгенерировать согласно статье
http://www.webdelphi.ru/2010/03/speech-api...pyuter-govorit/ однако инструкции в этой статье не соответствуют среде дельфи - import type library, первое действие которое нужно сделать просто отсутствует в меню Component Добавлено Ну я пока разбираюсь, не сдаюсь, но сдается мне что я еще вернусь |
Сообщ.
#8
,
|
|
|
вот на повершеле список движкев:
$V = New-Object -com "SAPI.spvoice" $v.getvoices()|fl Id : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20-DSK DataKey : System.__ComObject Category : System.__ComObject Как понимаю этот ID нужно как-то скормить Voice и програть через Speak https://msdn.microsoft.com/en-us/library/ms...2(v=vs.85).aspx Добавлено Можно скормить порядковый номер голоса так: SpVoice := CreateOleObject('SAPI.SpVoice'); spvoice.Voice := spvoice.GetVoices.Item(0); //тут SpVoice.Speak('hello, Can i help you?'); дальше все должно быть хорошо и по логике если стоит русский голос должен по-русски заговорить. |
Сообщ.
#9
,
|
|
|
^D^ima, спасибо еще раз что помогаешь. Решение оказалось проще чем во всех этих многочисленных статьях с зубодробительными модулями и переменными и вообще. Короче, все что я сделал - import library, сгенерировал во вкладку activeX библиотеку Microsoft Speech (она в диалоге была среди других библиотек доступна для выбора), в результате в дельфе появились новые компоненты. Кинул на форму TspVoice и у него простой метод
SpVoice1.Speak('Здравствуй мир',0); В принципе, я счастлив, только голос мужской, а как его выбрать пока не понял. Добавлено ФСЁ. Решено. ^D^ima, еще раз спасибо. Вот как выбор голоса делается (четвертый голос - это нужная мне девочка аня) procedure TForm6.FormCreate(Sender: TObject); var s: ISpeechVoice; t:ISpeechObjectTokens; tt:ISpeechObjectToken; i:integer; begin t:=SpVoice1.GetVoices('',''); for I := 0 to t.Count-1 do begin ListBox1.AddItem(t.Item(i).GetDescription(0),nil); end; tt := t.Item(4); SpVoice1.Voice := tt; SpVoice1.Speak('Привет',0); end; |
Сообщ.
#10
,
|
|
|
мыш
Можешь сфоткать что у тебя тут(стрелку вниз нажми): %windir%\SysWOW64\speech\SpeechUX\sapi.cpl у меня после установки елены ничего не появилось Добавлено Цитата мыш @ Вот как выбор голоса делается (четвертый голос - это нужная мне девочка аня) можно было просто его поставить: SpVoice1.Voice := SpVoice1.GetVoices.Item(4); Добавлено без компонентов, вообще без всего |
Сообщ.
#11
,
|
|
|
^D^ima, в папке SpeechUX у меня вот что
ru-RU\ SpeechUXPS.DLL sapi.cpl Добавлено Цитата ^D^ima @ можно было просто его поставить: Да, теперь вижу А когда впервые прочел - не понял что ты советуешь поэтому полез чего то мудрить |
Сообщ.
#12
,
|
|
|
Цитата мыш @ D^ima, в папке да не в папке, а в окне cpl'а |
Сообщ.
#13
,
|
|
|
Ты будешь смеяться, но что такое cpl
|
Сообщ.
#14
,
|
|
|
открой файл по очереди(через пуск) :
%windir%\SysWOW64\speech\SpeechUX\sapi.cpl %windir%\System32\Speech\SpeechUX\sapi.cpl и сфоть при нажатии стрелки вниз, если не трудно конечно. |
Сообщ.
#15
,
|
|
|
они одинаковые
Прикреплённый файлUntitled_1.jpg (144,39 Кбайт, скачиваний: 516) |
Сообщ.
#16
,
|
|
|
---
Прикреплённый файлUntitled_12.jpg (146,76 Кбайт, скачиваний: 354) |
Сообщ.
#17
,
|
|
|
спасибо
|