/// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DescribeVoicesResponse response = new DescribeVoicesResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("NextToken", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.NextToken = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("Voices", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <Voice, VoiceUnmarshaller>(VoiceUnmarshaller.Instance);
                    response.Voices = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        public async static Task <List <PollyVoiceDTO> > GetVoiceList(IAmazonPolly pollyClient, string languageCode)
        {
            List <PollyVoiceDTO> result = new List <PollyVoiceDTO>();

            DescribeVoicesRequest describeVoicesRequest = new DescribeVoicesRequest()
            {
                LanguageCode = languageCode
            };

            String nextToken;

            do
            {
                DescribeVoicesResponse describeVoicesResponse = await pollyClient.DescribeVoicesAsync(describeVoicesRequest);

                nextToken = describeVoicesResponse.NextToken;
                describeVoicesRequest.NextToken = nextToken;

                //Console.WriteLine(languageCode + " Voices: ");
                foreach (var voice in describeVoicesResponse.Voices)
                {
                    // Console.WriteLine(" Name: {0}, Gender: {1}, LanguageName: {2}", voice.Name, voice.Gender, voice.LanguageName);
                    result.Add(new PollyVoiceDTO()
                    {
                        voice_name = voice.Name,
                        gender     = voice.Gender
                    });
                }
                ;
            } while (nextToken != null);

            return(result);
        }
        public async static Task <List <PollyLanguageDTO> > GetLanguageList(IAmazonPolly pollyClient)
        {
            List <PollyLanguageDTO> result = new List <PollyLanguageDTO>();

            Dictionary <string, string> dicLanguages          = new Dictionary <string, string>();
            DescribeVoicesRequest       describeVoicesRequest = new DescribeVoicesRequest();

            String nextToken;

            do
            {
                DescribeVoicesResponse describeVoicesResponse = await pollyClient.DescribeVoicesAsync(describeVoicesRequest);

                nextToken = describeVoicesResponse.NextToken;
                describeVoicesRequest.NextToken = nextToken;

                foreach (var voice in describeVoicesResponse.Voices)
                {
                    // Console.WriteLine(" Name: {0}, Gender: {1}, LanguageName: {2}", voice.Name, voice.Gender, voice.LanguageName);
                    if (dicLanguages.ContainsKey(voice.LanguageCode) == false)
                    {
                        string   langaugeName = null;
                        string[] words        = voice.LanguageName.Split(' ');
                        if (words.Length > 1)
                        {
                            langaugeName = words[1] + ", " + words[0];
                        }
                        else
                        {
                            langaugeName = voice.LanguageName;
                        }

                        dicLanguages.Add(voice.LanguageCode, voice.LanguageName);
                        result.Add(new PollyLanguageDTO()
                        {
                            language_code = voice.LanguageCode,
                            language_name = langaugeName
                        });
                    }
                }
                ;
            } while (nextToken != null);

            result.Sort(delegate(PollyLanguageDTO x, PollyLanguageDTO y)
            {
                return(x.language_name.CompareTo(y.language_name));
            });

            return(result);
        }
        public static void DescribeVoices()
        {
            AmazonPollyClient client = new AmazonPollyClient();

            DescribeVoicesRequest allVoicesRequest  = new DescribeVoicesRequest();
            DescribeVoicesRequest enUsVoicesRequest = new DescribeVoicesRequest()
            {
                LanguageCode = "en-US"
            };

            try
            {
                String nextToken;
                do
                {
                    DescribeVoicesResponse allVoicesResponse = client.DescribeVoices(allVoicesRequest);
                    nextToken = allVoicesResponse.NextToken;
                    allVoicesRequest.NextToken = nextToken;

                    Console.WriteLine("All voices: ");
                    foreach (Voice voice in allVoicesResponse.Voices)
                    {
                        Console.WriteLine(" Name: {0}, Gender: {1}, LanguageName: {2}", voice.Name,
                                          voice.Gender, voice.LanguageName);
                    }
                } while (nextToken != null);

                do
                {
                    DescribeVoicesResponse enUsVoicesResponse = client.DescribeVoices(enUsVoicesRequest);
                    nextToken = enUsVoicesResponse.NextToken;
                    enUsVoicesRequest.NextToken = nextToken;

                    Console.WriteLine("en-US voices: ");
                    foreach (Voice voice in enUsVoicesResponse.Voices)
                    {
                        Console.WriteLine(" Name: {0}, Gender: {1}, LanguageName: {2}", voice.Name,
                                          voice.Gender, voice.LanguageName);
                    }
                } while (nextToken != null);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception caught: " + e.Message);
            }
        }
Ejemplo n.º 5
0
        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);
        }