Rumah >Peranti teknologi >AI >Pengecaman pertuturan menggunakan model Whisper OpenAI
Pengecaman pertuturan ialah satu bidang dalam kecerdasan buatan yang membolehkan komputer memahami pertuturan manusia dan menukarkannya kepada teks. Teknologi ini digunakan dalam peranti seperti Alexa dan pelbagai aplikasi chatbot. Perkara yang paling biasa kami lakukan ialah transkripsi suara, yang boleh ditukar kepada transkrip atau sari kata.
Perkembangan terkini dalam model terkini seperti wav2vec2, Conformer dan Hubert telah memajukan bidang pengecaman pertuturan. Model ini menggunakan teknik yang belajar daripada audio mentah tanpa memerlukan data berlabel manusia, membolehkan mereka menggunakan set data besar pertuturan tidak berlabel dengan cekap. Mereka juga telah dilanjutkan untuk menggunakan sehingga 1,000,000 jam data latihan, jauh melebihi 1,000 jam tradisional yang digunakan dalam set data seliaan akademik, tetapi model yang telah dilatih secara terkawal merentas berbilang set data dan domain didapati menunjukkan Kekukuhan dan generalisasi yang lebih baik untuk dipegang. set data, jadi melaksanakan tugas seperti pengecaman pertuturan masih memerlukan penalaan halus, yang mengehadkan potensi penuhnya. Untuk menyelesaikan masalah ini OpenAI membangunkan Whisper, model yang menggunakan kaedah pengawasan yang lemah.
Artikel ini akan menerangkan jenis set data yang digunakan untuk latihan, kaedah latihan model dan cara menggunakan Whisper
Model Whisper telah dilatih pada set data sebanyak 680,000 jam data audio berlabel, termasuk 117,000 jam pertuturan dalam 96 bahasa berbeza dan 125,000 jam data terjemahan daripada "sebarang bahasa" kepada bahasa Inggeris. Model ini memanfaatkan teks yang dijana Internet yang dijana oleh sistem pengecaman pertuturan automatik (ASR) lain dan bukannya dicipta oleh manusia. Set data juga termasuk pengesan bahasa yang dilatih pada VoxLingua107, koleksi klip pertuturan pendek yang diekstrak daripada video YouTube dan ditandakan berdasarkan bahasa tajuk dan penerangan video, dengan langkah tambahan untuk mengalih keluar positif palsu .
Struktur utama yang digunakan ialah struktur pengekod-penyahkod.
Pensampelan Semula: 16000 Hz
Kaedah pengekstrakan ciri: Kira 80 saluran log perwakilan spektrogram Mel menggunakan tetingkap 25 ms dan langkah 10 ms.
Penormalan Ciri: Input berskala global kepada antara -1 dan 1 dan mempunyai purata purata sifar pada set data yang telah dilatih.
Pengekod/Penyahkod: Pengekod dan penyahkod model menggunakan Transformer.
Pengekod mula-mula memproses perwakilan input menggunakan batang yang mengandungi dua lapisan konvolusi (lebar penapis 3), menggunakan fungsi pengaktifan GELU.
Langkah lapisan konvolusi kedua ialah 2.
Kemudian tambahkan embedding kedudukan sinusoidal pada output batang dan kemudian gunakan blok Transformer pengekod.
Transformer menggunakan blok sisa pra-diaktifkan, dan output pengekod dinormalisasi menggunakan lapisan normalisasi.
Dalam penyahkod, pembenaman kedudukan pembelajaran dan penanda input dan output yang mengikat digunakan ekspres .
Pengekod dan penyahkod mempunyai lebar dan bilangan blok Transformers yang sama.
Untuk menambah baik sifat penskalaan model, ia dilatih pada saiz input yang berbeza.
Latih model dengan FP16, penskalaan kehilangan dinamik dan selari data.
Menggunakan AdamW dan keratan norma kecerunan, kadar pembelajaran linear mereput kepada sifar selepas memanaskan kemas kini 2048 yang pertama.
Gunakan saiz kelompok 256 dan latih model untuk 220 kemas kini, yang bersamaan dengan dua hingga tiga hantaran hadapan pada set data.
Memandangkan model ini dilatih untuk beberapa zaman sahaja, pemasangan lampau bukan merupakan isu penting dan tiada teknik penambahan atau penyelarasan data digunakan. Ini sebaliknya bergantung pada kepelbagaian dalam set data yang besar untuk menggalakkan generalisasi dan keteguhan.
Whisper telah menunjukkan ketepatan yang baik pada set data yang digunakan sebelum ini dan telah diuji terhadap model terkini yang lain.
Hasil perbandingan Whisper pada set data yang berbeza, berbanding dengan wav2vec, ia telah mencapai kadar ralat perkataan terendah setakat ini
Model tidak diuji pada set data timit, jadi untuk menyemak kadar ralat perkataannya, kami akan menunjukkan di sini cara menggunakan Whisper untuk mengesahkan sendiri set data timit, iaitu, gunakan Whisper untuk membina pengecaman pertuturan kami sendiri permohonan .
TiMIT Reading Speech Corpus ialah koleksi data pertuturan yang digunakan khusus untuk penyelidikan pertuturan akustik dan pembangunan serta penilaian sistem pengecaman pertuturan automatik. Ia termasuk rakaman 630 penutur daripada lapan dialek utama Bahasa Inggeris Amerika, setiap satu membaca sepuluh ayat yang kaya secara fonetik. Korpus termasuk transkripsi ortografik, fonetik dan perkataan selaras masa serta fail bentuk gelombang pertuturan 16-bit, 16kHz untuk setiap suara. Korpus ini dibangunkan oleh Massachusetts Institute of Technology (MIT), SRI International (SRI), dan Texas Instruments (TI). Transkripsi korpus TIMIT telah disahkan secara manual, dengan subset ujian dan latihan ditentukan untuk mengimbangi liputan fonetik dan dialek.
Pemasangan:
!pip install git+https://github.com/openai/whisper.git !pip install jiwer !pip install datasets==1.18.3
Arahan pertama akan memasang semua kebergantungan yang diperlukan oleh model whisper. jiwer digunakan untuk memuat turun pakej kadar ralat teks Set data disediakan oleh hugface. Anda boleh memuat turun set data timit.
Import perpustakaan
import whisper from pytube import YouTube from glob import glob import os import pandas as pd from tqdm.notebook import tqdm
Muat set data timit
from datasets import load_dataset, load_metric timit = load_dataset("timit_asr")
Pertimbangkan untuk menapis data Bahasa Inggeris dan keperluan data bukan bahasa Inggeris, kami memilih untuk menggunakan model berbilang bahasa di sini dan bukannya model yang direka khusus untuk bahasa Inggeris.
Tetapi set data TIMIT adalah bahasa Inggeris tulen, jadi kami perlu menggunakan proses pengesanan dan pengecaman bahasa yang sama. Selain itu, set data TIMIT telah dibahagikan kepada set latihan dan pengesahan, dan kami boleh menggunakannya secara langsung.
Untuk menggunakan Whisper, kita mesti terlebih dahulu memahami parameter, saiz dan kelajuan model yang berbeza.
Memuatkan model
model = whisper.load_model('tiny')
kecil boleh digantikan dengan nama model yang dinyatakan di atas.
Fungsi yang mentakrifkan pengesan bahasa
def lan_detector(audio_file): print('reading the audio file') audio = whisper.load_audio(audio_file) audio = whisper.pad_or_trim(audio) mel = whisper.log_mel_spectrogram(audio).to(model.device) _, probs = model.detect_language(mel) if max(probs, key=probs.get) == 'en': return True return False
Fungsi yang menukar pertuturan kepada teks
def speech2text(audio_file): text = model.transcribe(audio_file) return text["text"]
Jalankan fungsi di atas pada saiz model yang berbeza, latihan timit dan ujian Yang diperolehi kadar ralat perkataan adalah seperti berikut:
Berbanding dengan model pengecaman pertuturan yang lain, Whisper bukan sahaja dapat mengecam pertuturan, tetapi juga mentafsirnya Intonasi tanda baca dalam suara seseorang dan memasukkan tanda baca yang sesuai Kami akan menggunakan video u2b untuk ujian di bawah.
Di sini kami memerlukan pytube pakej, yang boleh membantu kami memuat turun dan mengekstrak audio dengan mudah
def youtube_audio(link): youtube_1 = YouTube(link) videos = youtube_1.streams.filter(only_audio=True) name = str(link.split('=')[-1]) out_file = videos[0].download(name) link = name.split('=')[-1] new_filename = link+".wav" print(new_filename) os.rename(out_file, new_filename) print(name) return new_filename,link
Selepas mendapatkan fail wav, kami boleh menggunakan fungsi di atas untuk mengekstrak teks daripadanya.
Kod artikel ini ada di sini
https://drive.google.com/file/d/1FejhGseX_S1Ig_Y5nIPn1OcHN8DLFGIO/view
Di sana banyak lagi Operasi boleh diselesaikan dengan Whisper, dan anda boleh mencubanya sendiri berdasarkan kod dalam artikel ini.
Atas ialah kandungan terperinci Pengecaman pertuturan menggunakan model Whisper OpenAI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!