 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 11.11.2006, 02:36 Titel: TextToSpeech mit (fast verständlichen) deutschen Stimmen |
|
|
Code: | '
' Testcode mit der Speech.dll in freeBASIC 0.16
'
' Speech.dll © 2006 Frank Abbing, http://frabbing.de
'
' Um TextToSpeech auf ME mit einer (fast verständlichen) deutschen Stimme
' spechen zu lassen habe ich folgendes installiert:
' 1. speechsdk51.exe (69,6MB © Microsoft)(als erstes installieren)
' 2. MSReaderSetupGer.exe (3,7MB © Microsoft)('Aktivieren' ist nicht nötig)
' 3. readerttsinstallger.exe (5,7MB © Microsoft)(nach dem Reader installieren)
' und natürlich
' 4. Speech.zip (6KB ; frabbing.de)
' Das Speech SDK 5.1 erstellte unter 'Systemsteuerung' die Speech-Einstellungen,
' die nach der 'readerttsinstallger.exe'-Installation die beiden Stimmen
' LH Anna und LH Stefan als deutsche Aussprache anbieten.
' Eine der beiden Stimmen muss ausgewählt sein um den Text in diesem Programm
' zu sprechen. Viel Spass damit ... Volta
'
Dim As Integer hDLL, x
Dim As String spreche
Dim InitSpeech As Function () As Integer
Dim DeInitSpeech As Function () As Integer
Dim PlaySpeech As Function (Byval t As Any Ptr, Byval b As Integer) As Integer
Dim StopSpeech As Function () As Integer
Sub DLLError (text As String)
? "Keine " + text + " - Funktion gefunden, beende das Programm!"
Sleep : End 1
End Sub
hDll = Dylibload("speech.dll")
If hDll<>0 Then
InitSpeech = Dylibsymbol(hDLL,"InitSpeech")
If InitSpeech = 0 Then DLLError "InitSpeech"
DeInitSpeech = Dylibsymbol(hDLL,"DeInitSpeech")
If DeInitSpeech = 0 Then DLLError "DeInitSpeech"
PlaySpeech = Dylibsymbol(hDLL,"PlaySpeech")
If PlaySpeech = 0 Then DLLError "PlaySpeech"
StopSpeech = Dylibsymbol(hDLL,"StopSpeech")
If StopSpeech = 0 Then DLLError "StopSpeech"
Else
? "error: can't load speech.dll !"
Sleep : End 1
End If
x=InitSpeech()
Select Case x
Case 0
? "SAPI nicht installiert, beende das Programm!"
Dylibfree hDll
Sleep : End 1
Case &H407 : ? "SAPI spricht deutsch."
Case &H807 : ? "SAPI spricht schweizer-deutsch."
Case &H40c : ? "SAPI spricht französisch."
Case &H409 : ? "SAPI spricht englisch (US)."
Case &H809 : ? "SAPI spricht englisch (GB)."
Case &H410 : ? "SAPI spricht italienisch."
Case &H40a : ? "SAPI spricht spanisch"
Case &H41f : ? "SAPI spricht türkisch."
Case Else : ? "SAPI spricht ?? " + Hex(x)
End Select
spreche = "Testprogramm zur Sprachausgabe in friebäsic" +_
" , geschrieben von volta , mit der schpietsch d l l von Frank Abbing"
PlaySpeech (Strptr(spreche),Len(spreche))
Do
Sleep 1
Loop While Inkey=""
DeInitSpeech()
Dylibfree hDll
'Sleep
End |
friebäsic <- sieht dumm aus, klingt aber in etwa wie 'freebasic'
EDIT/
In XP kann der Download der speechsdk51.exe entfallen da 'Speech' schon enthalten ist (ungetestet).
Sind in XP auch schon deutsche Stimmen installiert? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Zuletzt bearbeitet von volta am 11.11.2006, 15:47, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 11.11.2006, 13:04 Titel: |
|
|
haha, wie geil! ich glaub, da muss ich mal nen bisschen mit spielen!
Gruß
Lutz Ifer _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.11.2006, 22:51 Titel: |
|
|
das SOLLTE ja in WinXP klappen, aber bei mir kommt "speech.dll nicht gefunden". nicht gefunden, etwas im aktuellen programmverzeichnis? muss ich die aus dem system-verzeichnis rausholen=? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.11.2006, 23:28 Titel: |
|
|
achso okay, wird geladen
edit: unter XP ist nur englische stimme da  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 13.11.2006, 01:47 Titel: Nachtrag zum TextToSpeech |
|
|
Nachtrag zum TextToSpeech:
1. In XP kann der Download der speechsdk51.exe entfallen da 'Speech' schon enthalten ist
2a. wer gerne deutsche Stimmen hören möchte kann sich mit MSReaderSetupGer.exe -> http://www.microsoft.com/reader/de/downloads/pc.asp den M$Reader installieren.
2b. 'Aktivieren' ist nicht nötig (geht auch nur mit IE und dann wollen die noch die Erlaubnis zum Datensammeln )
3. Damit sind die beiden (bisher einzigen) kostenlosen deutschen Stimmen zu installieren:
readerttsinstallger.exe -> http://www.microsoft.com/reader/de/downloads/tts.asp
(nicht vergessen dann LH Anna oder LH Stefan auszuwählen)
2c. Wer den M$Reader nicht nutzen möchte kann ihn jetzt deinstallieren.
4. Wichtig: aus der Speech.zip -> http://frabbing.de/Speech.zip braucht man die Speech.dll
Schöne Zungenbrecher:
Code: | 'spreche = "fischers fritze fischt frische fische , frische fische fischt fischers fritze"
'spreche = "Willi der wiskimixer, mixt wiski für lilli, willi mixt gerne wiski für lilli, weil lilli die wiskimixerin, gerne wiski von willi dem wiskimixer trinkt"
spreche = "zwischen 2 zwetschgen2gen zwitschern 2 schwalben"
'spreche = "Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid"
'spreche = "Es ist verboten, toten Kojoten die Hoden zu verknoten"
'spreche = "Wir Wiener Waschweiber wollten wohl weiße Wäsche waschen, wenn wir Wiener Waschweiber wüßten, wo weiches, warmes Wasser wär" | Viel Spass damit ...
EDIT/ Code: | 'für FB 0.17 statt:
Dim As Integer hDLL, x
...
Dim As Integer ptr hDLL
Dim As Integer x
... |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 16.09.2007, 22:16 Titel: |
|
|
Es geht auch ohne speech.dll.
Gerade im engl. Forum entdeckt:
Code: | 'Orginal von:
'Listen to your computer!
'by coder guy
'http://www.network54.com/Forum/190885/message/1189664477/Listen+to+your+computer%21
#include once "windows.bi"
#include once "win/winnt.bi"
#include once "win/objbase.bi"
#inclib "ole32"
Dim IID_ISpVoice As GUID => ( &H6c44df74, &H72b9, &H4992, {&Ha1, &Hec, &Hef, &H99, &H6e, &H04, &H22, &Hd4 })
Dim CLSID_SpVoice As GUID => ( &H96749377, &H3391, &H11d2, {&H9e, &He3, &H00, &Hc0, &H4f, &H79, &H73, &H96 })
Type ISpVoiceVtbl_ As ISpVoiceVtbl
Type ISpVoice
lpVtbl As ISpVoiceVtbl_ Ptr
End Type
#define SPF_DEFAULT 0
Type ISpVoiceVtbl
' iunknown
QueryInterface As Function(Byval As ISpVoice Ptr, Byval As IID Ptr, Byval As Any Ptr) As HRESULT
AddRef As Function(Byval As ISpVoice Ptr) As ULONG
Release As Function(Byval As ISpVoice Ptr) As ULONG
' stubs
SetNotifySink As Function() As HRESULT
SetNotifyWindowMessage As Function() As HRESULT
SetNotifyCallbackFunction As Function() As HRESULT
SetNotifyCallbackInterface As Function() As HRESULT
SetNotifyWin32Event As Function() As HRESULT
WaitForNotifyEvent As Function() As HRESULT
GetNotifyEventHandle As Function() As HRESULT
SetInterest As Function() As HRESULT
GetEvents As Function() As HRESULT
GetInfo As Function() As HRESULT
SetOutput As Function() As HRESULT
GetOutputObjectToken As Function() As HRESULT
GetOutputStream As Function() As HRESULT
' done
Pause As Function(Byval As ISpVoice Ptr) As HRESULT
Resume As Function(Byval As ISpVoice Ptr) As HRESULT
' stubs
SetVoice As Function() As HRESULT
GetVoice As Function() As HRESULT
' done
Speak As Function(Byval As ISpVoice Ptr, Byval pwcs As Wstring Ptr, Byval dwFlags As DWORD, Byval pulStreamNumber As ULONG Ptr) As HRESULT
' stubs
SpeakStream As Function() As HRESULT
GetStatus As Function() As HRESULT
Skip As Function() As HRESULT
SetPriority As Function() As HRESULT
GetPriority As Function() As HRESULT
SetAlertBoundary As Function() As HRESULT
GetAlertBoundary As Function() As HRESULT
' done
SetRate As Function(Byval As ISpVoice Ptr, Byval RateAdjust As Integer) As HRESULT
GetRate As Function(Byval As ISpVoice Ptr, Byval RateAdjust As Integer Ptr) As HRESULT
SetVolume As Function(Byval As ISpVoice Ptr, Byval usVolume As Ushort) As HRESULT
GetVolume As Function(Byval As ISpVoice Ptr, Byval pusVolume As Ushort Ptr) As HRESULT
WaitUntilDone As Function(Byval As ISpVoice Ptr, Byval msTimeout As ULONG) As HRESULT
' stubs
SetSyncSpeakTimeout As Function() As HRESULT
GetSyncSpeakTimeout As Function() As HRESULT
SpeakCompleteEvent As Function() As HRESULT
IsUISupported As Function() As HRESULT
DisplayUI As Function() As HRESULT
End Type
Dim voice As ISpVoice Ptr
CoInitialize(NULL)
CoCreateInstance(@CLSID_SpVoice, NULL, CLSCTX_ALL, @IID_ISpVoice, Cast (Any Ptr, @voice))
'klingt nur mit den deutschen Stimmen LH Anna oder LH Stefan verständlich
Dim As String spreche
spreche = "Fischers fritze fischt frische fische , frische fische fischt fischers fritze. " _
"Willi der wiskimixer mixt wiski für lilli, willi mixt gerne wiski für lilli, "_
"weil lilli die wiskimixerin, gerne wiski von willi dem wiskimixer trinkt. " _
"Zwischen 2 zwetschgen2gen zwitschern 2 Schwalben. " _
"Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid. " _
"Es ist verboten, toten Kojoten die Hoden zu verknoten. " _
"Wir Wiener Waschweiber wollten wohl weiße Wäsche waschen, wenn wir Wiener "_
"Waschweiber wüßten, wo weiches, warmes Wasser wär. "
voice->lpVtbl->Speak(voice, spreche, SPF_DEFAULT, NULL)
voice->lpVtbl->WaitUntilDone(voice, INFINITE)
voice->lpVtbl->Release(voice)
CoUninitialize() |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 16.09.2007, 22:58 Titel: |
|
|
frabbing.de? Woher kenn ich das nur *am-kopf-kratz*
Wer hat denn da zum Portieren XProfan gelernt?  |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 17.09.2007, 12:14 Titel: |
|
|
Um die speech.dll anwenden zu können muss man nicht xProfan lernen, oder?
[Klugscheißermodus]
Das gleiche gilt für die ProSpeed.dll, da ( http://forum.qbasic.at/viewtopic.php?p=62169#62169 )
habe ich dir mal einen Wink mit dem Zaunpfahl gegeben aber du hast ihn wohl nicht bemerkt?
[/Klugscheißermodus] _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 17.09.2007, 14:15 Titel: |
|
|
Hm, stimmt denn wohl  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|