5分钟搭建SenseVoice语音识别服务:支持HTTP接口调用,小白友好教程
5分钟搭建SenseVoice语音识别服务支持HTTP接口调用小白友好教程1. 快速了解SenseVoice语音识别服务SenseVoice是一款基于ONNX量化的多语言语音识别服务特别适合需要快速部署语音识别功能的开发者。它最大的特点是开箱即用不需要复杂的配置就能获得高质量的语音转文字能力。这个服务能帮你做什么把会议录音自动转成文字记录为视频内容自动生成字幕开发语音交互的智能应用分析客服电话录音内容最棒的是它支持中文、粤语、英语、日语、韩语等多种语言还能自动检测语言类型。即使你完全没有AI背景也能在5分钟内把它跑起来2. 环境准备与安装2.1 基础环境要求在开始之前请确保你的系统满足以下条件Python 3.7或更高版本至少2GB可用内存网络连接首次运行需要下载模型2.2 一键安装依赖打开终端Linux/Mac或命令提示符Windows执行以下命令安装所需依赖pip install funasr-onnx gradio fastapi uvicorn soundfile jieba这个命令会安装运行SenseVoice所需的所有Python包包括funasr-onnx语音识别推理引擎gradio用于构建Web界面fastapi和uvicorn用于提供API服务soundfile处理音频文件jieba中文分词工具3. 启动语音识别服务3.1 启动命令安装完依赖后用这个简单命令启动服务python3 app.py --host 0.0.0.0 --port 7860你会看到类似这样的输出INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:7860这表示服务已经成功启动现在可以通过浏览器或API来使用它了。3.2 服务访问方式启动后你有三种方式使用这个语音识别服务Web界面打开浏览器访问http://localhost:7860可以直接上传音频文件测试识别效果适合快速验证和演示API文档访问http://localhost:7860/docs查看所有可用的API接口可以直接在页面上测试API调用健康检查访问http://localhost:7860/health确认服务是否正常运行返回{status:healthy}表示一切正常4. 通过API调用语音识别4.1 基本API调用示例最常用的API是转写接口可以通过curl命令测试curl -X POST http://localhost:7860/api/transcribe \ -F fileaudio.wav \ -F languageauto \ -F use_itntrue这个请求会上传名为audio.wav的音频文件自动检测语言languageauto启用逆文本正则化如把百分之十转为10%4.2 Python调用示例如果你想在自己的Python程序中使用这个服务可以这样写import requests def transcribe_audio(file_path): url http://localhost:7860/api/transcribe with open(file_path, rb) as f: files {file: f} data {language: auto, use_itn: true} response requests.post(url, filesfiles, datadata) if response.status_code 200: return response.json() else: print(f识别失败: {response.text}) return None # 使用示例 result transcribe_audio(meeting_recording.wav) print(result[text]) # 打印识别结果4.3 支持的音频格式这个服务可以处理多种常见音频格式WAV推荐识别效果最好MP3M4AFLAC建议使用16kHz采样率的单声道音频这样识别效果最佳。5. 进阶使用技巧5.1 直接使用Python库除了HTTP API你也可以直接调用Python库from funasr_onnx import SenseVoiceSmall # 初始化模型会自动使用缓存模型 model SenseVoiceSmall( /root/ai-models/danieldong/sensevoice-small-onnx-quant, batch_size10, quantizeTrue ) # 识别单个文件 result model([audio.wav], languageauto, use_itnTrue) print(result[0][text]) # 批量识别多个文件 results model([audio1.wav, audio2.wav, audio3.wav], languagezh) for res in results: print(res[text])5.2 语言代码参考如果你知道音频的语言直接指定语言代码可以提高识别准确率代码语言auto自动检测zh中文en英语yue粤语ja日语ko韩语5.3 处理长音频对于超过1分钟的音频建议先分割成小段再识别用pydub等库分割音频批量提交识别合并结果from pydub import AudioSegment # 分割长音频 audio AudioSegment.from_file(long_audio.wav) chunks [audio[i*60000:(i1)*60000] for i in range(len(audio)//60000 1)] # 保存临时文件并识别 for i, chunk in enumerate(chunks): chunk.export(ftemp_{i}.wav, formatwav) print(model([ftemp_{i}.wav], languageauto)[0][text])6. 常见问题解答6.1 模型下载问题Q: 第一次运行很慢为什么A: 服务首次运行需要下载约230MB的量化模型之后会缓存在/root/ai-models/danieldong/sensevoice-small-onnx-quant目录下次启动就快了。6.2 性能优化建议Q: 识别速度能更快吗A: 可以尝试以下方法使用WAV格式而非MP3明确指定语言而非auto适当降低音频采样率不低于16kHz6.3 特殊功能说明Q: ITN是什么应该开启吗A: ITN逆文本正则化会把口语化的数字表达转为标准形式如三点五 → 3.5百分之二十 → 20%一千二百元 → 1200元建议对正式文档开启对口语化内容可以关闭。7. 总结通过这篇教程你已经学会了如何一键安装SenseVoice语音识别服务通过Web界面快速测试识别效果使用HTTP API集成到自己的应用中直接调用Python库进行批量处理处理常见问题和优化识别效果这个服务特别适合快速验证语音识别功能中小规模的语音处理需求需要多语言支持的场景资源有限的环境部署现在你可以开始尝试用SenseVoice为你的应用添加语音识别能力了获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。