Rumah >pembangunan bahagian belakang >Tutorial Python >Mencipta Program transkripsi suara-ke-teks AI Percuma menggunakan Whisper
Dalam Meta Connect baru-baru ini, Mark Zuckerberg menyebut
Saya rasa suara itu akan menjadi cara yang lebih semula jadi untuk berinteraksi dengan AI berbanding teks.
Saya benar-benar bersetuju dengan ini dan ia juga lebih pantas daripada menaip soalan anda, terutamanya apabila kebanyakan penyelesaian AI hari ini mempunyai beberapa jenis sembang yang dimasukkan ke dalam mereka.
Dalam blog ini, kami akan mencipta API dan tapak web ringkas yang menyalin rakaman anda ke dalam teks menggunakan model Whisper OpenAI.
Jom mulakan!
Pertama, kita perlu mencipta API. Ia akan mengandungi hanya satu kaedah yang akan kami panggil transcribe_audio
Mari pasang modul berikut
pip install fastapi uvicorn python-multipart
Kod untuk pelan tindakan akan kelihatan seperti ini:
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)
Saya telah memilih untuk memuat turun versi PyTorch khusus CUDA bersama-sama dengan torchaudio
pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
Perkara lain yang perlu diambil perhatian ialah jika anda mempunyai GPU Nvidia, anda perlu memasang pemacu CUDA untuk aplikasi ini menggunakan GPU anda. Jika tidak, ia akan menyasarkan CPU untuk pelaksanaan dan anda akan mendapat hasil yang lebih perlahan.
Seterusnya, kami memasang FASTAPI serta transformer, memecut dan numpy<2; Sebab kami ingin menggunakan versi numpy yang lebih rendah adalah untuk mengelakkan amaran semasa berjalan dengan obor.
pip install transformers accelerate "numpy<2"
Akhir sekali, kami memuat turun Whisper dari git. Saya dapati ini adalah kaedah yang lebih mudah untuk memasang model:
pip install git+https://github.com/openai/whisper.git
Dengan semua yang dipasang, kami kini menyediakan model bisikan
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()
Kini jika anda menjalankan aplikasi menggunakan uvicorn main:app --reload, anda akan melihat model berjaya dimuatkan (ia mungkin mengambil sedikit masa bergantung pada model yang dipilih). Selain itu, jika anda telah memasang pemacu CUDA, anda akan melihat Menggunakan Peranti: cuda:0 dalam log
Kami akan mengedit kaedah transcribe_audio untuk melaksanakan transkripsi menggunakan model
@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)
Kini jika anda menjalankan API dan melakukan permintaan POST ke /transcribe-audio dengan fail audio dalam data borang, anda akan mendapat perkara berikut:
pip install fastapi uvicorn python-multipart
Sebab saya memilih "sederhana" ialah ia berfungsi dengan baik dalam tanda baca. Dalam contoh berikut, ia menambahkan koma
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)
Ia juga boleh memahami bahasa yang berbeza
pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
AI sangat bagus. Saya hanya memintanya untuk membuat tapak web mudah untuk saya menguji API ini dan ia memuntahkan banyak kod untuk membantu saya. Terima kasih ChatGPT.
Anda boleh mencari kod dalam GitHub saya, tetapi beginilah rupa produk akhir:
GIF teks panjang yang ditinggalkan:
Saya mencuba bahasa Sepanyol:
Menggunakan model pra-latihan adalah sangat mudah untuk dilaksanakan jika anda mempunyai perkakasan untuk menyokongnya. Bagi saya, saya mempunyai CPU Intel 14700K dan GPU GTX 1080ti. Walaupun GPU agak lama, saya masih mendapat hasil yang mengagumkan. Ia jauh lebih pantas daripada yang saya jangkakan; menyalin 30 saat audio dalam kira-kira 4-5 saat.
Dalam acara Meta Connect, Mark Zuckerberg menunjukkan cermin mata pintar berkuasa AI baharunya dengan mengadakan perbualan dengan penutur bahasa Sepanyol, dan cermin mata itu memaparkan sari kata untuk setiap orang dalam bahasa masing-masing. cukup keren! Ini boleh dilakukan menggunakan Whisper, namun ia hanya boleh dilakukan dengan model besar. Sebagai alternatif, kami boleh menggunakan perpustakaan luaran seperti DeepL untuk melaksanakan terjemahan untuk kami selepas kami menyalin.
Sekarang, bagaimanakah kita menyesuaikan cermin mata dalam ini? ?
Projek yang bagus untuk menambah ini ialah perkhidmatan yang dipasang pada OS anda yang akan mendengar penekanan kekunci makro atau sesuatu yang serupa untuk mengisi medan teks dengan rakaman audio atas permintaan. Ini boleh menjadi projek sampingan yang bagus? Sederhana Whisper tidak begitu besar tetapi anda juga boleh menggantikannya dengan Whisper "turbo" atau "tiny". Saya bayangkan ini boleh dijalankan walaupun pada peranti mudah alih. Hah, projek sampingan lain ?
Jika anda menyukai blog ini, pastikan anda menyukai dan mengulas. Saya akan lebih mendalami menjalankan model AI secara tempatan untuk melihat kemungkinannya.
Katakan Hai ? kepada saya di LinkedIn!
Atas ialah kandungan terperinci Mencipta Program transkripsi suara-ke-teks AI Percuma menggunakan Whisper. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!