HLFX.Ru Forum
Показать все 9 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Как научить вашу программу разговаривать. (https://hlfx.ru/forum/showthread.php?threadid=2655)


Отправлено Alex_Gordon 26-02-2011 в 14:12:

Как научить вашу программу разговаривать.

В Windows XP (в XP есть точно, насчет других - не знаю), если вы создадите файл с расширением .vbs и запишите в него такой текст:

code:
CreateObject("SAPI.SpVoice").Speak"I'm talking"

то при его запуске вы услышите, как Sam говорит фразу, заключенную в кавычках.
Мне (может быть и не первому в мире) пришла в голову идея сделать говорящую программу. Для этого (если вы используете Lazarus) нужно будет подключить юнит Windows.
Легче всего будет написать функцию, а потом вызывать ее. Итак, вот она:
code:
function SpeakCommand(phrase:string) :integer; var a:text; begin assignfile(a,'speak.vbs'); rewrite(a); writeln(a,'CreateObject("SAPI.SpVoice").Speak"'+phrase+'"'); closefile(a); ShellExecute (Form1.Handle, nil, 'speak.vbs', nil, nil, SW_RESTORE); end;

Тут мы создаем файл vbs и вписываем в него переменную типа string, а потом при помощи ShelExecute выполняем файл.
Теперь пример вызова функции.
Например, при нажатии на кнопку.
code:
procedure TForm1.Button9Click(Sender: TObject); begin DoSomethingRealyCool; SpeakCommand('Some Cool done'); end;

Вот и все.

__________________
Ха, тюремный автомобиль!!!

Ιερά λάμδα

Quisque moritur Gordon sinistram. Alex Gordon.



Отправлено Дядя Миша 26-02-2011 в 14:28:

Цитата:
Alex_Gordon писал:
то при его запуске вы услышите, как Sam говорит фразу, заключенную в кавычках.

В семерке говорят уже женский голос

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Alex_Gordon 26-02-2011 в 14:32:

Дядя Миша может быть, у меня ХР, и грубый мужской)

__________________
Ха, тюремный автомобиль!!!

Ιερά λάμδα

Quisque moritur Gordon sinistram. Alex Gordon.



Отправлено Дядя Миша 26-02-2011 в 15:00:

Кстати, хоть в одной версии XP его научили говорить на русском?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 26-02-2011 в 15:09:

Дядя Миша
Не думаю. Но вот PROMT умел точно.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Alex_Gordon 26-02-2011 в 16:11:

Дядя Миша а почему бы и нет?
CreateObject("SAPI.SpVoice").Speak"Yah govoryou nah rooskom"

Добавлено 26-02-2011 в 21:11:

Если кто юзает C++ Builder, то вот как это там реализуется:
Нужно подключить #include <fstream.h>

Функция:
void SpeakCommand(string a)
{
ofstream speak("speak.vbs");
speak << "CreateObject(\"SAPI.SpVoice\").Speak\""< ShellExecute (Form1->Handle, 0, "speak.vbs", 0, 0, SW_RESTORE);
}


Пример вызова:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SpeakCommand("Hello world!");
}

__________________
Ха, тюремный автомобиль!!!

Ιερά λάμδα

Quisque moritur Gordon sinistram. Alex Gordon.



Отправлено XaeroX 26-02-2011 в 16:22:

В делфи есть компонент стандартный.
А вообще - MS Speech SDK.

__________________

xaerox on Vivino


Отправлено Alex_Gordon 26-02-2011 в 16:25:

XaeroX а в Lazarus'e нету.
Ну я ведь никого не заставляю это юзать. Просто показал

__________________
Ха, тюремный автомобиль!!!

Ιερά λάμδα

Quisque moritur Gordon sinistram. Alex Gordon.



Отправлено Дядя Миша 26-02-2011 в 18:27:

Цитата:
Alex_Gordon писал:
Дядя Миша а почему бы и нет?
CreateObject("SAPI.SpVoice").Speak"Yah govoryou nah rooskom"

Очень смешно. Вот включим тебе переводчик транслита - все посты будут так выглядеть

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 13:36.
Показать все 9 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024