微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure 时间戳未出现在语音到文本模型中?

如何解决Azure 时间戳未出现在语音到文本模型中?

当我运行我的语音到文本 Azure 模型时,时间戳没有出现在我的结果中。我没有收到任何错误,也没有收到带时间戳的结果。我的代码是:

using System;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

namespace SUPRA
{
internal class NewBaseType
{
    static async Task Main(string[] args)

    {
        // Creates an instance of a speech config with specified subscription key and region.
        // Replace with your own subscription key and service region (e.g.,"westus").
        var config = SpeechConfig.FromSubscription("8ec6730993d54cf9a9cec0f5d08b8e8b","eastus");

        // Generates timestamps
        config.OutputFormat = OutputFormat.Detailed;
        config.RequestWordLevelTimestamps();

        //calls the audio file
        using (var audioInput = AudioConfig.FromWavFileInput("C:/Users/MichaelSchwartz/source/repos/AI-102-Process-Speech-master/transcribe_speech_to_text/media/narration.wav"))

        // Creates a speech recognizer from microphone.
        using (var recognizer = new SpeechRecognizer(config,audioInput))
        {

            recognizer.Recognized += (s,e) =>
            {
                var result = e.Result;
                if (result.Reason == ResultReason.RecognizedSpeech)
                {
                    Console.WriteLine(result.Text);
                }
            };

            recognizer.Recognized += (s,e) => 
            { 
                var j = e.Result.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult);
            };

            recognizer.Canceled += (s,e) =>
            {
                Console.WriteLine($"\n    Canceled. Reason: {e.Reason.ToString()},CanceledReason: {e.Reason}");
            };

            recognizer.SessionStarted += (s,e) =>
            {
                Console.WriteLine("\n    Session started event.");
            };

            recognizer.SessionStopped += (s,e) =>
            {
                Console.WriteLine("\n    Session stopped event.");
            };

            // Starts continuous recognition. 
            // Uses StopContinuousRecognitionAsync() to stop recognition.
            await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(false);

            do
            {
                Console.WriteLine("Press Enter to stop");
            } while (Console.ReadKey().Key != ConsoleKey.Enter);

            // Stops recognition.
            await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
        }
    }
}

}

不会返回任何错误,结果准确但没有时间戳。我在第 37-40 行包含了生成时间戳的代码。如何获取生成的时间戳?谢谢。

解决方法

您配置正确,但似乎没有在控制台中打印结果。试试下面的代码:

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
using System;
using System.Threading.Tasks;

namespace STTwithTime
{
    class Program
    {


        static void Main(string[] args)
        {
            var key = "";
            var region = "";
            var audioFilePath = @"";
            var speechConfig = SpeechConfig.FromSubscription(key,region);

            // Generates timestamps
            speechConfig.RequestWordLevelTimestamps();
            speechConfig.OutputFormat = OutputFormat.Detailed;

            var stopRecognition = new TaskCompletionSource<int>();

            var audioConfig = AudioConfig.FromWavFileInput(audioFilePath);
            var recognizer = new SpeechRecognizer(speechConfig,audioConfig);

            //Display Recognizing
            recognizer.Recognizing += (s,e) =>
            {
                Console.WriteLine($"RECOGNIZING:{e.Result.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult)}");
            };

            //Display Recognized
            recognizer.Recognized += (s,e) =>
            {
                if (e.Result.Reason == ResultReason.RecognizedSpeech)
                {
                    Console.WriteLine($"RECOGNIZED :{e.Result.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult)}");
                }
                else if (e.Result.Reason == ResultReason.NoMatch)
                {
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                }
            };

            recognizer.Canceled += (s,e) =>
            {
                Console.WriteLine($"CANCELED: Reason={e.Reason}");

                if (e.Reason == CancellationReason.Error)
                {
                    Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
                    Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
                    Console.WriteLine($"CANCELED: Did you update the subscription info?");
                }

                stopRecognition.TrySetResult(0);
            };

            recognizer.SessionStopped += (s,e) =>
            {
                Console.WriteLine("\n    Session stopped event.");
                stopRecognition.TrySetResult(0);
            };

            recognizer.StartContinuousRecognitionAsync().GetAwaiter().GetResult();

            // Waits for completion. Use Task.WaitAny to keep the task rooted.
            Task.WaitAny(new[] { stopRecognition.Task });


        }
    }
}

结果

显示识别:

enter image description here

显示识别:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。