2016-04-15 2 views
0

Я хотел бы изменить текст в речь голос langauge. Это мой код:Как изменить синтезированный речевой язык речи UWP?

 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); 
    } 

Но когда я пытаюсь запустить этот код, есть исключение брошено в строке:

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

Исключение типа «System.InvalidOperationException» произошло в системе .Linq.dll, но не был обработан в коде пользователя.

Что делать неправильно?

+1

Try FirstOrDefault. Вы уверены, что французский язык установлен? У меня есть speech.Voice = (от голоса в Windows.Media.SpeechSynthesis.SpeechSynthesizer.AllVoices где voice.Language == "fr-FR" выберите голос) .First(); –

+0

У вас есть микрофон в манифестных способностях? <Возможности>

+0

Я не установил французский язык, как я могу это сделать? – ktos1234

ответ

2

Пожалуйста, проверьте ваше приложение разрешает доступ микрофона (в манифесте)

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

Фр код вы можете проверить его:

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

И лучше проверить первый установлен языка в системе:

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

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

Я проверил, какие языки у меня установлены: foreach (голос голоса в SpeechSynthesizer.AllVoices) { txtVoices.Text = voice.Language; } Кажется, у меня нет французского языка. TextBox показывает мне только один langugage. – ktos1234

+0

Вот как установить язык и установить его для распознавания речи [Установка дополнительных языковых пакетов для распознавания речи в Windows 10] (https://zulja.wordpress.com/2015/08/11/installing-additional-language-packs -for-windows-10-распознавание речи /) –

+0

Спасибо, я установил язык и теперь он работает с моим исходным кодом. У меня есть еще один вопрос: возможно ли изменить высоту тона, громкость или скорость с помощью SpeechSynthesizer? Как я могу это сделать? – ktos1234

Смежные вопросы