Deutsch
Quelltexte/ Codesnippets

Sapi Sprachausgabe

 
- Seite 1 -



Frank
Abbing
Ein kleines Testprogramm von mir. Happert es noch irgendwo?

5 kB
Hochgeladen:17.06.2006
Ladeanzahl373
Herunterladen
 
17.06.2006  
 



 
- Seite 2 -


Die dt. Stimmen von dem link von Frank wollten sich bei mir nicht Installieren lassen, da wohl die Hauptanwendung (Reader?) fehlt. Hab hier aber auch noch eine Downloadmöglichkeit für dt. Stimmen, von IBM, sollte kompatibel sein, mit meiner TTS-Lib funktioniert es. [...] 
ganz unten links sind verschiedene Sprachen, auch german. Sind wohl Trialversionen, aber keine Einschränkungen.

Hab jetzt bei mir:
[quote:0eb5146c9e]There are 9 voices installed in your system
Voice index = 0 , Voice name = Microsoft Sam
Voice index = 1 , Voice name = Default
Voice index = 2 , Voice name = Gisela
Voice index = 3 , Voice name = Gisela-Tel
Voice index = 4 , Voice name = Matti
Voice index = 5 , Voice name = Max
Voice index = 6 , Voice name = Max-Tel
Voice index = 7 , Voice name = Oma
Voice index = 8 , Voice name = Opa[/quote:0eb5146c9e]
Vielleicht findet jemand den link ja nützlich
Weiß jetzt aber nicht, ob die Lib von Frank SAPI 4 und 5 unterstützt, bzw. obs gebraucht wird.
 
18.06.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Leute!

@ Frank: Ja, genau sowas!
Gibts da, wo du das her hast, noch mehr? MS hält sich seit einiger Zeit ziemlich bedeckt mit solchen Infos

@ All: In der SAPI-Hilfe wird irgendwo beschrieben, wie welche Buchstabenkombinationen von SAM ausgesprochen werden. Damit sollte sich doch eine Art Wrapper schreiben lassen (sowas hatte ich damals schon für den C64 und Sam/Reciter gebastelt). Dann muss man nicht erst den ganzen Kram von MS runterladen

SeeYou
Pascal
 
18.06.2006  
 




Frank
Abbing
[quote:28a564f433]Die dt. Stimmen von dem link von Frank wollten sich bei mir nicht Installieren lassen, da wohl die Hauptanwendung (Reader?) fehlt. Hab hier aber auch noch eine Downloadmöglichkeit für dt. Stimmen, von IBM, sollte kompatibel sein, mit meiner TTS-Lib funktioniert es. [/quote:28a564f433]
Ob der Reader Bedingung für die Installation der deutschen Stimmen ist, weiss ich nicht genau. Allerdings habe ich ihn installiert.

Die deutschen Stimmen von IBM finden sich bei mir nur in den SAPI4-Einstellungen, lassen sich aber nicht für die Sprachausgabe nutzen.

[quote:28a564f433]@ Frank: Ja, genau sowas!
Gibts da, wo du das her hast, noch mehr? MS hält sich seit einiger Zeit ziemlich bedeckt mit solchen Infos [/quote:28a564f433]
Leider nicht. Ich hatte nur diese Inc-Datei und einen rudimentären, älteren Quellcode gefunden.

Was mich noch nervt ist, dass man die aktuelle Sprachausgabe nicht unterbrechen kann. Da habe ich noch nichts entdeckt. Aber wahrscheinlich gibts da irgendwo eine Callback-Möglichkeit. Ein Thread wäre auch noch möglich. Sobald ich wieder Zeit habe, probier ich mich weiter daran.
 
18.06.2006  
 




Frank
Abbing
Bin ein Stückchen weiter gekommen. Die Texte werden jetzt unabhängig vom restlichen Progamm vorgelesen und können gestoppt werden. Hier nochmal ein Testprogramm.

67 kB
Hochgeladen:18.06.2006
Ladeanzahl192
Herunterladen
 
18.06.2006  
 




