FunASR是一个基础语音识别工具包,提供多种功能,包括语音识别(ASR)、语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。

一、环境准备

1,项目地址

https://github.com/modelscope/FunASR

2,conda环

conda create -n FunASR python=3.10conda activate FunASR

3,安装torch​​​​​​​

pip install torch torchaudio# 环境需求python>=3.8torch>=1.13torchaudio

二、安装部署

1,pip方式安装

pip3 install -U funasr

2,源码下载​​​​​​​

git clone https://github.com/modelscope/FunASR.gitcd FunASRpip3 install -e ./

# 安装 modelscope 或 huggingface_hub 以获取预训练模型(可选)

pip3 install -U modelscope huggingface_hub

3,命令行使用测试

funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav

注:支持单条音频文件识别,也支持文件列表,列表为kaldi风格wav.scp:wav_id   wav_path

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

四、代码使用测试

1,AutoModel 定义

model = AutoModel(model=[str], device=[str], ncpu=[int], output_dir=[str], batch_size=[int], hub=[str], **kwargs)

参数说明:

  • model(str): 模型仓库 中的模型名称,或本地磁盘中的模型路径

  • device(str): cuda:0(默认gpu0),使用 GPU 进行推理,指定。如果为cpu,则使用 CPU 进行推理。mps:mac电脑M系列新品试用mps进行推理。xpu:使用英特尔gpu进行推理。

  • ncpu(int): 4 (默认),设置用于 CPU 内部操作并行性的线程数

  • output_dir(str): None (默认),如果设置,输出结果的输出路径

  • batch_size(int): 1 (默认),解码时的批处理,样本个数

  • hub(str):ms(默认),从modelscope下载模型。如果为hf,从huggingface下载模型。

  • **kwargs(dict): 所有在config.yaml中参数,均可以直接在此处指定,例如,vad模型中最大切割长度 max_single_segment_time=6000 (毫秒)。

2,非实时语音识别

SenseVoiceSmall模型

vi test_code_02.py​​​​​​​

```pythonfrom funasr import AutoModelfrom funasr.utils.postprocess_utils import rich_transcription_postprocessmodel_dir = "iic/SenseVoiceSmall"model = AutoModel(    model=model_dir,    vad_model="fsmn-vad",    vad_kwargs={"max_single_segment_time": 30000},    device="cuda:0",)# enres = model.generate(    input=f"{model.model_path}/example/en.mp3",    cache={},    language="auto",  # "zn", "en", "yue", "ja", "ko", "nospeech"    use_itn=True,    batch_size_s=60,    merge_vad=True,  #    merge_length_s=15,)text = rich_transcription_postprocess(res[0]["text"])print(text)```

参数说明:

  • model_dir:模型名称,或本地磁盘中的模型路径。

  • vad_model:表示开启VAD,VAD的作用是将长音频切割成短音频,此时推理耗时包括了VAD与SenseVoice总耗时,为链路耗时,如果需要单独测试SenseVoice模型耗时,可以关闭VAD模型。

  • vad_kwargs:表示VAD模型配置,max_single_segment_time: 表示vad_model最大切割音频时长, 单位是毫秒ms。

  • use_itn:输出结果中是否包含标点与逆文本正则化。

  • batch_size_s 表示采用动态batch,batch中总音频时长,单位为秒s。

  • merge_vad:是否将 vad 模型切割的短音频碎片合成,合并后长度为merge_length_s,单位为秒s。

  • ban_emo_unk:禁用emo_unk标签,禁用后所有的句子都会被赋予情感标签。

 Paraformer模型

vi test_code_03.py​​​​​​​

```pythonfrom funasr import AutoModel# paraformer-zh is a multi-functional asr model# use vad, punc, spk or not as you needmodel = AutoModel(model="paraformer-zh",  vad_model="fsmn-vad", punc_model="ct-punc",                  # spk_model="cam++"                  )res = model.generate(input=f"{model.model_path}/example/asr_example.wav",            batch_size_s=300,            hotword='魔搭')print(res)```

