TnR2
2025-10-01 528f92f7a2a26cade1c57ccf26b0ba6524e7cae5
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
import os
import time
import sys
import librosa
from funasr.utils.types import str2bool
 
import argparse
 
parser = argparse.ArgumentParser()
parser.add_argument("--model_dir", type=str, required=True)
parser.add_argument("--backend", type=str, default="onnx", help='["onnx", "torch"]')
parser.add_argument("--wav_file", type=str, default=None, help="amp fallback number")
parser.add_argument("--quantize", type=str2bool, default=False, help="quantized model")
parser.add_argument(
    "--intra_op_num_threads", type=int, default=1, help="intra_op_num_threads for onnx"
)
parser.add_argument("--output_dir", type=str, default=None, help="amp fallback number")
args = parser.parse_args()
 
 
from funasr.runtime.python.libtorch.funasr_torch import Paraformer
 
if args.backend == "onnx":
    from funasr.runtime.python.onnxruntime.funasr_onnx import Paraformer
 
model = Paraformer(
    args.model_dir,
    batch_size=1,
    quantize=args.quantize,
    intra_op_num_threads=args.intra_op_num_threads,
)
 
wav_file_f = open(args.wav_file, "r")
wav_files = wav_file_f.readlines()
 
output_dir = args.output_dir
if not os.path.exists(output_dir):
    os.makedirs(output_dir)
if os.name == "nt":  # Windows
    newline = "\r\n"
else:  # Linux Mac
    newline = "\n"
text_f = open(os.path.join(output_dir, "text"), "w", newline=newline)
token_f = open(os.path.join(output_dir, "token"), "w", newline=newline)
 
for i, wav_path_i in enumerate(wav_files):
    wav_name, wav_path = wav_path_i.strip().split()
    result = model(wav_path)
    text_i = "{} {}\n".format(wav_name, result[0]["preds"][0])
    token_i = "{} {}\n".format(wav_name, result[0]["preds"][1])
    text_f.write(text_i)
    text_f.flush()
    token_f.write(token_i)
    token_f.flush()
text_f.close()
token_f.close()