本文主要是介绍AI工具-基于funasr打造离线语音转写工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【说在前面】
- 该用例基于魔塔社区中发布的预训练模型和funasr构建。仅支持单声道、16KHz、16位采样wav语音文件的离线转写。
- 过程中没有用到onnx模型
- 不支持多线程的并发,但是可以基于多进程实现并发
- asr工具构建过程中一定要加载vad,否则推理过程中内存会被撑爆
【预训练模型】
所有预训练模型均可在魔塔社区下载
- asr:iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch
- vad:iic/speech_fsmn_vad_zh-cn-16k-common-pytorch
- punc:iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch
- spk:iic/speech_campplus_sv_zh-cn_16k-common
工具构建
话不多说,直接上代码:
class ASRModel:def __init__(self):self.local_model_path = cfg["model"]["local_path"]self.input_batch_size = cfg["model"]["input_batch_size"] if "input_batch_size" \in cfg["model"] else 10# ASRself.model = self.local_model_path + "speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch"# voice activity detectionself.vad_model = self.local_model_path + "speech_fsmn_vad_zh-cn-16k-common-pytorch"# punctuation detectionself.punc_model = self.local_model_path + 'punc_ct-transformer_zh-cn-common-vocab272727-pytorch'# speaker separateself.spk_model = self.local_model_path + 'speech_campplus_sv_zh-cn_16k-common'self.asr_model = Nonedef load_model(self):self.asr_model = AutoModel(model=self.model,vad_model=self.vad_model,punc_model=self.punc_model,spk_model=self.spk_model,device="cuda:0")def generate(self, wav_file):if len(wav_file) < 0:return ""else:if self.asr_model is not None:asr_output = self.asr_model.generate(input=wav_path, batchsize=self.input_batch_size)return asr_output
上述核心代码基于funasr构建。可以根据自身需求自由组合vad、punc和spk。
这篇关于AI工具-基于funasr打造离线语音转写工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!