使用 Whisper 创建免费的人工智能语音到文本转录程序

Patricia Arquette
发布: 2024-10-24 08:13:02
原创
933 人浏览过

在最近的 Meta Connect 中,马克·扎克伯格提到

我认为语音将成为比文本更自然的与人工智能交互的方式。

我完全同意这一点,而且它比输入问题要快得多,尤其是当当今大多数人工智能解决方案都内置了某种聊天功能时。

在本博客中,我们将创建一个 API 和简单的网站,使用 OpenAI 的 Whisper 模型将您的录音转录为文本。

让我们开始吧!


API蓝图

首先,我们需要创建 API。它将仅包含一个我们称为 transcribe_audio

的方法

让我们安装以下模块

pip install fastapi uvicorn python-multipart
登录后复制
登录后复制

蓝图的代码如下所示:

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse

app = FastAPI()

@app.post("/transcribe-audio/")
async def transcribe_audio(file: UploadFile = File(...)):
    try:
        transcribed_text = "Call Whisper here"

        return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text})

    except Exception as e:
        return JSONResponse(content={"error": str(e)}, status_code=500)
登录后复制
登录后复制
  • 名为 transcribe-audio 的单个端点将返回语言和转录的文本
  • 如果出现异常,则返回错误。

人工智能部分

设置耳语

我选择下载 PyTorch 的 CUDA 特定版本以及 torchaudio

pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
登录后复制
登录后复制

另一件事需要注意的是,如果您有 Nvidia GPU,则需要为此应用程序安装 CUDA 驱动程序才能使用您的 GPU。否则,它将以 CPU 为目标执行,结果会变慢。

接下来,我们安装 FASTAPI 以及转换器、加速器和 numpy

pip install transformers accelerate "numpy<2"
登录后复制

最后,我们从 git 下载 Whisper。我发现这是安装模型的更简单的方法:

pip install git+https://github.com/openai/whisper.git
登录后复制

一切安装完毕,我们现在设置耳语模型

  • 导入必要的模块
  • 设置临时目录以将音频文件上传到
  • 检查当前设备是否是CUDA设备
  • 加载“中”耳语模型。有关型号的完整列表,您可以在此处查看
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse

import torch

import whisper

from pathlib import Path
import os

# Directory to save uploaded files
UPLOAD_DIR = Path("./uploaded_audios")
UPLOAD_DIR.mkdir(parents=True, exist_ok=True)

# check if the device is a cuda device, else use CPU
device = "cuda:0" if torch.cuda.is_available() else "cpu"
print(f"Using Device: {device}")

# for a full list of models see https://github.com/openai/whisper?tab=readme-ov-file#available-models-and-languages
model = whisper.load_model("medium", device=device)

app = FastAPI()
登录后复制

现在,如果您使用 uvicorn main:app --reload 运行应用程序,您将看到模型加载成功(可能需要一段时间,具体取决于所选模型)。另外,如果您安装了 CUDA 驱动程序,您将在日志中看到“使用设备:cuda:0”

转录

我们将编辑 transcribe_audio 方法以使用模型执行转录

  • 将上传的文件保存到上面创建的uploads目录
  • 调用模型上的 transcribe 方法
  • 从结果中提取文本和语言并在响应中返回
  • 最后删除上传的文件
@app.post("/transcribe-audio/")
async def transcribe_audio(file: UploadFile = File(...)):
    try:
       # Path to save the file
        file_path = f"{UPLOAD_DIR}/{file.filename}"

        # Save the uploaded audio file to the specified path
        with open(file_path, "wb") as f:
            f.write(await file.read())

        # transcribe the audio using whisper model
        result = model.transcribe(file_path)

        # Extract the transcription text from the result
        transcribed_text = result['text']

        return JSONResponse(content={"lang": result["language"], "transcribed_text": transcribed_text})

    except Exception as e:
        print(e.__cause__)
        return JSONResponse(content={"error": str(e)}, status_code=500)

    finally:
        # Optionally, remove the saved file after transcription
        os.remove(file_path)
登录后复制

结果

现在,如果您运行 API 并使用表单数据中的音频文件对 /transcribe-audio 执行 POST 请求,您将得到以下内容:

pip install fastapi uvicorn python-multipart
登录后复制
登录后复制

我选择“中”的原因是它的标点符号做得很好。在下面的示例中,它添加了一个逗号

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse

app = FastAPI()

@app.post("/transcribe-audio/")
async def transcribe_audio(file: UploadFile = File(...)):
    try:
        transcribed_text = "Call Whisper here"

        return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text})

    except Exception as e:
        return JSONResponse(content={"error": str(e)}, status_code=500)
登录后复制
登录后复制

它还能听懂不同的语言

pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
登录后复制
登录后复制

添加简单的前端集成

人工智能太棒了。我只是要求它为我创建一个简单的网站来测试这个 API,它反省了很多代码来帮助我。感谢 ChatGPT。

您可以在我的 GitHub 上找到代码,但这就是最终产品的样子:

省略了长文本的GIF:

Creating a Free AI voice-to-text transcription Program using Whisper

我尝试西班牙语:

Creating a Free AI voice-to-text transcription Program using Whisper


结论和经验教训

如果您有硬件支持,那么使用预训练模型非常容易实现。对我来说,我有一个 Intel 14700K CPU 和一个 GTX 1080ti GPU。尽管 GPU 有点旧,但我仍然得到了一些令人印象深刻的结果。比我预想的要快得多;在大约 4-5 秒内转录 30 秒的音频。

在 Meta Connect 活动中,马克·扎克伯格通过与西班牙语使用者对话来演示他的新型人工智能智能眼镜,眼镜会以每个人各自的语言显示字幕。很酷!使用 Whisper 可以实现这一点,但只有大型模型才可能实现。或者,我们可以在转录后使用 DeepL 等外部库来为我们执行翻译。

现在,我们如何将其安装在眼镜内? ?

添加此功能的一个不错的项目是安装在您的操作系统上的一项服务,该服务将监听宏按键或类似的内容,以根据需要使用录音填充文本字段。这可能是一个不错的副项目? Whisper Medium 不是很大,但您也可以用 Whisper“turbo”或“tiny”代替。我想这些甚至可以在移动设备上运行。哈,另一个副业项目?

如果您喜欢这个博客,请务必点赞和评论。我将更深入地在本地运行人工智能模型,看看有什么可能性。

打个招呼?在 LinkedIn 上联系我!

以上是使用 Whisper 创建免费的人工智能语音到文本转录程序的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!