我正在尝试在 flutter 上使用 tflite 音频分类器(用可教机器制作),但是当识别开始时,我收到此异常:MissingPluginException(未找到在通道 FileRecognitionStream 上监听的方法的实现)。这是识别开始的代码:
Future<void> stopRecording() async {
try {
String? path = await recorder.stop();
setState(() {
isListening = false;
recordingPath = path!;
recognitionStream = TfliteAudio.startFileRecognition(
sampleRate: 44100,
audioDirectory: recordingPath,
);
recognitionStream.listen((event) {
recognition = event["inferenceTime"];
inferenceTime = event["recognitionResult"];
}).onDone(() {
print("DONE");
});
});
} catch (e) {
print('Error Start Recording: $e');
}
}
当记录停止时,将创建一个文件并将其路径输入到分类器。我在网络上运行该应用程序,当录音开始时,我允许 chrome 使用麦克风,一旦停止录音,我就会得到异常。
MissingPluginException
表示您正在使用的代码无法在您的目标平台上运行。
在你的情况下,我猜你正在使用 tflite_audio 包:https://pub.dev/packages/tflite_audio 并且你尝试在网络上运行你的代码。但根据上面的链接,该包只能在 Android 和 IOS 上运行。这就是您收到错误的原因。
要解决您的问题,您必须寻找另一个支持Web平台的软件包,或者自己创建自己的工具。您可以在这里浏览一些有趣的音频包:https://fluttergems.dev/audio/