2016-03-21 3 views
1

Ich möchte eine kleine Text-in-Sprache-App in C# erstellen. Ich benutzte Speech Synthesizer mit Englisch und es hat gut funktioniert. Aber wenn ich einen japanischen Satz überlasse, hat es nicht funktioniert. Ich habe keine Fehlermeldungen erhalten. Muss ich etwas anderes installieren?Wie verwende ich Sprachsynthesizer mit Japanisch?

Ich habe dies auf Win 7 32-Bit und Win 10 64-Bit getestet.

+1

Haben Sie Stimmen für das japanische Gebietsschema installieren Sie verwenden ..? Sie können [hier überprüfen] (https://msdn.microsoft.com/en-us/library/ms586870 (v = vs.110) .aspx) – Rob

+0

@Rob Ich installierte japanische Stimme (Haruka). Wenn ich GetInstalledVoices aufrufen, hat es immer eine Stimme (Anna, Win 7) oder zwei (Zira, David, Win 10). –

+0

Übergeben Sie das korrekte Gebietsschema an 'GetInstalledVoices'? – Rob

Antwort

1

Versuchen Sie, CultureInfo Ihrer Anwendung festzulegen.

var ci = new System.Globalization.CultureInfo("ja-JP"); 
System.Threading.Thread.CurrentThread.CurrentCulture = ci; 
System.Threading.Thread.CurrentThread.CurrentUICulture = ci; 

können Sie einstellen, Englisch oder Japanisch, die CurrentCultureInfo überprüfen.

if (currentUICulture == "ja-JP") 
{ 
    string colorsString = colors.Aggregate((first, Next) => (first += ";" + Next)); 
    string transColor = speak.Translate(colorsString, "en", "ja"); 
    string[] jaColors = transColor.Split(new char[]{';','、'}); 
    for (int i = 0; i < jaColors.Length; i++) 
    { 
     // 
    } 
    commands = new string[]{ "なし", "クリア", "イコール", 
     "プラス", "マイナス", "掛ける", "分割", "追加" }; 
} 

Choices commandsChoices = new Choices(commands); 
GrammarBuilder gb = new GrammarBuilder(commandsChoices); 
sr.LoadGrammar(new Grammar(gb)); 

Choices colorChoices = new Choices(colors); 
gb = new GrammarBuilder(colorChoices); 
sr.LoadGrammar(new Grammar(gb)); 

sr.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sr_SpeechRecognized); 
sr.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(sr_SpeechDetected); 
sr.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(sr_SpeechRecognitionRejected); 

ich hoffe, dass diese Hilfe Ihnen

Antonio