Frank
Abbing
So, ich habe das Ganze mal in eine Dll umgesetzt und um einen Test-Quellcode in XProfan erweitert. Ich hoffe, ihr testet auch fleissig, ob es überall funktioniert. Wäre doch schade, wenn dieses Thema auch wieder einschläft.
Bei genügend Resonanz werde ich die Dll Stück für Stück erweitern und mit mehr Funktionen ausstatten. Sieht in der Hinsicht ganz gut aus.

Anbei Dll und Profancode.

[quote:cfe4a2392b]@ All: In der SAPI-Hilfe wird irgendwo beschrieben, wie welche Buchstabenkombinationen von SAM ausgesprochen werden. Damit sollte sich doch eine Art Wrapper schreiben lassen (sowas hatte ich damals schon für den C64 und Sam/Reciter gebastelt). Dann muss man nicht erst den ganzen Kram von MS runterladen [/quote:cfe4a2392b]
Ja, habs gefunden:

[quote:cfe4a2392b]American English Phoneme Representation
This is a brief introduction to the use and implementation of the SAPI phoneme representations.

Symbolic and Numerical Representation
Application developers can create pronunciations for words that are not currently in the lexicon by using the English phonemes represented in the following table. The phoneme set is composed of a symbolic phonetic representation (SYM).

The application developer will be able to enter the SYM representation to create the pronunciation using the XML PRON tag, or by creating a new lexicon entry. Each phoneme entry should be space delimited.

Tag Description
PRON SYM Tag used to insert a pronunciation using symbolic representation.

Example: pronunciation for hello:

<PRON SYM = h eh l ow/>

For improved accuracy, the primary (1), secondary (2) stress markers, and the syllabic markers (-) can be added to the pronunciation.

Example: pronunciation for hello using the primary stress (1) and syllabic (-) markers:

<PRON SYM = h eh - l ow 1/>
American English Phoneme Table
SYM Example PhoneID
- syllable boundary (hyphen) 1
! Sentence terminator (exclamation mark) 2
& word boundary 3
, Sentence terminator (comma) 4
. Sentence terminator (period) 5
? Sentence terminator (question mark) 6
_ Silence (underscore) 7
1 Primary stress 8
2 Secondary stress 9
aa father 10
ae cat 11
ah cut 12
ao dog 13
aw foul 14
ax ago 15
ay bite 16
b big 17
ch chin 18
d dig 19
dh then 20
eh pet 21
er fur 22
ey ate 23
f fork 24
g gut 25
h help 26
ih fill 27
iy feel 28
jh joy 29
k cut 30
l lid 31
m mat 32
n no 33
ng sing 34
ow go 35
oy toy 36
p put 37
r red 38
s sit 39
sh she 40
t talk 41
th thin 42
uh book 43
uw too 44
v vat 45
w with 46
y yard 47
z zap 48
zh pleasure 49 [/quote:cfe4a2392b]
So einem Wrapper fände ich auch vorteilhaft und ich würde dich da gerne unterstützen. Du meinst sicher, dass man Sam damit deutsch sprechen lassen könnte, ohne extra deutsche Stimmen runterladen zu müssen, oder?
Sam ist ja auf jedenfall überall da schon präsent, wo Windows 2000/XP installiert ist, wenn ich das richtig sehe. Und wenn ich recht informiert bin, kann man die Sprachausgabe manuell auf Sam umstellen, bevor man sie ausgibt. Somit könnte jeder die Texte deutsch hören, ohne Extra-Installationen vornehmen zu müssen.

2 kB
Hochgeladen:18.06.2006
Ladeanzahl212
Herunterladen
 
18.06.2006  
 




Michael
Wodrich
[quote:fdf3e8a134]Die dt. Stimmen von dem link von Frank wollten sich bei mir nicht Installieren lassen, da wohl die Hauptanwendung (Reader?) fehlt. Hab hier aber auch noch eine Downloadmöglichkeit für dt. Stimmen, von IBM, sollte kompatibel sein, mit meiner TTS-Lib funktioniert es.[/quote:fdf3e8a134]
Die TTS-Lib bricht ja mit der Meldung MS Reader 2.1 nicht gefunden ab. Ich habe also als Suchbegriff ms reader 2.1 bei Google eingegeben und habe sofort die deutsche Downloadseite serviert bekommen - 3 MB.
Die Stimmen: LH Anna, LH Stefan
Anna hört sich so garstig an, also habe ich mich für Stefan entschieden und ihn sofort mit Pascals Code gefüttert. Erste Lesung Ok - zweite ist wohl ein Eunuch.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
19.06.2006  
 




