唤醒词引擎Porcupine与ASP.NET MVC?

bnl4lu3b  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(149)

我正在尝试在我的ASP.NET MVC应用程序中设置唤醒词检测。我已经多次阅读了.NET上的唤醒词文档(https://www.nuget.org/packages/Porcupine/#readme-body-tab),我认为我已经满足了所有的要求,使用窗口64位机器,在.NET Framework 4.6.1+(因为ASP.NET MVC技术在6.0中),访问键...但我认为仍然有一个概念,我没有完全掌握,所以我似乎不能让它工作,尽管做搜索和查看文档无处不在。
下面是给我造成问题的代码部分,其他部分运行良好,只是唤醒词部分(handle.Process(GetNextAudioFrame))无法识别我说的话,要么是因为我不知道如何粘贴正确的音频帧,要么是因为我在某个地方搞砸了

List<BuiltInKeyword> keyword = new List<BuiltInKeyword> { BuiltInKeyword.ALEXA };

try  // (there is a catch below but these are not part of the problem)
{
    Porcupine handle = Porcupine.FromBuiltInKeywords(accessKey, keyword);  // now just got to determine when wakeword executed
            
    while (true)
    {
        short[] GetNextAudioFrame = new short[handle.FrameLength];
        var keywordIndex = handle.Process(GetNextAudioFrame);
        // ...
    }
}

本部分的文档提到了采样速率和帧长度,我认为这就是我所遗漏的,但即使看过演示,我也不知道下一步该怎么做,因为它在技术上是这样做的,而不是文档中所显示的:

short[] GetNextAudioFrame = new short[handle.FrameLength];

有没有人有过这样的经验?或者你能告诉我什么是采样率和帧长度,我错过了,也许我可以从那里开始?谢谢!

uxh89sit

uxh89sit1#

当您呼叫:

short[] GetNextAudioFrame = new short[handle.FrameLength];
var keywordIndex = handle.Process(GetNextAudioFrame);

您创建了一个空数组,并将该0数组传递给Porcupine。
为了使唤醒词检测工作,它需要一些真实的音频数据来处理。您需要使用麦克风录制音频,或者读取音频文件并将音频数据传递给引擎。音频文件/录制需要使用引擎指定的采样率(在这种情况下为16000 Hz),并且音频数据需要被分解成大小等于帧长度(在这种情况下为512)的阵列。
Picovoice的GitHub上有一些.NET演示,演示如何从麦克风录音和从音频文件中阅读。我建议你去看看!
https://github.com/Picovoice/porcupine/tree/master/demo/dotnet/PorcupineDemo

相关问题