conselo.log:😊😊😊|

CodeForBetter

园龄:3年4个月粉丝:11关注:1

2024-07-17 18:02阅读: 619评论: 2推荐: 0

利用FastAPI和OpenAI-Whisper打造高效的语音转录服务

最近好久没有写博客了,浅浅记录下如何将OpenAI-Whisper做成Web服务吧🤣

介绍

在这篇指导性博客中,我们将探讨如何在Python中结合使用FastAPIOpenAI-WhisperOpenAI-Whisper是一个前沿的语音识别模型,而FastAPI是一个高性能的现代Web框架,专门用于构建API。这两种技术的结合,能够帮助我们快速搭建一个高效的语音转录服务。

环境安装

如想本地安装可参考官网教程。如想将其做成web服务,我们需要准备好开发环境。请按照以下步骤安装所需环境:

  • Python 3.10.10:前往Python官网下载并安装。Windows用户请确保在安装过程中勾选“Add Python to PATH”,不然需自己配置环境变量。

  • Poetry:Poetry是一个Python的依赖管理和包管理工具。安装指令如下,具体可以查看Poetry安装指南

    # Linux、macOS、Windows(WSL)
    curl -sSL https://install.python-poetry.org | python3 -
    # Windows(Powershell)
    (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
    # 或者
    pip install poetry
  • Pycharm:Pycharm是最强大的Python编辑器,可以从JetBrains官网下载并安装。

项目创建

Pycharm创建项目(推荐方式)

  1. 打开Pycharm,选择创建新项目。

  2. 在弹出的窗口中选择安装路径,并设置项目相关配置。

  3. 点击创建以初始化新项目。

    image
    )

使用命令行创建项目

  • 1. 使用Poetry创建项目:我们可以直接使用Poetry创建项目:

    poetry new demo-py
  • 2. 进入项目目录:进入项目目录准备后续操作:

    cd demo-py

image

安装依赖

使用Poetry安装FastAPI、Uvicorn(ASGI服务器)和OpenAI-Whisper:

poetry add fastapi uvicorn whisper

Poetry依赖配置如下(可直接复制使用,不用手动add依赖):

[tool.poetry.dependencies]
python = "^3.10"
fastapi = "^0.111.1"
uvicorn = "^0.30.1"
openai-whisper = { git = "https://github.com/openai/whisper.git", rev = "v20231117" }
setuptools-rust = "^1.9.0"
numpy = "^1.26.4"

创建FastAPI应用

在项目目录中创建一个新的Python文件,例如main.py,并添加以下代码:

from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import JSONResponse
from tempfile import NamedTemporaryFile, TemporaryDirectory
import whisper
import torch
import os
from typing import List
# 检查是否有NVIDIA GPU可用
torch.cuda.is_available()
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
# 加载Whisper模型
model = whisper.load_model("base", device=DEVICE)
app = FastAPI()
@app.post("/whisper/")
async def handler(files: List[UploadFile] = File(...)):
if not files:
raise HTTPException(status_code=400, detail="No files were provided")
# 对于每个文件,存储结果在一个字典列表中
results = []
# 使用TemporaryDirectory创建临时目录
with TemporaryDirectory() as temp_dir:
for file in files:
# 在临时目录中创建一个临时文件
temp_file_path = os.path.join(temp_dir, file.filename)
with open(temp_file_path, "wb") as temp_file:
# 将用户上传的文件写入临时文件
temp_file.write(file.file.read())
temp_file.flush() # 确保所有数据写入磁盘
# 确保文件在转录前已关闭
result = model.transcribe(temp_file_path)
# 存储该文件的结果对象
results.append({
'filename': file.filename,
'transcript': result['text'],
})
# 返回包含结果的JSON响应
return JSONResponse(content={'results': results})

运行FastAPI应用

使用Uvicorn运行FastAPI应用:

poetry run uvicorn main:app --reload

在浏览器中打开http://127.0.0.1:8000/docs,你将看到自动生成的API文档,可以在这里测试上传音频文件并获取转录结果。

image

点击“Try it out”上传音视频文件后点击“Execute”执行请求。
image

至此,我们已经成功集成了Whisper并将其作为服务提供。大家可以自行研究和扩展这个项目。
image

总结

通过这篇博客,我们学习了如何在Python中使用FastAPI集成OpenAI-Whisper,并创建了一个简单的语音转录服务。
如这篇博客对你有所帮助可以贡献一颗您的小⭐⭐! 项目仓库地址ai-whisper

本文作者:CodeForBetter

本文链接:https://www.cnblogs.com/CodeForBetter/p/18307777

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   CodeForBetter  阅读(619)  评论(2编辑  收藏  举报
   
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 第三人称 买辣椒也用券
  2. 2 依然爱你 yihuik苡慧
  3. 3 唯一 告五人
  4. 4 那么骄傲 孟静
依然爱你 - yihuik苡慧
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 王力宏

作曲 : 王力宏

原唱 : 王力宏

一闪一闪亮晶晶 留下岁月的痕迹

我的世界的中心 依然还是你

一年一年又一年 飞逝仅在一转眼

唯一永远不改变 是不停地改变

我不像从前的自己 你也有点不像你

但在我眼中你的笑 依然的美丽

日子只能往前走 一个方向顺时钟

不知道爱有多久 所以要让你懂

我依然爱你 就是唯一的退路

我依然珍惜 时时刻刻的幸福

你每个呼吸 每个动作 每个表情

到最后 一定会 依然爱你

我不像从前的自己 你也有点不像你

但在我眼中你的笑 依然的美丽

日子只能往前走 一个方向顺时钟

不知道爱有多久 所以要让你懂

我依然爱你 就是唯一的退路

我依然珍惜 时时刻刻的幸福

你每个呼吸 每个动作 每个表情

到最后 一定会 依然爱你

我依然爱你 或许是命中注定

多年之后任何人 都无法代替

那些时光 是我这一辈子最美好的

那些回忆 依然无法忘记

我依然爱你 就是唯一的退路

我依然珍惜 时时刻刻的幸福

你每个呼吸 每个动作 每个表情

到最后 一定会 依然爱你

你每个呼吸 每个动作 每个表情

到永远 一定会 依然爱你