我正在尝试在我的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];
有没有人有过这样的经验?或者你能告诉我什么是采样率和帧长度,我错过了,也许我可以从那里开始?谢谢!
1条答案
按热度按时间uxh89sit1#
当您呼叫:
您创建了一个空数组,并将该0数组传递给Porcupine。
为了使唤醒词检测工作,它需要一些真实的音频数据来处理。您需要使用麦克风录制音频,或者读取音频文件并将音频数据传递给引擎。音频文件/录制需要使用引擎指定的采样率(在这种情况下为16000 Hz),并且音频数据需要被分解成大小等于帧长度(在这种情况下为512)的阵列。
Picovoice的GitHub上有一些.NET演示,演示如何从麦克风录音和从音频文件中阅读。我建议你去看看!
https://github.com/Picovoice/porcupine/tree/master/demo/dotnet/PorcupineDemo