示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task <IStreamingRecognition> StartStreamingRecognitionAsync(AudioSettings?settings = null, CancellationToken cancellationToken = default)
        {
            settings ??= SupportedStreamingSettings.First();

            return(Task.FromResult <IStreamingRecognition>(
                       new WitAiStreamingRecognition(settings, Token)));
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override async Task <IStreamingRecognition> StartStreamingRecognitionAsync(
            AudioSettings?settings = null,
            CancellationToken cancellationToken = default)
        {
            settings ??= SupportedStreamingSettings.First();

            IamToken ??= await RequestIamTokenByOAuthTokenAsync(OAuthToken, cancellationToken).ConfigureAwait(false);

            var channel = new Channel("stt.api.cloud.yandex.net", 443, new SslCredentials());
            var client  = new SttService.SttServiceClient(channel);
            var call    = client.StreamingRecognize(new Metadata
            {
                { "authorization", $"Bearer {IamToken}" }
            }, cancellationToken: cancellationToken);

            await call.RequestStream.WriteAsync(new StreamingRecognitionRequest
            {
                Config = new RecognitionConfig
                {
                    Specification = new RecognitionSpec
                    {
                        LanguageCode    = Lang,
                        ProfanityFilter = ProfanityFilter,
                        Model           = Topic,
                        AudioEncoding   = settings.Format switch
                        {
                            AudioFormat.Ogg => RecognitionSpec.Types.AudioEncoding.OggOpus,
                            AudioFormat.Raw => RecognitionSpec.Types.AudioEncoding.Linear16Pcm,
                            _ => RecognitionSpec.Types.AudioEncoding.Unspecified,
                        },
示例#3
0
        /// <summary>
        ///
        /// </summary>
        public WitAiRecognizer()
        {
            AddSetting(nameof(Token), o => Token = o, NoEmpty, string.Empty);

            SupportedSettings.Add(new AudioSettings(AudioFormat.Wav));
            SupportedStreamingSettings.Add(new AudioSettings(AudioFormat.Wav));
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        public YandexRecognizer()
        {
            AddSetting(nameof(FolderId), o => FolderId     = o, Any, string.Empty);
            AddSetting(nameof(OAuthToken), o => OAuthToken = o, NoEmpty, string.Empty);

            AddEnumerableSetting(nameof(Lang), o => Lang   = o, NoEmpty, new[] { "ru-RU", "en-US", "uk-UK", "tr-TR" });
            AddEnumerableSetting(nameof(Topic), o => Topic = o, NoEmpty, new[] { "general", "maps", "dates", "names", "numbers" });
            AddEnumerableSetting(nameof(ProfanityFilter), o => ProfanityFilter = o == "true", NoEmpty, new[] { "false", "true" });

            SupportedSettings.Add(new AudioSettings());
            SupportedSettings.Add(new AudioSettings(rate: 48000));
            SupportedSettings.Add(new AudioSettings(rate: 16000));
            SupportedSettings.Add(new AudioSettings(AudioFormat.Ogg));

            SupportedStreamingSettings.Add(new AudioSettings());
            SupportedStreamingSettings.Add(new AudioSettings(rate: 48000));
            SupportedStreamingSettings.Add(new AudioSettings(rate: 16000));
            SupportedStreamingSettings.Add(new AudioSettings(AudioFormat.Ogg));
        }