public static List <VoiceItem> ListVoices(Grpc.Core.Channel channel) { TextToSpeechClient client = TextToSpeechClient.Create(channel); // Performs the list voices request var response = client.ListVoices(new ListVoicesRequest { }); List <VoiceItem> voices = new List <VoiceItem>(); foreach (Voice voice in response.Voices) { foreach (var languageCode in voice.LanguageCodes) { VoiceItem voiceItem = new VoiceItem { Name = voice.Name, Gender = voice.SsmlGender.ToString(), Language = languageCode, }; voices.Add(voiceItem); } } return(voices); }
private void comboBoxVoice_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxVoice.SelectedIndex >= 0) { VoiceItem selectedVoice = comboBoxVoice.SelectedItem as VoiceItem; Properties.Settings.Default.defaultVoice = selectedVoice.Name.ToString(); } }
private async void buttonToSpeech_Click(object sender, EventArgs e) { if (textBoxToSpeech.Text != "") { var castSender = new Sender(); LanguageItem selectedLanguage = comboBoxVoiceLanguages.SelectedItem as LanguageItem; VoiceItem selectedVoice = comboBoxVoice.SelectedItem as VoiceItem; if (selectedLanguage == null || selectedVoice == null || comboBoxGender.Text == null) { return; } string speechAudioFile = text_to_mp3(textBoxToSpeech.Text, googleCloudChannel, selectedLanguage.Id.ToString(), comboBoxGender.Text, selectedVoice.ToString()); GoogleReceiverItem googleReceiverItem = new GoogleReceiverItem(); googleReceiverItem = comboBoxGoogleCastReceivers.SelectedItem as GoogleReceiverItem; var receivers = await new DeviceLocator().FindReceiversAsync(); googleHomeReceiver = findReceiverById(googleReceiverItem.Id); if (googleHomeReceiver != null) { await castSender.ConnectAsync(googleHomeReceiver); var mediaChannel = castSender.GetChannel <IMediaChannel>(); await castSender.LaunchAsync(mediaChannel); string url = "http://" + labelIPAddress.Text + ":" + Properties.Settings.Default.webServerPort + "/cast/" + speechAudioFile; try { var mediaStatus = await mediaChannel.LoadAsync(new MediaInformation() { ContentId = url }); } catch { } } } }