注:hub:表示模型仓库,ms为选择modelscope下载,hf为选择huggingface下载。

3,实时语音识别

vi test_code_04.py​​​​​​​

```pythonfrom funasr import AutoModelchunk_size = [0, 10, 5] #[0, 10, 5] 600ms, [0, 8, 4] 480msencoder_chunk_look_back = 4 #number of chunks to lookback for encoder self-attentiondecoder_chunk_look_back = 1 #number of encoder chunks to lookback for decoder cross-attentionmodel = AutoModel(model="paraformer-zh-streaming")import soundfileimport oswav_file = os.path.join(model.model_path, "example/asr_example.wav")speech, sample_rate = soundfile.read(wav_file)chunk_stride = chunk_size[1] * 960 # 600mscache = {}total_chunk_num = int(len((speech)-1)/chunk_stride+1)for i in range(total_chunk_num):    speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]    is_final = i == total_chunk_num - 1    res = model.generate(input=speech_chunk, cache=cache, is_final=is_final, chunk_size=chunk_size, encoder_chunk_look_back=encoder_chunk_look_back, decoder_chunk_look_back=decoder_chunk_look_back)    print(res)```

注:chunk_size为流式延时配置,[0,10,5]表示上屏实时出字粒度为10*60=600ms,未来信息为5*60=300ms。每次推理输入为600ms(采样点数为16000*0.6=960),输出为对应文字,最后一个语音片段输入需要设置is_final=True来强制输出最后一个字。

4,语音端点检测(非实时)

vi test_code_05.py​​​​​​​

```pythonfrom funasr import AutoModelmodel = AutoModel(model="fsmn-vad")wav_file = f"{model.model_path}/example/vad_example.wav"res = model.generate(input=wav_file)print(res)```

注:VAD模型输出格式为:[[beg1, end1], [beg2, end2], .., [begN, endN]],其中begN/endN表示第N个有效音频片段的起始点/结束点, 单位为毫秒。

5,语音端点检测(实时)

vi test_code_06.py​​​​​​​

```pythonfrom funasr import AutoModelchunk_size = 200 # msmodel = AutoModel(model="fsmn-vad")import soundfilewav_file = f"{model.model_path}/example/vad_example.wav"speech, sample_rate = soundfile.read(wav_file)chunk_stride = int(chunk_size * sample_rate / 1000)cache = {}total_chunk_num = int(len((speech)-1)/chunk_stride+1)for i in range(total_chunk_num):    speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]    is_final = i == total_chunk_num - 1    res = model.generate(input=speech_chunk, cache=cache, is_final=is_final, chunk_size=chunk_size)    if len(res[0]["value"]):        print(res)```

注:流式VAD模型输出格式为4种情况:

  • [[beg1, end1], [beg2, end2], .., [begN, endN]]:同上离线VAD输出结果。

  • [[beg, -1]]:表示只检测到起始点。

  • [[-1, end]]:表示只检测到结束点。

  • []:表示既没有检测到起始点,也没有检测到结束点 输出结果单位为毫秒,从起始点开始的绝对时间。

6,标点恢复

vi test_code_07.py​​​​​​​

```pythonfrom funasr import AutoModelmodel = AutoModel(model="ct-punc")res = model.generate(input="那今天的会就到这里吧 happy new year 明年见")print(res)```

7,时间戳预测

vi test_code_08.py​​​​​​​

```pythonfrom funasr import AutoModelmodel = AutoModel(model="fa-zh")wav_file = f"{model.model_path}/example/asr_example.wav"text_file = f"{model.model_path}/example/text.txt"res = model.generate(input=(wav_file, text_file), data_type=("sound", "text"))print(res)```

8,情感识别

vi test_code_09.py​​​​​​​

```pythonfrom funasr import AutoModelmodel = AutoModel(model="emotion2vec_plus_large")wav_file = f"{model.model_path}/example/test.wav"res = model.generate(wav_file, output_dir="./outputs", granularity="utterance", extract_embedding=False)print(res)```

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

 

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。


1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