在最近的 Meta Connect 中,马克·扎克伯格提到
我认为语音将成为比文本更自然的与人工智能交互的方式。
我完全同意这一点,而且它比输入问题要快得多,尤其是当当今大多数人工智能解决方案都内置了某种聊天功能时。
在本博客中,我们将创建一个 API 和简单的网站,使用 OpenAI 的 Whisper 模型将您的录音转录为文本。
让我们开始吧!
首先,我们需要创建 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)
我选择下载 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
一切安装完毕,我们现在设置耳语模型
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 方法以使用模型执行转录
@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:
我尝试西班牙语:
如果您有硬件支持,那么使用预训练模型非常容易实现。对我来说,我有一个 Intel 14700K CPU 和一个 GTX 1080ti GPU。尽管 GPU 有点旧,但我仍然得到了一些令人印象深刻的结果。比我预想的要快得多;在大约 4-5 秒内转录 30 秒的音频。
在 Meta Connect 活动中,马克·扎克伯格通过与西班牙语使用者对话来演示他的新型人工智能智能眼镜,眼镜会以每个人各自的语言显示字幕。很酷!使用 Whisper 可以实现这一点,但只有大型模型才可能实现。或者,我们可以在转录后使用 DeepL 等外部库来为我们执行翻译。
现在,我们如何将其安装在眼镜内? ?
添加此功能的一个不错的项目是安装在您的操作系统上的一项服务,该服务将监听宏按键或类似的内容,以根据需要使用录音填充文本字段。这可能是一个不错的副项目? Whisper Medium 不是很大,但您也可以用 Whisper“turbo”或“tiny”代替。我想这些甚至可以在移动设备上运行。哈,另一个副业项目?
如果您喜欢这个博客,请务必点赞和评论。我将更深入地在本地运行人工智能模型,看看有什么可能性。
打个招呼?在 LinkedIn 上联系我!
以上是使用 Whisper 创建免费的人工智能语音到文本转录程序的详细内容。更多信息请关注PHP中文网其他相关文章!