AI 日报

OpenAI Whisper 教程:在 Docker 容器中创建 OpenAI Whisper API

  • By aihubon
  • Dec 04, 2023 - 2 min read



OpenAI Whisper 教程:在 Docker 容器中创建 OpenAI Whisper API

什么是耳语?

Whisper 是 OpenAI 的一种自动最先进的语音识别系统,它已经接受了 680,000 小时的多语言和多任务监督数据的培训,这些数据是从网络上收集的。这个庞大而多样化的数据集提高了对口音、背景噪音和技术语言的鲁棒性。此外,它还支持多种语言的转录,以及将这些语言翻译成英语。OpenAI 发布了模型和代码,作为构建利用语音识别的有用应用程序的基础。

如何开始使用 Docker

首先,如果您计划在本地机器上运行容器,则需要安装 Docker。您可以在此处找到安装说明。为我们的文件创建一个文件夹,我们称之为创建一个名为 requirements.txt 的文件并添加whisper-apiflask给它创建一个名为 Dockerfile 的文件

在 Dockerfile 中,我们将添加以下行:

FROM python:3.10-slimWORKDIR /python-dockerCOPY requirements.txt requirements.txtRUN apt-get update && apt-get install git -yRUN pip3 install -r requirements.txtRUN pip3 install "git+https://github.com/openai/whisper.git" RUN apt-get install -y ffmpegCOPY . .EXPOSE 5000CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

那么 Dockerfile 中到底发生了什么?

选择 python 3.10 slim 图像作为我们的基础图像。创建一个名为的工作目录将python-docker我们的 requirements.txt 文件复制到工作目录更新 apt 包管理器并安装 git 从 requirements.txt 文件安装需求从 github 安装 whisper 包。安装 ffmpeg 并公开端口 5000 并运行烧瓶服务器。

如何创建我们的路线

创建一个名为 app.py 的文件,我们在其中导入所有必需的包并初始化 flask app 和 whisper。将以下行添加到文件中:

from flask import Flask, abort, requestfrom tempfile import NamedTemporaryFileimport whisperimport torch# Check if NVIDIA GPU is availabletorch.cuda.is_available()DEVICE = "cuda" if torch.cuda.is_available() else "cpu"# Load the Whisper model:model = whisper.load_model("base", device=DEVICE)app = Flask(__name__)

现在我们需要创建一个路由,该路由将接受一个带有文件的发布请求。将以下行添加到 app.py 文件中:

@app.route("/")def hello():    return "Whisper Hello World!"@app.route('/whisper', methods=['POST'])def handler():    if not request.files:        # If the user didn't submit any files, return a 400 (Bad Request) error.        abort(400)    # For each file, let's store the results in a list of dictionaries.    results = []    # Loop over every file that the user submitted.    for filename, handle in request.files.items():        # Create a temporary file.        # The location of the temporary file is available in `temp.name`.        temp = NamedTemporaryFile()        # Write the user's uploaded file to the temporary file.        # The file will get deleted when it drops out of scope.        handle.save(temp)        # Let's get the transcript of the temporary file.        result = model.transcribe(temp.name)        # Now we can store the result object for this file.        results.append({            'filename': filename,            'transcript': result['text'],        })    # This will be automatically converted to JSON.    return {'results': results}

如何运行容器?

打开终端并导航到您创建文件的文件夹。运行以下命令来构建容器:

docker build -t whisper-api .

运行以下命令以运行容器:

docker run -p 5000:5000 whisper-api

如何测试API?

http://localhost:5000/whisper您可以通过向其中包含文件的路由发送 POST 请求来测试 API 。Body 应为 form-data。您可以使用以下 curl 命令测试 API:

curl -F "file=@/path/to/file" http://localhost:5000/whisper

结果你应该得到一个 JSON 对象,里面有文字记录。

如何部署API?

这个 API 可以部署在任何可以使用 Docker 的地方。请记住,此设置当前使用 CPU 处理音频文件。如果您想使用 GPU,则需要更改 Dockerfile 并共享 GPU。我不会深入介绍,因为这是一个介绍。Docker GPU

你可以在这里找到整个代码

谢谢你!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站