Clemens
Meier
Bei mir dito, allerdings ohne Eunuch Wie kommt man an die anderen Stimmen ran? Habe alles mögliche versucht. Es gibt zwar Trial-Stimmen, download schlappe 70 MB (die lesen dort wohl Romane vor ). Kennt jemand eine gute Quelle für Stimmen?
 
XProfan 9.1; XP SP2; FF; Editpad
19.06.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Leute!

Habe noch ein wenig gebastelt; die Umsetzung der Laute ist bestimmt noch nicht vollständig, aber das Prinzip sollte erkennbar sein
Hat allerdings einen mörderischen Akzent, das Teil...
!
window 50,50-500,200
 $H Windows.ph

proc MultiToWide--------------------------------------------------------------

    parameters Text$,Ziel&
    return ~MultiByteToWideChar(0,0,addr(Text$),-1,Ziel&,250)
    endproc-----------------------------------------------------------------------

    proc StringToGUID-------------------------------------------------------------

        parameters GUID$,GUID&
        declare Temp$
        Temp$=space$(80)
        ~MultiByteToWideChar(1,1,addr(GUID$),-1,addr(Temp$),80)
        external("ole32","CLSIDFromString",addr(Temp$),GUID&)
        endproc-----------------------------------------------------------------------

        proc CallMethod---------------------------------------------------------------

            parameters IFace&,Method&
            declare VTable&
            VTable&=long(IFace&,0)
            Method&=long(VTable&,Method&*4)
            case %pcount=2:return call( Method&,IFace& )
            case %pcount=3:return call( Method&,IFace&,&(3) )
            case %pcount=4:return call( Method&,IFace&,&(3),$(4) )
            case %pcount=5:return call( Method&,IFace&,&(3),&(4),&(5) )
            endproc-----------------------------------------------------------------------

            proc Sprich-------------------------------------------------------------------

                parameters a$
                print a$

                whileloop len(a$),1,-1--Leerzeichen einfügen

                    a$=ins$(" ",a$,&loop+1)

                endwhile

                a$=lower$(a$)
                a$=translate$(a$,"s c h","sh ")
                a$=translate$(a$,"s t","sh t ")
                a$=translate$(a$,"e i ","ay ")
                a$=translate$(a$,"i e ","iy ")
                a$=translate$(a$,"e u ","oy ")
                a$=translate$(a$,"a ","aa ")
                a$=translate$(a$,"e ","eh ")
                a$=translate$(a$,"i ","iy ")
                a$=translate$(a$,"u ","uw ")
                a$=translate$(a$,"o ","ow ")
                a$=translate$(a$,"j ","jh ")
                a$=translate$(a$,"ö ","er ")
                a$=translate$(a$,"ä ","ae ")
                a$=translate$(a$,"ü ","er ")
                a$=translate$(a$," "," 1 ")--Hinter jedes Phonem eine 1 verlängert die Aussprache
                a$="<lang langid=409><PRON SYM = "+a$+" /></lang>"--LangID $409 = Englisch (Sam)
                MultiToWide(a$,a#)
                CallMethod(ISpVoice&,20,a#,0,0)
                endproc-----------------------------------------------------------------------

                proc SprichEx-----------------------------------------------------------------

                    parameters a$,b$
                    print a$,b$
                    a$="<context ID =  "+b$+" > "+a$+" </context>"
                    MultiToWide(a$,a#)
                    CallMethod(ISpVoice&,20,a#,0,0)
                    endproc-----------------------------------------------------------------------
                    declare ISpVoice&,a#
                    dim a#,1024
                    external("ole32","CoInitialize",0)
                    StringToGUID("{96749377-3391-11D2-9EE3-00C04F797396}",a#)
                    StringToGUID("{6C44DF74-72B9-4992-A1EC-EF996E0422D4}",a#+16)
                    external("ole32","CoCreateInstance",a#,0,23,a#+16,addr(ISpVoice&))
                    --Hier wird in jedem Fall mit Sam gesprochen
                    Sprich("guten tag")
                    Sprich("schönes wetter heute")
                    --Hier wird die eingestellte Standart-Stimme verwendet
                    --Dies klappt natürlich am Besten mit einer deutschen Simme :-(
                    SprichEx("19.06.2006","date_dmy")
                    SprichEx("12:30","time")
                    SprichEx("1234","number_cardinal")
                    SprichEx("1234","number_digit")
                    SprichEx("123/4","number_fraction")
                    SprichEx("12,34","number_decimal")
                    CallMethod(ISpVoice&,2)
                    external("ole32","CoUninitialize")
                    dispose a#

@Roland:
[quote:3a09024a6a]
wie könnte oder sollte Deiner Meinung nach eine solche Unterstützung aussehen?
[/quote:3a09024a6a]
Ohne unbescheiden klingen zu wollen, aber vielleicht solltest du die COM-Routinen, die ich verwende (oder etwas vergleichbares) mit einbauen. Einfach nur, damit die Leute, die sich mit COM/OLE befassen (werden), einen gemeinsamen Standart haben.

SeeYou
Pascal
 
19.06.2006  
 




Frank
Abbing
Gut, wies aussieht, wird die Dll nicht mehr benötigt. Ich stelle sie ein. Zumindest konnte ich zu einem Thema anregen, zu dem für Profan bisher nichts existierte.

@Pascal: Funktioniert gut! Meinst du, du bekommst den Akzent noch ein wenig raus?
 
19.06.2006  
 




Michael
Wodrich
Habe noch ergänzt
SprichEx("Guten Tag. Schönes Wetter heute.","text")

...und es lief auf Anhieb. Da kann ich jedem nur raten, eine deutsche Stimme zu installieren (Sam müßte eigentlich Schmerzensgeld zahlen, wenn er sich an deutschen Texten vergreift).
Es wird von der (deutschen) Standardstimme alles TOP vorgelesen.

Danke Pascal - wirklich Klasse.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
19.06.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Leute!

@ Frank:
[quote:503f1884c5]Gut, wies aussieht, wird die Dll nicht mehr benötigt. Ich stelle sie ein. [/quote:503f1884c5]
Das war aber nicht Sinn der Sache
Im Zweifelsfall sind deine dlls anwenderfreundlicher als meine Demos.
Und die COM-Geschichten laufen ja erst ab Profan 7.

@ All: Viel besser wird die Aussprache von Sam wohl nicht werden. Möchte mal wissen, was MS sich dabei gedacht hat...
Das man sich die deutschen Varianten selbst besorgen muss ist schon ärgerlich, aber dass man auch noch diesen EBook-Reader braucht...
Wenn ich das richtig sehe, sind ja auch Funktionen zur Spracherkennung verfügbar, und die sind wohl auch an die jeweilige Sprache gebunden

SeeYou
Pascal
 
20.06.2006  
 




Frank
Abbing
[quote:fd812a2fd1]Das war aber nicht Sinn der Sache
Im Zweifelsfall sind deine dlls anwenderfreundlicher als meine Demos.
Und die COM-Geschichten laufen ja erst ab Profan 7.[/quote:fd812a2fd1]
Stimmt ja auch wieder...

Pascal, weisst du, wie man am besten an die Infos kommen kann, welche Sprache der User aktuell eingestellt hat?
Wenn dort deutsch eingestellt ist, könnte man die deutsche Stimme auch verwenden. Ist nur Sam verfügbar, dann muss man eben mit dem Akzent leben.
 
20.06.2006  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

35.353 Betrachtungen

Unbenanntvor 0 min.
Walter28.11.2022
OliverJung28.11.2021
Uwe ''Pascal'' Niemeier24.11.2021
p.specht18.11.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie