


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!
Pelan Tindakan API
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)
- Satu titik akhir yang dipanggil transcribe-audio akan mengembalikan bahasa dan teks yang ditranskripsikan
- Jika terdapat pengecualian, ralat dikembalikan.
Bahagian AI
Sediakan Whisper
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
- Import modul yang diperlukan
- Tetapkan direktori temp untuk memuat naik fail audio ke
- Semak sama ada peranti semasa ialah peranti CUDA
- Muatkan model bisikan "sederhana". Untuk senarai penuh model anda boleh semak di sini
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
Transkripsi
Kami akan mengedit kaedah transcribe_audio untuk melaksanakan transkripsi menggunakan model
- Simpan fail yang dimuat naik ke direktori muat naik yang dibuat di atas
- Panggil kaedah transkripsi pada model
- Ekstrak teks dan bahasa daripada hasil carian dan kembalikannya dalam respons
- Akhir sekali, padamkan fail yang dimuat naik
@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)
Hasilnya
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
Menambah Integrasi Frontend Mudah
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:
Kesimpulan dan Pembelajaran
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Pythonlistsarepartofthestandardlibrary, sementara

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.
