Public agent As IAgentCtl, anime As IAgentCtlCharacterEx, agentIsLoaded As Boolean
Public isAgent As Boolean, anime_man As Boolean, WinDir As String
Public Sub Main()
Set agent = CreateObject("Agent.Control.2")
WinDir = String(255, 0)
j = GetWindowsDirectory(WinDir, 255)
WinDir = Left$(WinDir, j)
If Right$(WinDir, 1) <> "\" Then WinDir = WinDir & "\"
agent.Connected = True
If ExistFile(WinDir & "msagent\chars\marine.acs") Then
loadMarine
ElseIf ExistFile(WinDir & "msagent\chars\merlin.acs") Then
loadMerlin
Else
isAgent = False
End If
End Sub
Public Sub loadMarine()
On Error GoTo erMarine
agent.Characters.Load "agent", WinDir & "msagent\chars\marine.acs"
anime_man = False
Set anime = agent.Characters("agent")
isAgent = True
anime.LanguageID = &H419
anime.AutoPopupMenu = False
anime.TTSModeID = "{06377F80-D48E-11d1-B17B-0020AFED142E}"
agentIsLoaded = True
Exit Sub
erMarine:
isAgent = False
End Sub
Public Sub loadMerlin()
On Error GoTo erMerlin
agent.Characters.Load "agent", WinDir & "msagent\chars\merlin.acs"
anime_man = True
Set anime = agent.Characters("agent")
isAgent = True
anime.LanguageID = &H419
anime.AutoPopupMenu = False
anime.TTSModeID = "{06377F81-D48E-11D1-B17B-0020AFED142E}"
agentIsLoaded = True
Exit Sub
erMerlin:
isAgent = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
If isAgent Then
anime.Show True
anime.Play "Wave"
waitFor anime.Speak "Желаю удачи"
End If
End Sub
Public Sub waitFor(r As IAgentCtlRequest)
Do
DoEvents
Loop Until r.Status = 0 Or r.Number = -2147220734
Set r = Nothing
End Sub
MS Agent не говорит. Как заставить?
выбираем Microsoft Agent Control 2.0. На панеле инструментов появится мужичок в шляпе (а-ля Джеймс Бонд), добовляем его на форму в любое
место. При выполнении он невидим.
ВОПРОС: При нажатии на кнопку Command1 появится "Ученый" и по идее должен произнести "Привет программистам!", но не говорит!
В чем засада?!!!
Комп Windows2000Professional SP4, установлен
Office2000 со всеми помощниками. Голосовой движок text-to-speach в Windows2000Professional стоит по умолчанию.
Option Explicit
Dim Genie As IAgentCtlCharacterEx
Const DATAPATH = "E:\Program Files\Microsoft Office\Office\genius.acs"
Private Sub Command2_Click()
Set Genie = Nothing
Unload Form1
End Sub
Private Sub Form_Load()
Agent1.Characters.Load "Genie", DATAPATH
Set Genie = Agent1.Characters("Genie")
'Genie.LanguageID = &H409 'это индетификатор англ. языка,
'поэтому он закоментирован
Text1.Text = "Привет, программистам!"
End Sub
Private Sub Command1_Click()
Genie.Show
Genie.Speak Text1.Text
Genie.Hide
End Sub
вот что тебе нужно:
Статью я эту читал, но говорит у меня только Merlin, а остальные молчат как рыбы!
Так там кажись для каждого на text to speech качать
agent1.LanguageID = &H419
'мужской голос
agent1.TTSModeID = "{06377F81-D48E-11D1-B17B-0020AFED142E}"
'женский голос
agent1.TTSModeID = "{06377F80-D48E-11d1-B17B-0020AFED142E}"
и говорят все чудесно
Можешь также программно проверять IAgentCtlRequest.Number
Если IAgentCtlRequest.Number=-2147220734 - Программа не сообщила звуковой плате, какой формат звукового файла используется.
Do
DoEvents
Loop Until IAgentCtlRequest.Status = 0 Or IAgentCtlRequest.Number = -2147220734
Цитата:
Originally posted by SergeySV
Так там кажись для каждого на text to speech качать
Так там кажись для каждого на text to speech качать
Думаю, что на озвучку текста можно забить: уж больно качество страдает - слушать такое не захочешь:(. Гораздо интереснее сопоставить действию персонажа воспроизведение звукового файла. Но как это сделать синхронно?!
Цитата:
Originally posted by pnvnik
Думаю, что на озвучку текста можно забить: уж больно качество страдает - слушать такое не захочешь:(. Гораздо интереснее сопоставить действию персонажа воспроизведение звукового файла. Но как это сделать синхронно?!
Думаю, что на озвучку текста можно забить: уж больно качество страдает - слушать такое не захочешь:(. Гораздо интереснее сопоставить действию персонажа воспроизведение звукового файла. Но как это сделать синхронно?!
В чем заключается проблема синхронности? как начинать в нужный момент или как обрывать воспроизведение когда действие закончено?
Попробовал - кошка из офиса не говорит (из офисных зверьков вообще никто не говорит). В чем может быть дело? Merlin при этом говорит...
показывай весь код, а то телепаты пока на другой форум ушли
Цитата:
Originally posted by SergeySV
показывай весь код, а то телепаты пока на другой форум ушли
показывай весь код, а то телепаты пока на другой форум ушли
Показываю фрагмент кода для двух агентов Marine и Merlin, другие я не использовал.
Код: