vosk-flutter
vosk-flutter copied to clipboard
whenever i transcribe audio to text by using this package its giving me a empty json , how to solve this
`import 'dart:developer'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/services.dart'; import 'package:vosk_flutter/vosk_flutter.dart';
class VoskTranscriber { late VoskFlutterPlugin _vosk; Recognizer? _recognizer;
VoskTranscriber() { initializeVosk(); }
Future
// print("modelPath :$modelPath");
// _recognizer = await _vosk.createRecognizer(
// model: Model(modelPath, const MethodChannel("")), sampleRate: 16000);
}
Future<String> transcribeAudio(Uint8List audioBytes) async { print("transcribeAudio function called"); List<String> results = []; int chunkSize = 8192; int pos = 0;
while (pos + chunkSize < audioBytes.length) {
final resultReady = await _recognizer!.acceptWaveformBytes(
Uint8List.fromList(audioBytes.sublist(pos, pos + chunkSize)),
);
pos += chunkSize;
if (resultReady) {
String result = await _recognizer!.getResult();
log("complete result in vosk : ${result}");
results.add(result);
} else {
String result = await _recognizer!.getPartialResult();
log("partial result in vosk : ${result}");
results.add(result);
}
}
await _recognizer!
.acceptWaveformBytes(Uint8List.fromList(audioBytes.sublist(pos)));
results.add(await _recognizer!.getFinalResult());
return results.join(' ');
} } `
log
og] partial result in vosk : { "partial" : "" } [log] complete result in vosk : { "text" : "" } 15 [log] partial result in vosk : { "partial" : "" } I/flutter (10378): transcribedText : { I/flutter (10378): "partial" : "" I/flutter (10378): } { I/flutter (10378): "partial" : "" I/flutter (10378): } {
same here. I trying the exemple project in this repo.
EDIT
The problem its because of emulator. In real device worked fine. Good luck with your solution
@ulisseshen final speechService = await vosk.initSpeechService(recognizer); speechService.onPartial().forEach((partial) => print(partial)); speechService.onResult().forEach((result) => print(result)); await speechService.start(); i used this code and now it worked