the Voice

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

the Voice

Beitrag von AUGE_OHR »

Code: Alles auswählen

#pragma library( "ascom10.lib" )

PROCEDURE Main
LOCAL oApp

   oApp := CreateObject( "SAPI.SpVoice.1" )

   IF NIL == oApp
     ? "Fehler: ", ComLastError()
     ? "Beschreibung:"
     ? ComLastMessage()
     RETURN
   ENDIF

   oApp:Speak( "This is the Voice from X base ++" )
   SLEEP(100)
   oApp:destroy()

RETURN
p.s. wie/woher bekommt man andere "Stimmen"
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Moin Jimmy,
aus dem Internet.
Die einzelnen Office-Assistenten haben auch unterschiedliche Stimmen "an Bord".
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Beitrag von Hans Zethofer »

Coole Sache :D

aber auf Deutsch ist es teileweise sehr unverständlich!

Gibt's da vielleicht noch andere Möglichkeiten?

lg
Hans
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hans,
auf Deutsch ist es generell sehr unverständlich - leider!
Liegt zum Einen daran, dass es hauptsächlich in USA entwickelt wird und zum Anderen daran, dass man natürlich auch einen deutschen Sprecher nehmen muss!
Es nützt halt nichts, einen Engländer einen Deutschen Text lesen zu lassen, wenn dieser Engländer nur Englisch kann :D

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Hans Zethofer hat geschrieben: aber auf Deutsch ist es teileweise sehr unverständlich!
Gibt's da vielleicht noch andere Möglichkeiten?
Hast du es auf "deutsch" gestellt oder meinst du "deutsch" von "Sam"
vorgelesen ? Theoretisch kann man die "Stimme" wechseln und die
Sprache wählen aber genau das scheint das activeX Problem zu sein
da Xbase++ ja nur "IDispatch" kann.

Code: Alles auswählen

// will NOT give a Array, it will be a Object of "ISpObjectToken"

aVoice := oApp:GetVoices("Name=Microsoft mary", "Language=407")
aVoice := oApp:callMethod("GetVoices","Name=Microsoft mary","Language=407")
aVoice := oApp:invoke("GetVoices",0,DISPATCH_METHOD,"Name=Microsoft mary", "Language=407")

// ERROR ... "SetVoice"

oApp:SetVoice("Name=Microsoft mary", "Language=407")
oApp:callMethod("SetVoice",aVoice[1])
oApp:invoke("SetVoice",2,DISPATCH_METHOD,"Name=Microsoft mary","Language=407")
und hier der VB Code

Code: Alles auswählen

$oMyError = ObjEvent("AutoIt.Error","MyErrFunc"); Install a custom error 
handler

_TalkOBJ('This is auto it beta speaking.', 3)
_TalkOBJ('This is auto it beta speaking.', 3)
_TalkOBJ('This is auto it beta speaking.', 3)

;voice params:
;
;1 - Microsoft Mary
;2 - Microsoft Mike
;3 - Microsoft Sam

Func _TalkOBJ($s_text, $s_voice = 3)
Local $o_speech = ObjCreate ("SAPI.SpVoice")
    Select
        Case $s_voice == 1
      $o_speech.Voice = $o_speech.GetVoices("Name=Microsoft Mary","Language=409").Item(0)
        Case $s_voice == 2
      $o_speech.Voice = $o_speech.GetVoices("Name=Microsoft Mike","Language=409").Item(0)
        Case $s_voice == 3
      $o_speech.Voice = $o_speech.GetVoices("Name=Microsoft Sam" ,"Language=409").Item(0)
    EndSelect
 $o_speech.Speak ($s_text)
 $o_speech = ""
EndFunc ;==>_TalkOBJ

; This is my custom error handler
Func MyErrFunc()
   $HexNumber=hex($oMyError.number,8)
   Msgbox(0,"","We intercepted a COM Error !" & @CRLF & _
               "Number is: " & $HexNumber & @CRLF & _
               "Windescription is: " & $oMyError.windescription )

   SetError(1); something to check for when this function returns
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Moins,
vielleicht hilft der link ja noch ein wenig weiter:
http://www.microsoft.com/germany/msdn/l ... x?mfr=true

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: vielleicht hilft der link ja noch ein wenig weiter:
leider nein, denn der "Agent" verwendet wohl nicht SAPI.DLL (sondern
MsComCrt.DLL)

Ich denke das ich hier mal wieder nicht mit "pure" Xbase++ weiter
komme da Xbase++ ja nur COM Componenten über "iDispatch" kann.
Deshalb wohl auch die Ankündigung von Hannes / Yukon die ja auch
"iUnknow" Schnittstellen benutzen kann.

interessant wird SAPI ja erst dann wenn er nicht nur spricht sondern auch
einen "verstehen" kann und man per Voice eine Xbase++ Application
steuern würde ...
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Ah - OK!
Schaust Du hier: http://research.microsoft.com/srg/sapi.aspx und hier: http://www.microsoft.com/reader/de/default.mspx
Es gibt die Sprachen (sowohl Ein- als auch Ausgabe) in Englisch, Französisch und Deutsch.
Zusätzlich (jedoch nur Ausgabe) in Italienisch und Spanisch.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben:Schaust Du hier: http://research.microsoft.com/srg/sapi.aspx und hier: http://www.microsoft.com/reader/de/default.mspx
Es gibt die Sprachen (sowohl Ein- als auch Ausgabe) in Englisch, Französisch und Deutsch.
Zusätzlich (jedoch nur Ausgabe) in Italienisch und Spanisch.
Ja genau das scheint es zu sein.

Wenn ich das nun richtig verstehe muss man zunächst das SAPI SDK
installieren (68MB), dann den Reader und dann komme ich an LH ANNA
ran ... aber leider nicht mit "pure" Xbase++ ActiveX :(

... ich muss mir wohl doch mal Hannes / YUKON reinziehen.
gruss by OHR
Jimmy
Antworten