Guide | How To [Trick] Make your computer talk

The associated guide may contain user-generated or external content.

Shadow King

Level 1
Thread author
Jun 11, 2012
114
Open a text file in notepad and write:

Dim msg, sapi
msg=InputBox("Enter your text","Talk it")
Set sapi=CreateObject("sapi.spvoice")
sapi.Speak msg

Save the file with a (*.vbs) extension, it will create a VBScript File.
It will prompt you for a text when u open the file, input the text and press ok."

Type text and listen to your computer speak

Hope everyone enjoy
 

Cowpipe

Level 16
Verified
Well-known
Jun 16, 2014
781
If you're lonely, why not summon the mighty Merlin?

Code:
Set Path ="C:\Windows\msagent\chars\Merlin.acs"
Set agent = CreateObject("Agent.Control.2")
agent.Connected = True
agent.Characters.Load "Merlin", Path
Set merlin = agent.Characters.Character("Merlin")
merlin.Show
merlin.MoveTo 500,500
merlin.Play "Greet"
Wscript.Sleep 10000
merlin.Play "Pleased"
Wscript.Sleep 10000
 

pdameasap

New Member
Aug 10, 2014
12
If you're lonely, why not summon the mighty Merlin?

Code:
Set Path ="C:\Windows\msagent\chars\Merlin.acs"
Set agent = CreateObject("Agent.Control.2")
agent.Connected = True
agent.Characters.Load "Merlin", Path
Set merlin = agent.Characters.Character("Merlin")
merlin.Show
merlin.MoveTo 500,500
merlin.Play "Greet"
Wscript.Sleep 10000
merlin.Play "Pleased"
Wscript.Sleep 10000

I really, really like this.
 
  • Like
Reactions: Cowpipe

Detection

Level 1
Feb 25, 2011
247
Or you can use the speech settings here

oqfaDSw.jpg
 
  • Like
Reactions: Cowpipe

pdameasap

New Member
Aug 10, 2014
12
First script works, but second one probably fails on Windows 7 as it does for me.

This should fix it, though:

Windows 7

http://support.microsoft.com/kb/969168

Windows 7 x64

http://hotfixv4.microsoft.com/Micro...x64/200909210200/free/395040_intl_x64_zip.exe

Another possibility may be:

http://desktopmates.com/downloads/MSagent.exe

Referenced from:

https://groups.google.com/forum/#!topic/microsoft.public.msagent/wN3Z2ppf-8Y

Regardless, the following reference itself has references describing what can be done with this.

Documentation:

http://stackoverflow.com/questions/1116451/what-are-all-the-actions-the-merlin-agent-can-do

Here's my version (mine's not as concise as theirs):

Code:
' Get the screen height/width, but call later
Function fnScreenRes()
    Dim xH, xW
    With CreateObject("InternetExplorer.Application")
        .Navigate("about:blank")
        Do Until .readyState = 4: Loop
        xW = .document.ParentWindow.screen.width
        xH = .document.ParentWindow.screen.height
        .Quit
    End With
    fnScreenRes = array(xW, xH)
End Function

' Determine the architecture
Dim WshShell
Dim WshProcEnv

Dim sArchSys
Dim sArchProc

Dim nArchRes
iLoop = 2048
sArch = ""

Set WshShell = CreateObject("WScript.Shell")
Set WshProcEnv = WshShell.Environment("Process")

sArchProc = WshProcEnv("PROCESSOR_ARCHITECTURE")

If sArchProc = "x86" Then
    sArchSys = WshProcEnv("PROCESSOR_ARCHITEW6432")

    If sArchSys = "" Then
        sArchSys = "x86"
    End if
Else
    sArchSys = sArchProc
End If

Do While iLoop <> 1
    nArchRes = InStr(sArchSys, CStr(iLoop))
    If nArchRes <> 0 Then
        sArch = CStr(iLoop)
        Exit Do
    End If

    iLoop = CInt(iLoop / 2)
Loop
If sArch = "x86" Then
    sArch = "32"
End If
If sArch = "32" Then
    sArch = ""
End If

' Invoke Merlin accordingly
sNameAgent = "Merlin"
sPathAgent = "C:\Windows\MSAgent" & sArch & "\Chars\" & sNameAgent & ".acs"

Set oAgent = CreateObject("Agent.Control.2")

' Connect to the agent service
oAgent.Connected = TRUE

' Load the character desired
oAgent.Characters.Load sNameAgent, sPathAgent

iWait = 500

Dim oAnim
With oAgent.Characters.Character(sNameAgent)

    Set oAnim = .Show

    ' Chew on this while showing
    oScreen = fnScreenRes()

    iX = CInt(oScreen(0) / 2) - CInt(.Width / 2)
    iY = CInt(oScreen(1) / 2) - CInt(.Height / 2)

    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("GetAttention")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("GetAttentionContinued")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("GetAttentionReturn")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    ' Move to the center of the screen.
    ' If you have two monitors, I'm sorry, but
    ' you're well and truly screwed because
    ' I just can't be bovvered.
    Set oAnim = .MoveTo(iX, iY)
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("Greet")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("RestPose")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("Pleased")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Speak("Hello, I am " & sNameAgent & "!")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("DoMagic1")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Speak("That's the way! Uh huh. Uh huh.")
    .Speak("I like it! Uh huh. Uh huh.")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("DoMagic2")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Speak("Goodbye!")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    Set oAnim = .Play("Wave")
    Do Until oAnim.Status = 0
        Wscript.Sleep iWait
    Loop
    Set oAnim = Nothing

    .Hide

    ' Allow agent to finish whatever commanded before exiting
    Do While .Visible = TRUE
        Wscript.Sleep iWait
    Loop
End With

' Clean up properly
oAgent.Characters.Unload sNameAgent

Wscript.Quit
 

Cowpipe

Level 16
Verified
Well-known
Jun 16, 2014
781
One of my favourite tricks was invoking Merlin from a HTML page. Reminds me of the kind of trick you'd find on the old geocities. Ah, how I miss those endless, falling snow, rainbow text javascripts, the <marquee> tags (where have you gone?) :( ... The garish backgrounds, the MIDI music playing in the background.... So many memories. Goodbye my friend, you reminded me of the good ol' days of web 1.0 before we thought it cool to give you a number, because "web 1.0" is so web 2.0 ;)
 
  • Like
Reactions: pdameasap

pdameasap

New Member
Aug 10, 2014
12
Ew.

Yeah, some of the old stuff is still good. Like, a few years back I was still using click maps to draw non-square click areas around non-standard objects.

Sometimes it takes something fading into obscurity for it to become more like magic.
 
  • Like
Reactions: Cowpipe

About us

  • MalwareTips is a community-driven platform providing the latest information and resources on malware and cyber threats. Our team of experienced professionals and passionate volunteers work to keep the internet safe and secure. We provide accurate, up-to-date information and strive to build a strong and supportive community dedicated to cybersecurity.

User Menu

Follow us

Follow us on Facebook or Twitter to know first about the latest cybersecurity incidents and malware threats.

Top