non_streaming_paraformer_asr_test.dart
1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright (c) 2024 Xiaomi Corporation
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'dart:typed_data';
import "dart:io";
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
import './utils.dart';
Future<void> testNonStreamingParaformerAsr() async {
var model = 'assets/sherpa-onnx-paraformer-zh-2023-03-28/model.int8.onnx';
var tokens = 'assets/sherpa-onnx-paraformer-zh-2023-03-28/tokens.txt';
var testWave = 'assets/sherpa-onnx-paraformer-zh-2023-03-28/test_wavs/0.wav';
model = await copyAssetFile(src: model, dst: 'model.int8.onnx');
tokens = await copyAssetFile(src: tokens, dst: 'tokens.txt');
testWave = await copyAssetFile(src: testWave, dst: '0.wav');
final paraformer = sherpa_onnx.OfflineParaformerModelConfig(
model: model,
);
final modelConfig = sherpa_onnx.OfflineModelConfig(
paraformer: paraformer,
tokens: tokens,
modelType: 'paraformer',
);
final config = sherpa_onnx.OfflineRecognizerConfig(model: modelConfig);
print(config);
final recognizer = sherpa_onnx.OfflineRecognizer(config);
final waveData = sherpa_onnx.readWave(testWave);
final stream = recognizer.createStream();
stream.acceptWaveform(
samples: waveData.samples, sampleRate: waveData.sampleRate);
recognizer.decode(stream);
final result = recognizer.getResult(stream);
print('result is: ${result}');
print('recognizer: ${recognizer.ptr}');
stream.free();
recognizer.free();
}