streaming_transducer_asr_test.dart
2.1 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// 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> testStreamingTransducerAsr() async {
var encoder =
'assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.int8.onnx';
var decoder =
'assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.onnx';
var joiner =
'assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.int8.onnx';
var tokens =
'assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt';
var testWave =
'assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/test_wavs/0.wav';
encoder = await copyAssetFile(src: encoder, dst: 'encoder.onnx');
decoder = await copyAssetFile(src: decoder, dst: 'decoder.onnx');
joiner = await copyAssetFile(src: joiner, dst: 'joiner.onnx');
tokens = await copyAssetFile(src: tokens, dst: 'tokens.txt');
testWave = await copyAssetFile(src: testWave, dst: 'test.wav');
final transducer = sherpa_onnx.OnlineTransducerModelConfig(
encoder: encoder,
decoder: decoder,
joiner: joiner,
);
final modelConfig = sherpa_onnx.OnlineModelConfig(
transducer: transducer,
tokens: tokens,
modelType: 'zipformer',
);
final config = sherpa_onnx.OnlineRecognizerConfig(model: modelConfig);
print(config);
final recognizer = sherpa_onnx.OnlineRecognizer(config);
final waveData = sherpa_onnx.readWave(testWave);
final stream = recognizer.createStream();
stream.acceptWaveform(
samples: waveData.samples, sampleRate: waveData.sampleRate);
while (recognizer.isReady(stream)) {
recognizer.decode(stream);
}
final result = recognizer.getResult(stream);
print('result is: ${result}');
print('recognizer: ${recognizer.ptr}');
stream.free();
recognizer.free();
}