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