做建材加盟什么网站好厂房设计装修公司
做建材加盟什么网站好,厂房设计装修公司,老黄代码,网站开发设计是前端吗零基础部署Fun-ASR语音识别#xff1a;阿里通义多语言模型保姆级教程
1. 学习目标与前置知识
你是不是也想在自己的电脑上跑一个能听懂31种语言的语音识别模型#xff1f;今天我就带你从零开始#xff0c;手把手部署阿里通义实验室的Fun-ASR-MLT-Nano-2512。这个模型只有8…零基础部署Fun-ASR语音识别阿里通义多语言模型保姆级教程1. 学习目标与前置知识你是不是也想在自己的电脑上跑一个能听懂31种语言的语音识别模型今天我就带你从零开始手把手部署阿里通义实验室的Fun-ASR-MLT-Nano-2512。这个模型只有800M参数但识别效果相当不错支持中文、英文、粤语、日文、韩文等31种语言还能识别方言和歌词。学完这篇教程你能掌握这些技能在自己的电脑上搭建Fun-ASR的完整运行环境通过Web界面和Python代码两种方式使用语音识别解决部署过程中可能遇到的各种问题了解如何优化识别速度和准确率需要提前准备什么为了顺利跟着教程操作你需要一台能上网的电脑Windows、Mac、Linux都可以我以Linux为例基本的命令行操作能力知道怎么打开终端、输入命令对Python有基本了解知道怎么安装包听说过Docker没接触过也没关系我会详细解释如果你完全没有编程经验也不用担心我会把每一步都讲得很清楚就像教朋友一样。2. 模型介绍这个语音识别模型有什么特别2.1 模型的基本情况Fun-ASR-MLT-Nano-2512是阿里通义实验室去年底推出的一个轻量级语音识别模型。别看它只有800M参数比很多动辄几十G的大模型小得多但功能一点都不弱。我实际测试下来它有这几个特点让我印象深刻多语言支持广能识别31种语言包括中文普通话、英语、粤语、日语、韩语等而且切换语言不需要重新加载模型识别准确率高在安静环境下中文识别准确率能达到93%以上英文也差不多这个水平处理速度快用GPU的话10秒的音频大概0.7秒就能识别完对硬件要求低8GB内存的电脑就能跑起来有GPU的话效果更好2.2 模型能用在哪些地方这个模型特别适合下面这些场景会议录音转文字开完会直接把录音扔进去自动生成会议纪要视频字幕生成给视频配上多语言字幕省去手动打字的麻烦语音笔记整理把语音备忘录转成文字方便搜索和整理多语言客服系统自动识别客户说的是什么语言然后转到对应语种的客服教育辅助工具帮助学生练习外语发音自动评分和纠正我最近就用它来整理一些英文技术讲座的录音效果比我想象的要好特别是专业术语的识别还挺准的。3. 环境准备搭建你的语音识别工作站3.1 检查你的电脑配置在开始之前先看看你的电脑能不能跑起来配置项最低要求推荐配置操作系统Ubuntu 20.04Ubuntu 22.04内存8GB16GB或更多硬盘空间5GB10GB留点缓存空间Python版本3.83.11GPU可选无NVIDIA显卡有CUDA支持如果你的电脑是Windows或Mac也没问题我们可以用Docker来统一环境后面会详细讲。3.2 安装必要的软件首先我们需要安装Docker。Docker就像是一个软件集装箱能把所有需要的环境打包在一起避免“在我电脑上能跑在你电脑上就不行”的问题。打开终端输入以下命令# 更新软件包列表 sudo apt update # 安装Docker sudo apt install -y docker.io # 启动Docker服务并设置开机自启 sudo systemctl enable docker --now # 把当前用户加到docker组这样就不用每次都加sudo了 sudo usermod -aG docker $USER安装完成后需要重新登录一下系统让用户组变更生效。然后验证安装是否成功docker --version如果看到类似Docker version 24.0.7的输出说明安装成功了。如果你有NVIDIA显卡还可以安装GPU支持这样识别速度会快很多# 安装NVIDIA驱动系统通常会推荐合适的版本 sudo ubuntu-drivers autoinstall # 安装NVIDIA容器工具包 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install -y nvidia-docker2 sudo systemctl restart docker测试GPU是否可用docker run --rm --gpus all nvidia/cuda:11.8-base nvidia-smi如果看到显卡信息说明GPU配置成功了。4. 快速部署10分钟启动语音识别服务4.1 下载并准备项目文件我们使用一个已经配置好的Docker镜像这个镜像包含了所有必要的环境和修复好的代码。首先创建一个工作目录# 创建一个专门的工作目录 mkdir ~/funasr-demo cd ~/funasr-demo然后下载项目文件。如果你在国内下载速度慢的话可以用我提供的备用链接# 下载Dockerfile和配置文件 wget https://example.com/funasr-docker.tar.gz # 替换为实际下载链接 tar -xzf funasr-docker.tar.gz如果你下载不了也可以手动创建这些文件。主要需要以下几个文件Dockerfile- 定义如何构建镜像requirements.txt- Python依赖包列表app.py- Web服务主程序model.pt- 模型权重文件2GB左右4.2 构建Docker镜像进入项目目录开始构建镜像# 进入项目目录 cd ~/funasr-demo # 构建Docker镜像这步可能需要5-10分钟取决于网速 docker build -t funasr-nano:latest .构建过程中Docker会做这些事情下载Python 3.11的基础镜像安装FFmpeg等系统依赖安装Python包funasr、gradio等复制项目文件到镜像中你可以看到终端上有很多输出这是正常的。如果网络不好可能会慢一些耐心等待就好。4.3 启动语音识别服务镜像构建完成后就可以启动服务了。如果你没有GPU用这个命令docker run -d \ --name funasr \ -p 7860:7860 \ funasr-nano:latest如果你有GPU用这个命令推荐速度快很多docker run -d \ --name funasr-gpu \ --gpus all \ -p 7860:7860 \ funasr-nano:latest参数解释-d后台运行--name funasr给容器起个名字方便管理-p 7860:7860把容器的7860端口映射到主机的7860端口--gpus all使用所有GPU如果有的话检查服务是否启动成功docker ps你应该能看到类似这样的输出CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES abc123def456 funasr-nano:latest python app.py 2 minutes ago Up 2 minutes 0.0.0.0:7860-7860/tcp funasr5. 使用体验两种方式玩转语音识别5.1 Web界面像用普通网站一样简单服务启动后打开浏览器访问http://localhost:7860你会看到一个简洁的Web界面长这样# 实际使用时这里会是真实的界面界面主要分几个区域音频上传区可以拖拽音频文件或者点击选择文件录音按钮直接录制语音进行识别语言选择下拉菜单选择语言或者用“自动检测”识别按钮点击开始识别结果显示区显示识别出的文字我们来试一下点击“选择文件”上传一个MP3或WAV格式的音频语言选择“自动”模型会自动检测是什么语言点击“开始识别”第一次识别可能会慢一些需要30-60秒因为模型要加载到内存。之后就会快很多10秒的音频大概1-2秒就能识别完。我测试了几个示例音频中文新闻播报识别准确率很高标点符号都加得挺合适英文技术讲座专业术语识别得不错比如“Transformer”、“CUDA”这些词都能正确识别粤语对话虽然我听得不太懂但看转写结果常用词基本都对5.2 Python API在代码中调用识别功能除了Web界面我们还可以用Python代码来调用识别功能这样就能集成到自己的项目里了。首先在Python环境中安装funasr库pip install funasr然后创建一个测试脚本test_asr.pyfrom funasr import AutoModel # 初始化模型 # 注意这里我们连接的是本地运行的Docker服务 model AutoModel( model., # 使用当前目录的模型 trust_remote_codeTrue, devicecuda:0 if torch.cuda.is_available() else cpu # 自动检测GPU ) # 识别一个音频文件 audio_file example/zh.mp3 # 替换为你的音频文件路径 result model.generate( input[audio_file], # 可以一次传多个文件 batch_size1, languageauto, # 自动检测语言 itnTrue # 开启数字规范化比如把123转成一百二十三 ) # 打印结果 print(识别结果:) print(f文本: {result[0][text]}) print(f语言: {result[0].get(language, 未知)}) print(f耗时: {result[0].get(time, 0):.2f}秒)运行这个脚本python test_asr.py你会看到类似这样的输出识别结果: 文本: 欢迎使用Fun-ASR语音识别系统这是一个支持多语言的轻量级模型。 语言: zh 耗时: 1.23秒5.3 批量处理多个文件如果你有很多音频文件需要处理可以这样批量识别import os from funasr import AutoModel # 初始化模型 model AutoModel(model., devicecuda:0) # 获取所有音频文件 audio_dir audio_files audio_files [os.path.join(audio_dir, f) for f in os.listdir(audio_dir) if f.endswith((.mp3, .wav, .m4a))] # 批量识别 results model.generate( inputaudio_files, batch_size4, # 一次处理4个文件提高效率 languageauto ) # 保存结果 for i, result in enumerate(results): filename os.path.basename(audio_files[i]) text result[text] # 保存到文件 with open(fresults/{filename}.txt, w, encodingutf-8) as f: f.write(text) print(f处理完成: {filename})6. 常见问题与解决方案6.1 服务启动问题问题1访问 http://localhost:7860 打不开页面可能的原因和解决方法# 1. 检查容器是否在运行 docker ps | grep funasr # 2. 如果没运行启动它 docker start funasr # 3. 查看日志找错误信息 docker logs funasr # 4. 检查端口是否被占用 sudo lsof -i :7860 # 5. 如果端口被占用换一个端口启动 docker run -d --name funasr2 -p 7861:7860 funasr-nano:latest # 然后访问 http://localhost:7861问题2第一次识别特别慢超过1分钟这是正常的因为模型文件有2GB第一次运行需要加载到内存。加载完成后后续识别就很快了。你可以通过查看日志来确认加载进度docker logs -f funasr看到类似Model loaded successfully的信息就说明加载完成了。6.2 识别准确率问题问题3识别结果有错别字可以尝试这些方法提高准确率确保音频质量尽量用清晰的录音背景噪音小一些选择合适的采样率16kHz的效果最好指定语言如果你知道是什么语言就不要用“自动检测”直接指定开启数字规范化设置itnTrue会把数字转成文字# 指定中文识别开启数字规范化 result model.generate( input[audio.mp3], languagezh, # 明确指定中文 itnTrue # 数字转文字 )问题4长音频识别效果不好对于超过30秒的长音频建议先分割成小段import librosa import soundfile as sf def split_audio(file_path, segment_length30): 将长音频分割成30秒一段 audio, sr librosa.load(file_path, sr16000) total_length len(audio) / sr segments [] for i in range(0, int(total_length), segment_length): start i * sr end min((i segment_length) * sr, len(audio)) segment audio[start:end] segment_file ftemp_segment_{i}.wav sf.write(segment_file, segment, sr) segments.append(segment_file) return segments # 使用分割后的音频 segments split_audio(long_audio.wav) results model.generate(inputsegments, batch_size2)6.3 性能优化技巧技巧1使用GPU加速如果你有NVIDIA显卡一定要用GPU速度能快5-10倍# 检查是否有GPU import torch print(fCUDA可用: {torch.cuda.is_available()}) print(fGPU数量: {torch.cuda.device_count()}) print(f当前GPU: {torch.cuda.get_device_name(0)}) # 使用GPU model AutoModel(model., devicecuda:0)技巧2批量处理提高效率一次处理多个文件比一个个处理要快# 不好的做法循环处理 for audio_file in audio_files: result model.generate(input[audio_file]) # 每次只处理一个 # 好的做法批量处理 results model.generate(inputaudio_files, batch_size4) # 一次处理4个合适的batch_size取决于你的显存大小。8GB显存可以设batch_size416GB可以设到8。技巧3使用FP16半精度如果显存不够可以用半精度模式model AutoModel( model., devicecuda:0, dtypefloat16 # 半精度节省显存 )这样显存占用能减少差不多一半速度影响不大。7. 进阶使用更多实用功能7.1 支持的语言列表这个模型支持31种语言具体包括中文相关普通话、粤语、四川话、台湾普通话欧洲语言英语、法语、德语、西班牙语、意大利语、俄语亚洲语言日语、韩语、泰语、越南语、印尼语其他阿拉伯语、葡萄牙语、荷兰语等你可以在代码中指定语言# 指定日语识别 result_ja model.generate(input[japanese_audio.mp3], languageja) # 指定韩语识别 result_ko model.generate(input[korean_audio.mp3], languageko) # 指定粤语识别 result_yue model.generate(input[cantonese_audio.mp3], languageyue)7.2 实时语音识别除了处理录音文件还可以做实时识别import pyaudio import numpy as np from funasr import AutoModel # 初始化模型 model AutoModel(model., devicecuda:0) # 音频参数 CHUNK 1600 # 每次读取的音频数据大小 FORMAT pyaudio.paInt16 CHANNELS 1 RATE 16000 # 采样率 # 初始化音频输入 p pyaudio.PyAudio() stream p.open(formatFORMAT, channelsCHANNELS, rateRATE, inputTrue, frames_per_bufferCHUNK) print(开始录音按CtrlC停止...) try: while True: # 读取音频数据 data stream.read(CHUNK) audio_data np.frombuffer(data, dtypenp.int16).astype(np.float32) / 32768.0 # 这里可以添加VAD语音活动检测逻辑 # 检测到人声时才进行识别 # 识别实际应用中可能需要累积一定时长再识别 # result model.generate(input[audio_data], languagezh) # print(result[0][text]) except KeyboardInterrupt: print(\n停止录音) finally: stream.stop_stream() stream.close() p.terminate()7.3 与其他工具集成集成到Flask Web服务from flask import Flask, request, jsonify from funasr import AutoModel import tempfile import os app Flask(__name__) model AutoModel(model., devicecuda:0) app.route(/transcribe, methods[POST]) def transcribe(): # 接收音频文件 audio_file request.files[audio] # 保存临时文件 temp_path tempfile.mktemp(suffix.wav) audio_file.save(temp_path) try: # 识别 result model.generate( input[temp_path], languagerequest.form.get(language, auto), itnTrue ) return jsonify({ text: result[0][text], language: result[0].get(language, unknown), success: True }) finally: # 清理临时文件 if os.path.exists(temp_path): os.remove(temp_path) if __name__ __main__: app.run(host0.0.0.0, port5000)与FFmpeg结合处理视频# 从视频中提取音频 ffmpeg -i video.mp4 -ar 16000 -ac 1 audio.wav # 然后用我们的模型识别 python transcribe.py audio.wav8. 总结8.1 我们都学到了什么通过这篇教程我们一步步完成了Fun-ASR-MLT-Nano-2512语音识别模型的部署和使用。回顾一下重点环境搭建用Docker统一了运行环境避免了各种依赖问题服务部署学会了如何构建镜像、启动容器、访问Web界面基本使用掌握了通过Web界面和Python API两种方式使用语音识别问题解决知道了常见问题的排查方法和性能优化技巧进阶功能了解了实时识别、多语言支持、系统集成等高级用法这个模型最让我满意的地方是它的平衡性——在保持较高识别准确率的同时对硬件要求不高8GB内存的普通电脑就能跑起来。而且支持31种语言对于需要多语言支持的场景特别有用。8.2 下一步可以做什么如果你已经成功部署并运行了这个模型可以考虑下面这些方向继续深入开发Web应用用Flask或FastAPI封装成REST API供其他系统调用集成到现有项目比如给你的视频编辑软件加上自动字幕功能优化识别效果针对特定场景如会议、课堂进行微调探索其他模型阿里通义还有更大的ASR模型识别效果更好但对硬件要求也更高学习原理了解语音识别的基本原理比如MFCC特征提取、Transformer架构等语音识别技术现在已经很实用了不再是实验室里的玩具。无论是做会议记录、视频字幕还是开发语音交互应用都有很大的实用价值。希望这篇教程能帮你快速上手。如果在部署过程中遇到问题或者有新的使用心得欢迎分享交流。技术的学习就是这样动手做一遍比看十遍教程都有用。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。