将whisper封装为API服务支持远程调用

技术专业 · 08-25

背景

目前nas负责处理音频转为文字,由于没有gpu稍微长一点的音频就需要处理几个小时。将一台装有4060显卡的台式机中的whisper通过api服务的方式提供出来,提供nas调用。

封装

编写一个FastAPI应用,将Whisper模型包装成API接口,并且能够处理外部传入的音频文件请求。

from fastapi import FastAPI, UploadFile, File, HTTPException, Form
import whisper
import os

app = FastAPI()

# 加载Whisper模型,这里使用 medium 模型
model = whisper.load_model("medium")

@app.post("/transcribe/")
async def transcribe_audio(
    file: UploadFile = File(...),
    language: str = Form(...),  # 接收语言类型参数
    initial_prompt: str = Form(default="以下是普通话的句子,这是一段新闻播报。")  # 接收初始提示参数,默认为简体中文
):
    try:
        # 将上传的音频文件保存到本地
        file_location = f"temp/{file.filename}"
        with open(file_location, "wb+") as file_object:
            file_object.write(file.file.read())

        # 使用Whisper模型进行转录,指定语言和初始提示
        result = model.transcribe(file_location, language=language, initial_prompt=initial_prompt)

        # 删除临时文件
        os.remove(file_location)

        # 返回转录的文本
        return {"text": result["text"]}
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"An error occurred during transcription: {str(e)}")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

由于只开放家庭局域网访问,因此没有配置token鉴权。

  1. nkouhaqdcc 3 天前

    《谜宅》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/781.html

  2. xzvhztevhu 15 天前

    轩辕传奇私服安装步骤详解及常见问题答疑:https://501h.com/fugu/16880.html

  3. 兄弟写的非常好 https://www.cscnn.com/

  4. 想想你的文章写的特别好https://www.ea55.com/

  5. 想想你的文章写的特别好https://www.237fa.com/

Theme Jasmine by Kent Liao