-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Description
I am creating audio recognition using teachable machine from audio files that have been recorded in wav form. When I have finished recording the plugin does not want to detect the sound. Even though all permissions have been given. How to solve this problem?
Future<void> _requestBasicPermissions() async {
// Request permissions one at a time to avoid conflicts
if (await Permission.notification.isDenied) {
await Permission.notification.request();
}
// Add delay between requests to prevent conflicts
await Future.delayed(Duration(milliseconds: 200));
if (await Permission.location.isDenied) {
await Permission.location.request();
}
await Future.delayed(Duration(milliseconds: 200));
if (await Permission.microphone.isDenied) {
await Permission.microphone.request();
}
await Future.delayed(Duration(milliseconds: 200));
if (await Permission.manageExternalStorage.isDenied) {
await Permission.manageExternalStorage.request();
}
}
//Example values for Google teachable models
result = TfliteAudio.startFileRecognition(
sampleRate: 44100,
audioDirectory: _filePath!,
);
// Mendengarkan hasil pengenalan
result?.listen((event) {
print("Recognition Event: ${event['hasPermission']}");
String recognition = event["recognitionResult"];
if (recognition.isEmpty || !recognition.contains(" ")) {
print("Invalid recognition result: $recognition");
return;
}
double confidence = double.parse(recognition.split(" ")[0]); // Ambil confidence dari hasil prediksi
String predictedLabel = recognition.split(" ")[1]; // Ambil label dari hasil prediksi
setState(() {
// Tampilkan hasil prediksi jika confidence di atas 80%, jika tidak tampilkan "Listening..."
if (confidence > 0.95) {
_sound = predictedLabel;
} else {
_sound = "Listening...";
}
});
}).onDone(() {
// Jika stream selesai, restart pengenalan suara
print('Hasil Teachable Machine : $_sound');
});
I/flutter (19343): Recording stopped.
D/TfliteAudio(19343): Parameters: {audioDirectory=/storage/emulated/0/Android/data/com.sss.saveme/files/audio_record.wav, detectionThreshold=0.3, minimumTimeBetweenSamples=0, method=setFileRecognitionStream, averageWindowDuration=0, audioLength=0, sampleRate=44100, suppressionTime=0}
I/flutter (19343): Hasil dari Result :Instance of '_MapStream<Map<dynamic, dynamic>, Map<dynamic, dynamic>>'
I/flutter (19343): apa suara tinggi false rekaman ke 0
I/flutter (19343): amplitude 182.6059755130097
I/flutter (19343): Saving high amplitude recording
I/flutter (19343): Hasil amplitude: true
I/flutter (19343): Prediksi kata 'tolong'
I/flutter (19343): Bahasa id
I/flutter (19343): Correct keyword detected: tolong
D/TfliteAudio(19343): AudioLength has been readjusted. Length: 44032
D/TfliteAudio(19343): Transpose Audio: false
D/TfliteAudio(19343): Check for permission. Request code: 1
D/TfliteAudio(19343): Permission requested.
E/EventChannel#FileRecognitionStream(19343): Failed to open event stream
E/EventChannel#FileRecognitionStream(19343): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.requestPermissions(java.lang.String[], int)' on a null object reference
E/EventChannel#FileRecognitionStream(19343): at androidx.core.app.ActivityCompat$Api23Impl.requestPermissions(ActivityCompat.java:904)
E/EventChannel#FileRecognitionStream(19343): at androidx.core.app.ActivityCompat.requestPermissions(ActivityCompat.java:545)
E/EventChannel#FileRecognitionStream(19343): at flutter.tflite_audio.TfliteAudioPlugin.requestPermission(TfliteAudioPlugin.java:428)
E/EventChannel#FileRecognitionStream(19343): at flutter.tflite_audio.TfliteAudioPlugin.checkPermissions(TfliteAudioPlugin.java:407)
E/EventChannel#FileRecognitionStream(19343): at flutter.tflite_audio.TfliteAudioPlugin.onListen(TfliteAudioPlugin.java:252)
E/EventChannel#FileRecognitionStream(19343): at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler.onListen(EventChannel.java:218)
E/EventChannel#FileRecognitionStream(19343): at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler.onMessage(EventChannel.java:197)
E/EventChannel#FileRecognitionStream(19343): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
E/EventChannel#FileRecognitionStream(19343): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
E/EventChannel#FileRecognitionStream(19343): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/EventChannel#FileRecognitionStream(19343): at android.os.Handler.handleCallback(Handler.java:942)
E/EventChannel#FileRecognitionStream(19343): at android.os.Handler.dispatchMessage(Handler.java:99)
E/EventChannel#FileRecognitionStream(19343): at android.os.Looper.loopOnce(Looper.java:211)
E/EventChannel#FileRecognitionStream(19343): at android.os.Looper.loop(Looper.java:300)
E/EventChannel#FileRecognitionStream(19343): at android.app.ActivityThread.main(ActivityThread.java:8395)
E/EventChannel#FileRecognitionStream(19343): at java.lang.reflect.Method.invoke(Native Method)
E/EventChannel#FileRecognitionStream(19343): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
E/EventChannel#FileRecognitionStream(19343): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
======== Exception caught by services library ======================================================
The following PlatformException was thrown while activating platform stream on channel FileRecognitionStream:
PlatformException(error, Attempt to invoke virtual method 'void android.app.Activity.requestPermissions(java.lang.String[], int)' on a null object reference, null, null)
When the exception was thrown, this was the stack:
#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648:7)
#1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334:18)
<asynchronous suspension>
#2 EventChannel.receiveBroadcastStream.<anonymous closure> (package:flutter/src/services/platform_channel.dart:676:9)
<asynchronous suspension>
====================================================================================================
Metadata
Metadata
Assignees
Labels
No labels