public QuestToSpeechConfig() // set defaults { EnabledModules = new QuestToSpeech.Module[] { QuestToSpeech.Module.Windows }; SelectedVoices = new QuestToSpeech.Voice[0]; AzureAPI = null; AwsAPI = null; }
private void btnSave_Click(object sender, EventArgs e) { if (!string.IsNullOrWhiteSpace(txtAzureKey.Text) && comboAzureRegion.SelectedIndex != -1) { AzureAPIConfig = new AzureAPIConfig() { Key = txtAzureKey.Text.Trim(), Region = comboAzureRegion.SelectedItem.ToString() }; } else { AzureAPIConfig = null; } if (!string.IsNullOrWhiteSpace(txtAwsAccessKey.Text) && !string.IsNullOrWhiteSpace(txtAwsSecretKey.Text) && comboAwsRegion.SelectedIndex != -1) { AwsAPIConfig = new AwsAPIConfig() { AccessKey = txtAwsAccessKey.Text.Trim(), SecretKey = txtAwsSecretKey.Text.Trim(), Region = comboAwsRegion.SelectedItem.ToString() }; } else { AwsAPIConfig = null; } }
public SettingsVoicesForm(QuestToSpeech.Voice[] allVoices, QuestToSpeech.Voice[] preSelected, AzureAPIConfig azureConfig, AwsAPIConfig awsConfig) { InitializeComponent(); azureAPIConfig = azureConfig; awsAPIConfig = awsConfig; voices = allVoices; tmpSelectedList.AddRange(preSelected); lblNumTotalSelected.Text = string.Format("(Total selected {0})", tmpSelectedList.Count); // insert voices foreach (QuestToSpeech.Voice v in voices) { if (!comboLangCodes.Items.Contains(v.LangCode)) { comboLangCodes.Items.Add(v.LangCode); } } }
public static string GetVoices(ref QuestToSpeech.Voice[] voices, AwsAPIConfig config) { List <QuestToSpeech.Voice> list = new List <QuestToSpeech.Voice>(); try { using (AmazonPollyClient client = new AmazonPollyClient(config.AccessKey, config.SecretKey, Amazon.RegionEndpoint.GetBySystemName(config.Region))) { DescribeVoicesRequest req = new DescribeVoicesRequest(); string nextToken; do { DescribeVoicesResponse res = client.DescribeVoices(req); nextToken = res.NextToken; req.NextToken = nextToken; foreach (var voice in res.Voices) { list.Add(new QuestToSpeech.Voice() { Name = string.Format("{0}-{1}", voice.LanguageCode, voice.Id.ToString()), Gender = voice.Gender == Gender.Female ? QuestToSpeech.Gender.Female : QuestToSpeech.Gender.Male, LangCode = voice.LanguageCode, Module = QuestToSpeech.Module.AWS }); } } while (nextToken != null); list.Sort(delegate(QuestToSpeech.Voice v1, QuestToSpeech.Voice v2) { return(v1.Name.CompareTo(v2.Name)); }); voices = list.ToArray(); } } catch (Exception ex) { return(ex.InnerException == null ? ex.Message : ex.InnerException.ToString()); } return(null); }
public SettingsApisForm(AzureAPIConfig preAzureApiConfig, AwsAPIConfig preAwsApiConfig) { InitializeComponent(); AzureAPIConfig = preAzureApiConfig; AwsAPIConfig = preAwsApiConfig; if (AzureAPIConfig != null) { txtAzureKey.Text = AzureAPIConfig.Key; comboAzureRegion.SelectedItem = AzureAPIConfig.Region; } if (AwsAPIConfig != null) { txtAwsAccessKey.Text = AwsAPIConfig.AccessKey; txtAwsSecretKey.Text = AwsAPIConfig.SecretKey; comboAwsRegion.SelectedItem = AwsAPIConfig.Region; } if (Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS") == null) { lblGoogle.Text = "Environment variable \"GOOGLE_APPLICATION_CREDENTIALS\" not found"; lblGoogle.ForeColor = Color.Red; } else if (!File.Exists(Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"))) { lblGoogle.Text = string.Format("Authentication file {0} not found", Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS")); lblGoogle.ForeColor = Color.Red; } else { lblGoogle.Text = "Environment variable and authentication file found"; lblGoogle.ForeColor = Color.Green; } }
public void SetAwsAPIConfig(AwsAPIConfig apiConfig) { config.AwsAPI = apiConfig; SaveConfig(); }
public static string Speak(string txt, QuestToSpeech.Voice voice, string filePath, AwsAPIConfig config) { try { using (AmazonPollyClient client = new AmazonPollyClient(config.AccessKey, config.SecretKey, Amazon.RegionEndpoint.GetBySystemName(config.Region))) { string nameWoLang = voice.Name.Replace(voice.LangCode + "-", ""); SynthesizeSpeechRequest req = new SynthesizeSpeechRequest() { OutputFormat = OutputFormat.Mp3, LanguageCode = voice.LangCode, VoiceId = (VoiceId)typeof(VoiceId).GetField(nameWoLang).GetValue(null), Text = txt }; using (FileStream fileStream = new FileStream(filePath + ".mp3", FileMode.Create, FileAccess.Write)) { SynthesizeSpeechResponse res = client.SynthesizeSpeech(req); byte[] buffer = new byte[2 * 1024]; int readBytes; using (Stream audioStream = res.AudioStream) { while ((readBytes = audioStream.Read(buffer, 0, 2 * 1024)) > 0) { fileStream.Write(buffer, 0, readBytes); } } } // convert to wav and delete mp3 if (File.Exists(filePath + ".mp3")) { using (Mp3FileReader mp3 = new Mp3FileReader(filePath + ".mp3")) { using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3)) { WaveFileWriter.CreateWaveFile(filePath, pcm); } } File.Delete(filePath + ".mp3"); } } } catch (Exception ex) { return(ex.InnerException == null ? ex.Message : ex.InnerException.ToString()); } return(null); }