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
                    { }
                }
            }
        }