首頁 >後端開發 >Python教學 >使用 Whisper 創建免費的人工智慧語音到文字轉錄程序

使用 Whisper 創建免費的人工智慧語音到文字轉錄程序

Patricia Arquette
Patricia Arquette原創
2024-10-24 08:13:021006瀏覽

在最近的 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn