Devilmarkus Geschrieben 14. April 2010 Teilen Geschrieben 14. April 2010 Wer ein wenig "Herumspielen" möchte: Ich habe, basierend auf den SPO256A-AL2 Speech Synthesizer Chip einen "kleinen" Sprachsynthesizer programmiert. Dieser verwendet fertige Samples, benötigt KEINE zusätzlichen Libraries und ist (abgesehen von den Sprachsamples) recht klein. Testen könnt Ihr ihn hier: JaSPO-256 Download auf Anfrage. (Ihr könnt auch im Quelltext herausfinden, wie die .jar Datei heisst) Viel Spass damit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. April 2010 Teilen Geschrieben 14. April 2010 Funktioniert nicht: NoClassFound-Exception Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 14. April 2010 Autor Teilen Geschrieben 14. April 2010 Funktioniert nicht: NoClassFound-Exception Seltsam... !?? Welchen Browser verwendest Du? bei mir funzt das Applet im Firefox, IE8 und Safari. Ich hab mal eben fix den "codebase" geändert. 1x aktualisieren bitte. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. April 2010 Teilen Geschrieben 14. April 2010 Weder Safari noch FF 3.6 funktionieren. Safari meldet: Applet not initiated FF: java.lang.noclassdeffounderror Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 14. April 2010 Autor Teilen Geschrieben 14. April 2010 Weder Safari noch FF 3.6 funktionieren. Safari meldet: Applet not initiated FF: java.lang.noclassdeffounderror Vielleicht Servicepack 3 dran schuld? http://cpc-live.com/JaSPO256.zip das Applet (Hat eine Main.class) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. April 2010 Teilen Geschrieben 14. April 2010 Ich benutze OSX und kein Windows und gerade wenn Du Java Applets oder Java Tools veröffentlichst, solltest Du auf passende Kompatibilität achten Meldung: java.lang.NoClassDefFoundError: java/swing/GroupLayout$Group Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 14. April 2010 Autor Teilen Geschrieben 14. April 2010 Ich benutze OSX und kein Windows und gerade wenn Du Java Applets oder Java Tools veröffentlichst, solltest Du auf passende Kompatibilität achten Meldung: java.lang.NoClassDefFoundError: java/swing/GroupLayout$Group Schaue ich mir morgen mal an. Komisch, unter Linux geht es seltsamerweise... Ich schmeiss morgen mal die Layouts raus und ersetze sie gegen Standard-Layouts. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchlimmerFinger Geschrieben 14. April 2010 Teilen Geschrieben 14. April 2010 <APPLET codebase="/" archive="JaSPO256.jar" code="MainApplet.class" width=612 height=295></APPLET> Der Fehler liegt darin, dass einige Browser explizit auch die Felder als param name erwarten. <APPLET codebase="/" archive="JaSPO256.jar" code="MainApplet.class" width=612 height=295> <param name="codebase" value="/"> <param name="archive" value="JaSPO256.jar"> <param name="code" value="MainApplet.class"> <param name="width" value="612"> <param name="height" value="295"> </APPLET> Da gibt es noch einige Stolpersteine bei Applet Programmierung, ganz besonders was IE8 angeht.. Ich denke, nach dieser Änderung sollte auch OSx Applet laden können, ansonsten auf meiner Win Kiste läuft es 1A, nur zu dumm, dass es kein richtiges Deutsch kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 14. April 2010 Autor Teilen Geschrieben 14. April 2010 Sollte nun funktionieren: JaSPO-256 Eventuell Browser-/Java Cache löschen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 14. April 2010 Autor Teilen Geschrieben 14. April 2010 (bearbeitet) nur zu dumm, dass es kein richtiges Deutsch kann. Interesse, eine "Deutsche" Konvertierung zu programmieren dafür? Hier der code für die Englische Umwandlung: (Recht simpel, sicherlich verbesserungsbedürftig) /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author Markus */ import java.util.*; public class Converter { public Converter() { } public Vector getWords(String s) { Vector vector = new Vector(); for (StringTokenizer stringtokenizer = new StringTokenizer(s, "()'\"\\!?{}/-"); stringtokenizer.hasMoreElements(); vector.addElement(stringtokenizer.nextToken().toLowerCase())) { } return vector; } public String getPhoneWord(String s) { s = replace(s, "*JASPO*", "JH|AA|SS|PP|OW"); s = replace(s, "*jaspo*", "JH|AA|SS|PP|OW"); s = replace(s, "*256*", "TT2|UW2|HH1|AA|NN1|DD1|RR2|EH|DD1|FF|IH|FF|TT2|IY|SS|IH|PA3|KK1|SS"); s = replace(s, "*A*", "EY|PA3"); s = replace(s, "*B*", "BB2|IY|PA3"); s = replace(s, "*C*", "SS|IY|PA3"); s = replace(s, "*D*", "DD1|IY|PA3"); s = replace(s, "*E*", "IY|PA3"); s = replace(s, "*F*", "EH|FF|PA3"); s = replace(s, "*G*", "JH|IY|PA3"); s = replace(s, "*H*", "EY|CH|PA3"); s = replace(s, "*I*", "AY|PA3"); s = replace(s, "*J*", "JH|EY|PA3"); s = replace(s, "*K*", "KK1|EY|PA3"); s = replace(s, "*L*", "EH|LL|PA3"); s = replace(s, "*M*", "EH|MM|PA3"); s = replace(s, "*N*", "EH|NG|PA3"); s = replace(s, "*O*", "OW|PA3"); s = replace(s, "*P*", "PP|IY|PA3"); s = replace(s, "*Q*", "KK1|YY2|UW2|PA3"); s = replace(s, "*R*", "AR|PA3"); s = replace(s, "*S*", "EH|SS|PA3"); s = replace(s, "*T*", "TT2|IY|PA3"); s = replace(s, "*U*", "YY1|UW2|PA3"); s = replace(s, "*V*", "VV|IY|PA3"); s = replace(s, "*W*", "DD1|AA|PA2|BB2|EL|YY1|UW2|PA3"); s = replace(s, "*X*", "EH|KK1|SS|PA3"); s = replace(s, "*Y*", "WW|AY|PA3"); s = replace(s, "*Z*", "ZZ|EH|PA2|DD2|PA3"); s = replace(s, "*while*", "WW|AY|LL"); s = replace(s, "*whil*", "WW|IH|LL"); s = replace(s, "*because*", "BB2|IY|KK3|OR|SS"); s = replace(s, "*1*", "WW|AO|NN1"); s = replace(s, "*2*", "TT2|UW2"); s = replace(s, "*3*", "FF|RR1|IY"); s = replace(s, "*4*", "FF|OR"); s = replace(s, "*5*", "FF|AY|PA3|VV"); s = replace(s, "*6*", "SS|IH|PA3|KK1|SS"); s = replace(s, "*7*", "SS|EH|PA3|VV|NN1"); s = replace(s, "*8*", "EY|PA3|TT2"); s = replace(s, "*9*", "NN2|AY|NN1"); s = replace(s, "*0*", "ZZ|IH|RR2|OW"); s = replace(s, "*their*", "TH|EH|ER2"); s = replace(s, "*you*", "YY1|UW2"); s = replace(s, "*measure*", "MM|EY|SH|OR"); s = replace(s, "*measur*", "MM|EY|SS|OR"); s = replace(s, "*human*", "HH1|IY|UW2|MM|AA|NN1"); s = replace(s, "*world*", "WW|OR|LL|DD1"); s = replace(s, "*year*", "YY1|IY|XR"); s = replace(s, "*cent*", "SS|EH|NN1|TT2"); s = replace(s, "*being*", "BB2|IH|IH|NG"); s = replace(s, "*ever*", "EH|PA3|VV|ER2"); s = replace(s, "*application*", "AA|PP|LL|IH|KK3|EY|SH|AX|NN1"); s = replace(s, "*evel*", "IY|PA3|VV|EH|LL"); s = replace(s, "*evil*", "IY|PA3|VV|IH|LL"); s = replace(s, "*ted*", "TT2|EH|DD1"); s = replace(s, "*want*", "WW|AA|NN1|TT2"); s = replace(s, "*charac*", "KK1|AE|RR2|AA|KK3"); s = replace(s, "*chine*", "CH|AY|NN1"); s = replace(s, "*have*", "HH1|AE|PA3|VV"); s = replace(s, "*over*", "OW|PA3|VV|ER2"); s = replace(s, "*ing*", "IH|NG"); s = replace(s, "*ince*", "IH|NN1|SS"); s = replace(s, "*nce*", "NN1|SS"); s = replace(s, "*ed", "EH|DD1"); s = replace(s, "*thought*", "TH|OW|TT2"); s = replace(s, "*though*", "TH|OW"); s = replace(s, "*through*", "TH|RR2|UW2"); s = replace(s, "*drought*", "DD2|RR2|OR|TT2"); s = replace(s, "*brought*", "BB2|RR2|OR|TT2"); s = replace(s, "*rough*", "|RR2|AX|FF"); s = replace(s, "*ough*", "AW|PA1|HH1"); s = replace(s, "*mould*", "MM|UH|PA2|DD2"); s = replace(s, "*ould*", "UH|PA2|DD2"); s = replace(s, "*uild*", "UW2|LL|DD1"); s = replace(s, "*eicest*", "SS|EH|SS|TT2"); s = replace(s, "*icest*", "AY|SS|EH|SS|TT2"); s = replace(s, "*igh*", "AY"); s = replace(s, "*cause*", "KK3|OR|SS"); s = replace(s, "*aus*", "OR|SS"); s = replace(s, "*cial*", "SS|AY|LL"); s = replace(s, "*tia*", "TT2|YR"); s = replace(s, "*tio*", "TT2|AY"); s = replace(s, "*one*", "WW|AO|NN1"); s = replace(s, "*lly*", "LL|IY"); s = replace(s, "*dis*", "DD1|IH|SS"); s = replace(s, "*que*", "KK2|WW"); s = replace(s, "*qu*", "KK2|WW"); s = replace(s, "*sky*", "SS|KK2|AY"); s = replace(s, "*fly*", "FF|LL|AY"); s = replace(s, "*ly*", "LL|IY"); s = replace(s, "*than*", "TH|AA|NN1"); s = replace(s, "*that*", "TH|AA|TT2"); s = replace(s, "*thee*", "TH|IY"); s = replace(s, "*the*", "TH|AX"); s = replace(s, "*them*", "TH|EH|MM"); s = replace(s, "*thence*", "TH|EH|NN1|SS"); s = replace(s, "*then*", "TH|EH|NN1"); s = replace(s, "*there*", "TH|XR"); s = replace(s, "*they*", "TH|AY"); s = replace(s, "*this*", "TH|IH|SS"); s = replace(s, "*thus*", "TH|AX|SS"); s = replace(s, "*abe*", "EY|BB1"); s = replace(s, "*ace*", "EY|PA2|SS"); s = replace(s, "*ade*", "EY|DD1"); s = replace(s, "*afe*", "EY|FF"); s = replace(s, "*age*", "EY|PA2|JH"); s = replace(s, "*ake*", "EY|PA3|KK1"); s = replace(s, "*ale*", "EY|LL"); s = replace(s, "*ame*", "EY|MM"); s = replace(s, "*ane*", "EY|NN1"); s = replace(s, "*ape*", "EY|PP"); s = replace(s, "*ase*", "EY|SS"); s = replace(s, "*aze*", "EY|ZZ"); s = replace(s, "*ate*", "EY|TT2|PA1"); s = replace(s, "*ave*", "EY|PA3|VV"); s = replace(s, "*azy*", "AA|ZZ|IY"); s = replace(s, "*ede*", "IY|DD1"); s = replace(s, "*eke*", "IY|PA3|KK1"); s = replace(s, "*eme*", "IY|MM"); s = replace(s, "*ere*", "IY|RR2"); s = replace(s, "*ese*", "IY|SS"); s = replace(s, "*ete*", "IY|TT2"); s = replace(s, "*iev*", "IH|EH|PA3|VV"); s = replace(s, "*eve*", "IY|PA3|VV"); s = replace(s, "*eze*", "IY|ZZ"); s = replace(s, "*ibe*", "AY|PA2|BB2"); s = replace(s, "*ice*", "AY|SS|SS"); s = replace(s, "*ide*", "AY|DD1"); s = replace(s, "*ife*", "AY|FF"); s = replace(s, "*ige*", "IH|PA3|GG3"); s = replace(s, "*ike*", "AY|KK2"); s = replace(s, "*ile*", "AY|LL"); s = replace(s, "*ime*", "AY|MM"); s = replace(s, "*ine*", "AY|NN1"); s = replace(s, "*ipe*", "AY|PP"); s = replace(s, "*ire*", "AY|RR2"); s = replace(s, "*ise*", "AY|SS"); s = replace(s, "*ite*", "AY|TT2"); s = replace(s, "*usive*", "UW1|SS|IH|PA3|VV"); s = replace(s, "*asive*", "EY|SS|IH|PA3|VV"); s = replace(s, "*ive*", "AY|PA3|VV"); s = replace(s, "*ize*", "AY|ZZ"); s = replace(s, "*obe*", "OW|PA2|BB2"); s = replace(s, "*ode*", "OW|DD1"); s = replace(s, "*oke*", "OW|PA2|KK1"); s = replace(s, "*ole*", "OW|LL"); s = replace(s, "*ome*", "OW|MM"); s = replace(s, "*one*", "OW|NN1"); s = replace(s, "*ope*", "OW|PP"); s = replace(s, "*ore*", "OR"); s = replace(s, "*pn*", "NN1"); s = replace(s, "*kn*", "NN1"); s = replace(s, "*th*", "TH"); s = replace(s, "*ch*", "CH"); s = replace(s, "*sh*", "SH"); s = replace(s, "*ck*", "KK2"); s = replace(s, "*or*", "OR"); s = replace(s, "*ose*", "OW|SS"); s = replace(s, "*ote*", "OW|TT2"); s = replace(s, "*ove*", "OW|PA3|VV"); s = replace(s, "*owe*", "OW"); s = replace(s, "*oze*", "OW|ZZ"); s = replace(s, "*ube*", "UW1|PA2|BB2"); s = replace(s, "*uce*", "UW1|SS|SS"); s = replace(s, "*ude*", "UW1|DD1"); s = replace(s, "*uge*", "UW1|PA2|JH"); s = replace(s, "*uke*", "UW1|PA3|KK1"); s = replace(s, "*ule*", "UW1|LL"); s = replace(s, "*ume*", "UW1|MM"); s = replace(s, "*une*", "UW1|NN1"); s = replace(s, "*upe*", "UW1|PP"); s = replace(s, "*ure*", "UW1|RR2"); s = replace(s, "*usa*", "AX|SS|AA"); s = replace(s, "use*", "YY1|UW2|SS"); s = replace(s, "*use*", "UW1|SS"); s = replace(s, "usu*", "YY1|UW2|SS|YY1|UH"); s = replace(s, "*ute*", "UW1|TT2"); s = replace(s, "*uze*", "UW1|ZZ"); s = replace(s, "*air*", "EH|XR"); s = replace(s, "*all *", "OR|LL|PA4"); s = replace(s, "*all*", "AA|LL"); s = replace(s, "*aria*", "EY|RR2|YR"); s = replace(s, "*imple*", "IH|MM|PP|LL"); s = replace(s, "*ear*", "IY|XR"); s = replace(s, "*eat*", "EY|TT2"); s = replace(s, "*ar*", "AR"); s = replace(s, "*ic*", "IH|KK3"); s = replace(s, "*er*", "ER2"); s = replace(s, "*ew*", "YY1|UW2"); s = replace(s, "*ind*", "IH|NN1|DD1"); s = replace(s, "*ow*", "OW"); s = replace(s, "*aa*", "AA|AR"); s = replace(s, "*ae*", "AA|AE"); s = replace(s, "*ai*", "EY"); s = replace(s, "*au*", "OR"); s = replace(s, "*ea*", "IY|AA"); s = replace(s, "*ee*", "IY"); s = replace(s, "*ei*", "EH|IH"); s = replace(s, "*eo*", "EH|OW"); s = replace(s, "*eu*", "YY1|UW2"); s = replace(s, "*ia*", "YR"); s = replace(s, "*ie*", "IY"); s = replace(s, "*is*", "IH|SS"); s = replace(s, "*io*", "ee|oo"); s = replace(s, "*oa*", "OW"); s = replace(s, "*oe*", "OW"); s = replace(s, "*oi*", "OY"); s = replace(s, "*oo*", "UW2"); s = replace(s, "*ou*", "AW"); s = replace(s, "*ua*", "AX|AE"); s = replace(s, "*ue*", "UW2"); s = replace(s, "*ui*", "UW2"); s = replace(s, "*bb*", "BB2"); s = replace(s, "*cc*", "KK1|SS"); s = replace(s, "*dd*", "DD"); s = replace(s, "*ff*", "FF"); s = replace(s, "*gg*", "GG1"); s = replace(s, "*ll*", "LL"); s = replace(s, "*mm*", "MM"); s = replace(s, "*nn*", "NN1"); s = replace(s, "*pp*", "PP"); s = replace(s, "*ss*", "SS"); s = replace(s, "*tt*", "TT1"); s = replace(s, "*zz*", "ZZ"); s = replace(s, "*my*", "MM|AY"); s = replace(s, "*we*", "WW|IY"); s = replace(s, "*to*", "TT2|UW2"); s = replace(s, "*or*", "OR"); s = replace(s, "ok", "OW|KK1|EY"); s = replace(s, "* ok *", "OW|KK1|EY"); s = replace(s, "* ok", "OW|KK1|EY"); s = replace(s, "*y*", "YY1"); s = replace(s, "*a*", "AA"); s = replace(s, "*e", "PA3"); s = replace(s, "*e*", "EH"); s = replace(s, "i*", "AY|PA3"); s = replace(s, "* i *", "PA4|AY|PA4"); s = replace(s, "*i*", "IH"); s = replace(s, "*o*", "OW"); s = replace(s, "*q*", "KK2|WW"); s = replace(s, "*u*", "UH"); s = replace(s, "*b*", "BB2"); s = replace(s, "c*", "KK2"); s = replace(s, "*c*", "SS"); s = replace(s, "d*", "DD1"); s = replace(s, "*d", "DD1"); s = replace(s, "*ds", "d|z"); s = replace(s, "*d*", "DD1"); s = replace(s, "*f*", "FF"); s = replace(s, "*g*", "GG1"); s = replace(s, "*h*", "HH1"); s = replace(s, "*j*", "JH"); s = replace(s, "*k*", "KK1"); s = replace(s, "l*", "LL"); s = replace(s, "*l*", "LL"); s = replace(s, "*m*", "MM"); s = replace(s, "*n*", "NN1"); s = replace(s, "*p*", "PP"); s = replace(s, "*r*", "RR2"); s = replace(s, "*s*", "SS"); s = replace(s, "*t*", "TT1"); s = replace(s, "*v*", "VV"); s = replace(s, "*w*", "WW"); s = replace(s, "*x*", "KK3|SS"); s = replace(s, "*z*", "ZZ"); s = replace(s, "* *", "PA4"); s = replace(s, "*.*", "PA4"); s = replace(s, "*,*", "PA4"); s = replace(s, "*;*", "PA4"); s = replace(s, "*:*", "PA4"); s = replace(s, "*-*", "PA3"); String s1 = ""; for (StringTokenizer stringtokenizer = new StringTokenizer(s, "[]"); stringtokenizer.hasMoreTokens() { s1 = s1 + stringtokenizer.nextToken(); if (stringtokenizer.hasMoreTokens()) { s1 = s1 + "|"; } } return s1+"|PA4|PA4|PA4|PA4|PA4|PA4|PA4|PA4"; } private String replace(String s, String s1, String s2) { String s3 = s; if (s1.startsWith("*") && s1.endsWith("*")) { boolean flag = false; s1 = s1.substring(1, s1.length() - 1); int i = 0; boolean flag1 = true; while (flag1) { int j = s.indexOf(s1, i); if (j >= 0) { boolean flag2 = true; for (int k = j; k >= 0; k--) { String s4 = s.substring(k, k + 1); if (s4.equals("[")) { flag2 = false; break; } if (s4.equals("]")) { break; } } if (flag2) { s3 = ""; if (j > 0) { s3 = s3 + s.substring(0, j); } s3 = s3 + "[" + s2 + "]"; if (j + s1.length() < s.length()) { s3 = s3 + s.substring(j + s1.length(), s.length()); } flag1 = false; flag = true; } else { i = j + 1; } } else { flag1 = false; } } if (flag) { s3 = replace(s3, "*" + s1 + "*", s2); } } else if (s1.endsWith("*")) { s1 = s1.substring(0, s1.length() - 1); if (s.startsWith(s1)) { s3 = "[" + s2 + "]" + s.substring(s1.length(), s.length()); } } else if (s1.startsWith("*")) { s1 = s1.substring(1, s1.length()); if (s.endsWith(s1)) { s3 = s.substring(0, s.length() - s1.length()) + "[" + s2 + "]"; } } else if (s.equals(s1)) { s3 = "[" + s2 + "]"; } return s3; } } [/code] Bearbeitet 14. April 2010 von Devilmarkus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchlimmerFinger Geschrieben 14. April 2010 Teilen Geschrieben 14. April 2010 Interesse, eine "Deutsche" Konvertierung zu programmieren dafür? Bin nicht mit Sprach(ausgabe)programmierung vertraut, Interesse wird durch Zeitmangel nach unten getrieben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 15. April 2010 Teilen Geschrieben 15. April 2010 Funktionieren tut es jetzt, aber der ausgegebene Text ist so gut wie nicht verständlich (egal ob Englisch oder Deutsch). Mehr als ein Gimmick ist das aber nicht. Es ist halt nicht mehr als ein Replace des eingegebenen Textes in entsprechende Units, die dann aus fertigen Sounddateien zusammengesetzt werden. Du macht, wie im Code zu sehen, ist ein einfaches Replacing, eine Qualitätssteigerung wäre es schon, wenn Du wie unter Sprachsynthese ? Wikipedia beschrieben einen gewichteten Entscheidungsbaum verwendet hättest. Was möchtest Du denn mit dem Thread wissen? Es ist kein Problem genannt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 15. April 2010 Autor Teilen Geschrieben 15. April 2010 @flashpixx: Wissen möchte ich eigentlich garnichts. Ich wollte nur mal diese "Spielerei" verbreiten. - Wegen des "Verstehens": Die Replacements sind annähernd wie die des Dk'tronics Sprachsynthesizers. Ich habe diesen Sprachsynthesizer auch in meinem CPC-Emulator, wo halt die Hardware angesteuert werden kann. Ein Beispiel: Dabei klingt die emulierte Sprachausgabe exakt dem Original. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 15. April 2010 Teilen Geschrieben 15. April 2010 - Wegen des "Verstehens" Aber dann wäre zurecht der Einwand, warum beschränkst Du Dich auf ein System das ~40 Jahre alt ist. Vor allein ein gewichteter Decision Tree ist kein Problem in der Umsetzung. Niemand wird heute einen Compiler vollständig eigenständig entwerfen, Parser und Scanner können direkt aus cf-Grammatiken effizient generiert werden oder ein OS in Assembler programmieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 15. April 2010 Autor Teilen Geschrieben 15. April 2010 (bearbeitet) Wie gesagt dieses Programm ist nur Spielerei. In dem Sprachsynthesizer, welchen ich in meinem Emulator verwende, benötige ich keinen "Converter" dort kann ich gezielt die 64 Phonemes einsetzen, da die Hardware ansich den Wert des abzuspielenden Phonemes an einen Port sendet. Dort verwende ich dann nur einen Code wie Diesen: public String Translate(String input){ String out=""; if (DEBUG) System.out.println("input:"+input); int len = input.length()/3; Phoneme = new String[len]; bytes = new int[len]; for (int i = 0; i < len; i++) { String got = input; Phoneme[i] = got.substring(0,2); input = input.substring(3); } for (int i = 0; i < len; i++){ try{ switch (hexValue(Phoneme[i])){ case 0: Phoneme[i] = "PA1"; break; case 1: Phoneme[i] = "PA2"; break; case 2: Phoneme[i] = "PA3"; break; case 3: Phoneme[i] = "PA4"; break; case 4: Phoneme[i] = "PA5"; break; case 5: Phoneme[i] = "OY"; break; case 6: Phoneme[i] = "AY"; break; case 7: Phoneme[i] = "EH"; break; case 8: Phoneme[i] = "KK3"; break; case 9: Phoneme[i] = "PP"; break; case 10: Phoneme[i] = "JH"; break; case 11: Phoneme[i] = "NN1"; break; case 12: Phoneme[i] = "IH"; break; case 13: Phoneme[i] = "TT2"; break; case 14: Phoneme[i] = "RR1"; break; case 15: Phoneme[i] = "AX"; break; case 16: Phoneme[i] = "MM"; break; case 17: Phoneme[i] = "TT1"; break; case 18: Phoneme[i] = "DH1"; break; case 19: Phoneme[i] = "IY"; break; case 20: Phoneme[i] = "EY"; break; case 21: Phoneme[i] = "DD1"; break; case 22: Phoneme[i] = "UW1"; break; case 23: Phoneme[i] = "AO"; break; case 24: Phoneme[i] = "AA"; break; case 25: Phoneme[i] = "YY2"; break; case 26: Phoneme[i] = "AE"; break; case 27: Phoneme[i] = "HH1"; break; case 28: Phoneme[i] = "BB1"; break; case 29: Phoneme[i] = "TH"; break; case 30: Phoneme[i] = "UH"; break; case 31: Phoneme[i] = "UW2"; break; case 32: Phoneme[i] = "AW"; break; case 33: Phoneme[i] = "DD2"; break; case 34: Phoneme[i] = "GG3"; break; case 35: Phoneme[i] = "VV"; break; case 36: Phoneme[i] = "GG1"; break; case 37: Phoneme[i] = "SH"; break; case 38: Phoneme[i] = "ZH"; break; case 39: Phoneme[i] = "RR2"; break; case 40: Phoneme[i] = "FF"; break; case 41: Phoneme[i] = "KK2"; break; case 42: Phoneme[i] = "KK1"; break; case 43: Phoneme[i] = "ZZ"; break; case 44: Phoneme[i] = "NG"; break; case 45: Phoneme[i] = "LL"; break; case 46: Phoneme[i] = "WW"; break; case 47: Phoneme[i] = "XR"; break; case 48: Phoneme[i] = "WH"; break; case 49: Phoneme[i] = "YY1"; break; case 50: Phoneme[i] = "CH"; break; case 51: Phoneme[i] = "ER1"; break; case 52: Phoneme[i] = "ER2"; break; case 53: Phoneme[i] = "OW"; break; case 54: Phoneme[i] = "DH2"; break; case 55: Phoneme[i] = "SS"; break; case 56: Phoneme[i] = "NN2"; break; case 57: Phoneme[i] = "HH2"; break; case 58: Phoneme[i] = "OR"; break; case 59: Phoneme[i] = "AR"; break; case 60: Phoneme[i] = "YR"; break; case 61: Phoneme[i] = "GG2"; break; case 62: Phoneme[i] = "EL"; break; case 63: Phoneme[i] = "BB2"; break; default: Phoneme[i]="ignore"; break; } } catch (Exception e){} } SpeechByte = ""; out="|"; for (int i = 0; i < len; i++) if (!Phoneme[i].equals("ignore")){ out+=Phoneme[i]+"|"; } say (out); return out; } Bearbeitet 15. April 2010 von Devilmarkus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.