import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx; void main() { TestWidgetsFlutterBinding.ensureInitialized(); test('SenseVoice-Small ONNX transcribes WAV audio file accurately', () async { const macosDir = '/Users/shen/.pub-cache/hosted/pub.dev/sherpa_onnx_macos-1.13.8/macos'; // Test direct Sherpa ASR initialization and decoding with SenseVoice sherpa_onnx.initBindings(macosDir); final modelConfig = sherpa_onnx.OfflineModelConfig( senseVoice: const sherpa_onnx.OfflineSenseVoiceModelConfig( model: 'assets/models/sense_voice/model.int8.onnx', language: 'auto', useInverseTextNormalization: true, ), tokens: 'assets/models/sense_voice/tokens.txt', numThreads: 2, debug: false, ); final recognizerConfig = sherpa_onnx.OfflineRecognizerConfig( model: modelConfig, feat: const sherpa_onnx.FeatureConfig(sampleRate: 16000, featureDim: 80), ); final recognizer = sherpa_onnx.OfflineRecognizer(recognizerConfig); const testWave = '/tmp/sherpa_test/sherpa-onnx-zipformer-small-en-2023-06-26/test_wavs/0.wav'; if (File(testWave).existsSync()) { final wave = sherpa_onnx.readWave(testWave); expect(wave.samples.isNotEmpty, isTrue); final stream = recognizer.createStream(); stream.acceptWaveform(samples: wave.samples, sampleRate: wave.sampleRate); recognizer.decode(stream); final result = recognizer.getResult(stream); print("SenseVoice transcribed result: ${result.text}"); expect(result.text.toLowerCase().contains("nightfall"), isTrue); stream.free(); } recognizer.free(); }); }