Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure语音到文本转录不';不要连续跑_C#_Azure_Speech To Text - Fatal编程技术网

C# Azure语音到文本转录不';不要连续跑

C# Azure语音到文本转录不';不要连续跑,c#,azure,speech-to-text,C#,Azure,Speech To Text,我最初运行了一个Azure语音到文本模型,从一个文件中转录了最多15秒的语音。现在我正试图把它变成一个模型,可以转录更长的话语,但是这个模型仍然在15秒的演讲中被删掉。代码是: using System; using System.Threading.Tasks; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; namespace NEST { class

我最初运行了一个Azure语音到文本模型,从一个文件中转录了最多15秒的语音。现在我正试图把它变成一个模型,可以转录更长的话语,但是这个模型仍然在15秒的演讲中被删掉。代码是:

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

namespace NEST {
    class Program {
        static async Task Main(string[] args) {
            await StartContinuousRecognitionAsync();
        }

        static async Task StartContinuousRecognitionAsync() {
            // Configure the subscription information for the service to access.
            // Use either key1 or key2 from the Speech Service resource you have created
            var config = SpeechConfig.FromSubscription("subscriptionkey", "region");

            // Setup the audio configuration, in this case, using a file that is in local storage.
            using(var audioInput = AudioConfig.FromWavFileInput("C:/Users/MichaelSchwartz/source/repos/AI-102-Process-Speech-master/transcribe_speech_to_text/media/spkr1.wav"))

            // Pass the required parameters to the Speech Service which includes the configuration information
            // and the audio file name that you will use as input
            using(var recognizer = new SpeechRecognizer(config, audioInput)) {
                Console.WriteLine("Recognizing first result...");
                var result = await recognizer.StartContinuousRecognitionAsync();

                switch (result.Reason) {
                case ResultReason.RecognizedSpeech:
                    // The file contained speech that was recognized and the transcription will be output
                    // to the terminal window
                    Console.WriteLine($"We recognized: {result.Text}");
                    break;
                case ResultReason.NoMatch:
                    // No recognizable speech found in the audio file that was supplied.
                    // Out an informative message
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                    break;
                case ResultReason.Canceled:
                    // Operation was cancelled
                    // Output the reason
                    var cancellation = CancellationDetails.FromResult(result);
                    Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

                    if (cancellation.Reason == CancellationReason.Error) {
                        Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
                        Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
                        Console.WriteLine($"CANCELED: Did you update the subscription info?");
                    }
                    break;
                }
            }
        }
    }
}
返回的错误为:

无法将void分配给隐式类型变量[NEST]csharp(CS0815)


我如何解决这个问题并转录超过15秒的话语?提前感谢。

不确定您使用的是哪个版本的SDK,但官方文档使用委托而不是结果。原因在于您的代码中有委托

using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

var stopRecognition = new TaskCompletionSource<int>();

recognizer.Recognizing += (s, e) =>
{
    Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};

recognizer.Recognized += (s, e) =>
{
    if (e.Result.Reason == ResultReason.RecognizedSpeech)
    {
        Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
    }
    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);
};

await recognizer.StartContinuousRecognitionAsync();

// Waits for completion. Use Task.WaitAny to keep the task rooted.
Task.WaitAny(new[] { stopRecognition.Task });
使用var audioConfig=audioConfig.FromWavFileInput(“YourAudioFile.wav”);
使用var识别器=新的语音识别器(speechConfig、audioConfig);
var stopRecognition=new TaskCompletionSource();
识别器。识别+=(s,e)=>
{
WriteLine($“识别:Text={e.Result.Text}”);
};
识别器。已识别+=(s,e)=>
{
if(e.Result.Reason==ResultReason.RecognizedSpeech)
{
WriteLine($“已识别:Text={e.Result.Text}”);
}
else if(e.Result.Reason==ResultReason.NoMatch)
{
Console.WriteLine($“无法识别NOMATCH:语音”);
}
};
识别器。已取消+=(s,e)=>
{
WriteLine($“已取消:原因={e.Reason}”);
如果(e.Reason==CancellationReason.Error)
{
WriteLine($“已取消:ErrorCode={e.ErrorCode}”);
WriteLine($“已取消:ErrorDetails={e.ErrorDetails}”);
Console.WriteLine($“已取消:是否更新了订阅信息?”);
}
停止识别。TrySetResult(0);
};
recognizer.SessionStopped+=(s,e)=>
{
Console.WriteLine(“\n会话停止事件”);
停止识别。TrySetResult(0);
};
等待识别器。StartContinuousRecognitionAsync();
//等待完成。使用Task.WaitAny使任务保持根目录。
Task.WaitAny(新[]{stopRecognition.Task});

谢谢。这解决了错误,但导致断开程序集引用。现在我得到了以下错误:“类型或名称空间名称‘CognitiveServices’在名称空间‘Microsoft’中不存在。”。这是我的.proj代码:Exe net5.0我想你需要降级到.net core 3.1