2016-04-15 15 views
0

Ich möchte Text in Sprache Sprache langauge ändern. Dies ist mein Code:Wie kann synthetisierte Sprachsprache UWP geändert werden?

 private async void readText(string text) 
    { 

     var voices = SpeechSynthesizer.AllVoices; 
     SpeechSynthesizer speech = new SpeechSynthesizer(); 
     speech.Voice = voices.First(x => x.Gender == VoiceGender.Female && x.Language.Contains("fr-FR")); 
     SpeechSynthesisStream stream = await speech.SynthesizeTextToStreamAsync(text); 
     mediaElement.SetSource(stream, stream.ContentType); 
    } 

    private void btnSay_Click(object sender, RoutedEventArgs e) 
    { 
     readText(txtWhat.Text); 
    } 

Aber wenn ich versuche, diesen Code auszuführen, gibt Ausnahme in Linie geworfen wird:

speech.Voice = voices.First(x => x.Gender == VoiceGender.Female && x.Language.Contains("fr-FR")); 

Eine Ausnahme des Typs 'System.InvalidOperationException' im System aufgetreten .Linq.dll wurde aber nicht im Benutzercode behandelt.

Was mache ich falsch?

+1

Versuchen Sie FirstOrDefault. Sind Sie sicher, dass Französisch installiert ist? ich unter Verwendung speech.Voice = (von Stimme in Windows.Media.SpeechSynthesis.SpeechSynthesizer.AllVoices wo voice.Language == "fr-FR" select voice) .First(); –

+0

Haben Sie Mikrofon in manifesten Funktionen?

+0

Ich habe keine französische Sprache installiert, wie kann ich das tun? – ktos1234

Antwort

2

Bitte überprüfen Sie Ihre Anwendung Zugriff auf das Mikrofon gewährt hat (in manifest)

<Capabilities> 
<DeviceCapability Name="microphone" /> 
</Capabilities> 

Frome Code, den Sie es mit überprüfen:

bool permissionGained = await AudioCapturePermissions.RequestMicrophonePermission(); 
if (!permissionGained) 
{ 
//ask user to modify settings 
} 

Und bessere Kontrolle Erstsprache in dem System installiert ist:

var list = from a in SpeechSynthesizer.AllVoices 
     where a.Language.Contains("en") 
     select a; 

if (list.Count() > 0) 
{ 
synthesizer.Voice = list.Last(); 
} 
+0

Ich überprüfte, welche Sprachen ich installiert habe: foreach (var Sprache in SpeechSynthesizer.AllVoices) { txtVoices.Text = voice.Language; } Es scheint, dass ich keine französische Sprache habe. TextBox zeigt mir nur eine Sprache. – ktos1234

+0

Hier ist ein Artikel zum Installieren der Sprache und zum Einstellen der Spracherkennung. [Installation zusätzlicher Sprachpakete für Windows 10 Spracherkennung] (https://zulja.wordpress.com/2015/08/11/installing-additional-language-packs -for-windows-10-spracherkennung /) –

+0

Danke, ich habe die Sprache installiert und jetzt funktioniert es mit meinem Originalcode. Ich habe noch eine Frage, ist es möglich, Tonhöhe, Lautstärke oder Geschwindigkeit mit SpeechSynthesizer zu ändern? Wie kann ich das machen? – ktos1234

Verwandte Themen