| from funasr import AutoModel |
| from pathlib import Path |
| import time |
| import csv |
|
|
| def save_csv(file_path, rows): |
| with open(file_path, "w", encoding="utf-8") as f: |
| writer = csv.writer(f) |
| writer.writerows(rows) |
| print(f"write csv to {file_path}") |
|
|
| def main(): |
| model_dir = Path("/Users/jeqin/work/code/Translator/python_server/moyoyo_asr_models") |
|
|
| asr_model_path = model_dir / 'speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch' |
| vad_model_path = model_dir / 'speech_fsmn_vad_zh-cn-16k-common-pytorch' |
| punc_model_path = model_dir / 'punc_ct-transformer_cn-en-common-vocab471067-large' |
| t0 = time.time() |
| model = AutoModel( |
| model=asr_model_path.as_posix(), |
| vad_model=vad_model_path.as_posix(), |
| punc_model=punc_model_path.as_posix(), |
| log_level="ERROR", |
| disable_update=True |
| ) |
| t1 = time.time() |
| print("load model: ", t1 - t0) |
| audios = Path("../test_data/recordings/") |
| rows = [["file_name", "inference_time", "inference_result"]] |
| for audio in sorted(audios.glob("*.wav"), key=lambda x: int(x.stem)): |
| print(audio) |
| t1 = time.time() |
| try: |
| result = model.generate(input=str(audio), disable_pbar=True, |
| hotword="") |
| except Exception as e: |
| print(audio) |
| print(e) |
| t2 = time.time() |
| t = t2-t1 |
| print("inference time:", t) |
| text = result[0]["text"] |
| print("inference result", text) |
| rows.append([f"{audio.parent.name}/{audio.name}", t, text]) |
| save_csv(f"csv/funasr.csv", rows) |
|
|
|
|
|
|
| if __name__ == '__main__': |
| main() |