Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

TextToSpeech mit (fast verständlichen) deutschen Stimmen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 11.11.2006, 02:36    Titel: TextToSpeech mit (fast verständlichen) deutschen Stimmen Antworten mit Zitat

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

grinsen friebäsic <- sieht dumm aus, klingt aber in etwa wie 'freebasic' happy

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 11.11.2006, 13:04    Titel: Antworten mit Zitat

haha, wie geil! ich glaub, da muss ich mal nen bisschen mit spielen!

Gruß
Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.11.2006, 22:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.11.2006, 23:10    Titel: Antworten mit Zitat

Folgendes brauchst du auch unter XP:
volta hat Folgendes geschrieben:
' 4. Speech.zip (6KB ; frabbing.de)

_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.11.2006, 23:28    Titel: Antworten mit Zitat

achso okay, wird geladen happy
edit: unter XP ist nur englische stimme da happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 13.11.2006, 01:47    Titel: Nachtrag zum TextToSpeech Antworten mit Zitat

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 Kopf schütteln )

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. zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 16.09.2007, 22:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 16.09.2007, 22:58    Titel: Antworten mit Zitat

frabbing.de? Woher kenn ich das nur *am-kopf-kratz*
Wer hat denn da zum Portieren XProfan gelernt? grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 17.09.2007, 12:14    Titel: Antworten mit Zitat

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? zwinkern
[/Klugscheißermodus]
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 17.09.2007, 14:15    Titel: Antworten mit Zitat

Hm, stimmt denn wohl verwundert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz