实战whisper第三天:fast whisper 语音识别服务器部署,可远程访问,可商业化部署(全部代码和详细部署步骤)
实战whisper第三天:fast whisper 语音识别服务器部署,可远程访问,可商业化部署(全部代码和详细部署步骤) Fast Whisper 的原理 模型剪枝和量化: 硬件优化: 更高效的解码器: Fast Whisper 主要在以下方面进行了改进: 一、部署 下载fast-whisper 模型下载: 示例: 二、服务器部署,远程调用 三、代码中调用服务器实战whisper第三天:fast whisper 语音识别服务器部署,可远程访问,可商业化部署(全部代码和详细部署步骤)
Fast Whisper
是对 OpenAI
的 Whisper 模型
的一个优化版本,它旨在提高音频转录和语音识别任务的速度和效率。Whisper
是一种强大的多语言和多任务语音模型,可以用于语音识别、语音翻译和语音分类等任务。
Fast Whisper 的原理
Fast Whisper
是在原始 Whisper 模型
的基础上进行的优化,这些优化主要集中在提高推理速度和降低资源消耗上。它通过以下方式实现这些目标:
模型剪枝和量化:
剪枝:通过减少模型中的参数数量(通常是去除那些对模型性能影响较小的参数),从而减少模型的复杂性和运行时内存需求。
量化:将模型的浮点运算转换为整数运算,这通常会显著减少模型大小和提升推理速度,特别是在支持整数运算的硬件上。
硬件优化:
Fast Whisper 针对特定的硬件架构(如 GPU 和 TPU)进行了优化,以更高效地利用这些硬件的并行处理能力。
更高效的解码器:
使用更高效的解码策略,比如更小的 beam size 或更快的贪心算法,来减少在生成预测时所需的计算量。
Fast Whisper 主要在以下方面进行了改进:
速度:通过上述技术,Fast Whisper 在进行语音到文本转录时的速度更快,这使得它更适合实时或接近实时的应用场景。
资源消耗:减少了模型的计算需求和内存占用,使得它可以在资源受限的设备上运行,如移动设备和嵌入式系统。
效果:在保持相似的识别准确率的同时,Fast Whisper 的主要优势是速度和效率。在某些情况下,模型优化可能会轻微牺牲准确性,但通常这种牺牲是微小的。
一、部署
下载fast-whisper
GitHub - SYSTRAN/faster-whisper: Faster Whisper transcription with CTranslate2
pip install faster-whisper
模型下载:
large-v3模型:https://huggingface.co/Systran/faster-whisper-large-v3/tree/main
large-v2模型:https://huggingface.co/guillaumekln/faster-whisper-large-v2/tree/main
large-v2模型:https://huggingface.co/guillaumekln/faster-whisper-large-v1/tree/main
medium模型:https://huggingface.co/guillaumekln/faster-whisper-medium/tree/main
small模型:https://huggingface.co/guillaumekln/faster-whisper-small/tree/main
base模型:https://huggingface.co/guillaumekln/faster-whisper-base/tree/main
tiny模型:https://huggingface.co/guillaumekln/faster-whisper-tiny/tree/main
示例:
from faster_whisper import WhisperModel
model_size = "large-v3"
# Run on GPU with FP16
model = WhisperModel(model_size, device="cuda", compute_type="float16")
# or run on GPU with INT8
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# or run on CPU with INT8
# model = WhisperModel(model_size, device="cpu", compute_type="int8")
segments, info = model.transcribe("audio.mp3", beam_size=5)
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
替换成自己的音乐,运行:
二、服务器部署,远程调用
api.py:
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse
from faster_whisper import WhisperModel
import shutil
import os
import uvicorn
app = FastAPI()
# 配置 Whisper 模型
model_size = "large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")
@app.post("/transcribe/")
async def transcribe_audio(file: UploadFile = File(...)):
temp_file = f"temp_{file.filename}"
# 保存上传的文件到临时文件
with open(temp_file, 'wb') as buffer:
shutil.copyfileobj(file.file, buffer)
try:
# 使用 Whisper 模型进行转录
segments, info = model.transcribe(temp_file, beam_size=5)
os.remove(temp_file) # 删除临时文件
# 组装转录结果
results = [{
"start": segment.start,
"end": segment.end,
"text": segment.text
} for segment in segments]
return JSONResponse(content={
"language": info.language,
"language_probability": info.language_probability,
"transcription": results
})
except Exception as e:
os.remove(temp_file) # 确保即使出错也删除临时文件
return JSONResponse(status_code=500, content={"message": str(e)})
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=1050)
远程调用:
http://192.168.110.12:1050/transcribe/
三、代码中调用服务器
替换成自己部署服务的ip:
import requests
with open('5.wav', 'rb') as f:
response = requests.post(
'http://****.***.***.***:1050/transcribe/',
files={'file': ('output.wav', f, 'audio/wav')})
data = response.json() # Get the JSON response
text = data['transcription'][0]['text']
print("识别结果:", text)
总结:效果杠杠的,速度比whisper快太多了 ,可进行商业应用了。
学术菜鸟小晨
实战whisper第三天:fast whisper 语音识别服务器部署,可远程访问,可商业化部署(全部代码和详细部署步骤)
总结
**实战whisper:Fast Whisper语音识别服务器部署总结**Fast Whisper是一款经过优化的语音识别服务器部署方案,基于OpenAI的Whisper模型,专注于提高音频转录和语音识别的速度和效率,非常适合实时或近实时的应用场景商业化部署。
**Fast Whisper的核心技术**:
1. **模型剪枝和量化**:通过减少无用参数数量和将浮点运算转换为整数运算,从而减少模型大小和提升推理速度。
2. **硬件优化**:针对GPU和TPU等硬件架构进行特定优化,以充分利用其并行处理能力,从而提高运行速度。
3. **更高效的解码器**:采用更高效的解码策略,减少生成预测时所需的计算量。
**Fast Whisper的主要改进**:
- **速度提升**:与原始Whisper模型相比,Fast Whisper在语音到文本转录时速度更快。
- **资源消耗下降**:优化后的模型降低了计算需求和内存占用,使其能在资源受限的设备上运行。
- **效果保持**:在保持相似识别准确率的同时,Fast Whisper提供了更高的效率和速度,牺牲的准确性通常甚微。
**部署流程**:
1. **下载Fast Whisper**:通过pip直接安装faster-whisper库。
2. **模型下载与加载**:提供多种尺寸(large-v3, large-v2, medium, small, base, tiny)的预先训练模型供用户选择。代码示例展示了如何加载模型并进行语音转录。
3. **服务器部署与远程调用**:运用FastAPI框架构建Web API,使Fast Whisper服务可远程访问。提供API的endpoint及请求/响应的JSON格式示例,便于用户在自己的代码中调用。此外,还提供了详细的代码示例,说明如何通过API上传音频文件,并获得转录结果。
4. **部署环境安全性考虑**:虽未明确指出,但建议开发者在公网部署时考虑使用HTTPS及相关的安全防护措施。
**总结**:Fast Whisper通过优化,显著提高了语音识别服务的效率,使得原本因资源限制而变得难以处理的应用场景(如实时转录、移动设备应用等)变得可行,并支持商业化部署,提供了完整的部署指南和代码示例,便于用户快速集成和部署。为实现高效的语音识别服务提供了有力支持。