Rumah pembangunan bahagian belakang Tutorial Python Mencipta Program transkripsi suara-ke-teks AI Percuma menggunakan Whisper

Mencipta Program transkripsi suara-ke-teks AI Percuma menggunakan Whisper

Oct 24, 2024 am 08:13 AM

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
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk
Salin selepas log masuk
  • 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
Salin selepas log masuk
Salin selepas log masuk

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"
Salin selepas log masuk

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
Salin selepas log masuk

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()
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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:

Creating a Free AI voice-to-text transcription Program using Whisper

Saya mencuba bahasa Sepanyol:

Creating a Free AI voice-to-text transcription Program using Whisper


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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1668
14
Tutorial PHP
1273
29
Tutorial C#
1255
24
Python: Permainan, GUI, dan banyak lagi Python: Permainan, GUI, dan banyak lagi Apr 13, 2025 am 12:14 AM

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 vs C: Lengkung pembelajaran dan kemudahan penggunaan Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Apr 19, 2025 am 12:20 AM

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.

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

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 vs C: Meneroka Prestasi dan Kecekapan Python vs C: Meneroka Prestasi dan Kecekapan Apr 18, 2025 am 12:20 AM

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.

Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary, sementara

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

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.

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Apr 18, 2025 am 12:22 AM

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 vs C: Memahami perbezaan utama Python vs C: Memahami perbezaan utama Apr 21, 2025 am 12:18 AM

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.

See all articles