Beispiel #1
0
        private static string WrapWholeElement(VoicePersona voice, string text)
        {
            string template = $"<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" xmlns:mstts=\"https://www.w3.org/2001/mstts\" xml:lang=\"{langcodestring}\">"
                              + $"<voice name=\"{voice.VoiceName}\">";

            template += text;
            template += "</voice>" + "</speak>";
            return(template);
        }
Beispiel #2
0
 private void setCurrentVoice(VoicePersona voice)
 {
     currentVoice  = availableVoices.Where(azv => azv.ShortName == voice.VoiceName).FirstOrDefault();
     speed         = voice.Speed;
     semitonePitch = voice.SemitoneAdjust;
     if (voice.Mood != VoiceMood.Unavailable)
     {
         mood = voice.Mood;
     }
 }
Beispiel #3
0
 private static string WrapMood(VoicePersona voice, string text)
 {
     if (voice.Mood != VoiceMood.Unavailable)
     {
         string template = $"<mstts:express-as style=\"{voice.Mood}\">";
         template += text;
         template += "</mstts:express-as>";
         return(template);
     }
     return(text);
 }
Beispiel #4
0
        private VoicePersona convertAzureVoice(AzureVoice azv)
        {
            var voice = new VoicePersona(this, azv.ShortName, charLimit, Enum.Parse <VoiceSex>(azv.Gender), int.Parse(azv.SampleRateHertz));

            if (azv.ShortName == "en-US-AriaNeural")
            {
                voice.Mood = mood;
            }
            voice.SemitoneAdjust = semitonePitch;
            voice.Speed          = speed;
            return(voice);
        }
Beispiel #5
0
 public MultiCloudTTS(IServiceProvider services, ILogger <HomieBot> logger, IConfiguration configuration)
 {
     this.logger        = logger;
     this.configuration = configuration;
     logger.LogInformation("Initializing multicloud provider");
     voiceProviders = new List <IVoiceProvider>();
     logger.LogInformation("Registering Google Cloud Voice Provider");
     AddVoiceProvider(new GoogleCloudVoiceProvider(logger));
     logger.LogInformation("Registering Azure Voices");
     AddVoiceProvider(new AzureVoiceProvider(logger, configuration));
     logger.LogInformation("Registering DeepFake Voices");
     AddVoiceProvider(new DeepFakeVoiceProvider(logger));
     logger.LogInformation("Setting up current voice");
     currentVoice = voiceProviders.FirstOrDefault().ListVoices.FirstOrDefault();
     logger.LogInformation("MultiCloud ready with default voice of {voice}", currentVoice.VoiceName);
 }
Beispiel #6
0
        private static string WrapProsody(VoicePersona voice, string text)
        {
            if (voice.SemitoneAdjust == 0 && voice.Speed == VoiceSpeed.Normal)
            {
                return(text);
            }
            string template = "<prosody";

            if (voice.SemitoneAdjust != 0)
            {
                template += $" pitch=\"{voice.SemitoneAdjust}st\"";
            }
            if (voice.Speed != VoiceSpeed.Normal)
            {
                string voicestring = voice.Speed.ToString();
                voicestring = voicestring.Replace("x", "x-");
                template   += $" rate=\"{voicestring}\"";
            }
            template += ">";
            template += text;
            template += "</prosody>";
            return(template);
        }
Beispiel #7
0
 public static string CreateSSMLString(VoicePersona voice, string text)
 {
     return(WrapWholeElement(voice, WrapMood(voice, WrapProsody(voice, EscapeXML(text)))));
 }