Rumah >Peranti teknologi >AI >Pengecaman pertuturan menggunakan model Whisper OpenAI

Pengecaman pertuturan menggunakan model Whisper OpenAI

王林
王林ke hadapan
2023-04-12 17:28:031711semak imbas

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.

Pengecaman pertuturan menggunakan model Whisper OpenAI

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

Pengenalan kepada model Whisper

Menggunakan set data:

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 .

Model:

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.

Proses pengekod:

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.

Rajah blok model:

Pengecaman pertuturan menggunakan model Whisper OpenAI

Proses penyahkodan:

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.

Latihan

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.

Kebaikan:

  • Whisper telah dilatih mengenai data sebenar serta data yang digunakan pada model lain dan dengan pengawasan yang lemah.
  • Ketepatan model diuji terhadap pendengar manusia dan prestasinya dinilai.
  • Ia mengesan kawasan tidak bersuara dan menggunakan teknologi NLP untuk menandakan transkrip dengan betul.
  • Model ini boleh berskala dan membolehkan mengekstrak transkrip daripada isyarat audio tanpa membahagikan video kepada ketulan atau kelompok, sekali gus mengurangkan risiko kehilangan bunyi.
  • Model mencapai ketepatan yang lebih tinggi pada pelbagai set data.

Hasil perbandingan Whisper pada set data yang berbeza, berbanding dengan wav2vec, ia telah mencapai kadar ralat perkataan terendah setakat ini

Pengecaman pertuturan menggunakan model Whisper OpenAI

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 .

Pengecaman pertuturan menggunakan model Whisper

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")

Kira kadar ralat Word di bawah saiz model yang berbeza

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.

Pengecaman pertuturan menggunakan model Whisper OpenAI

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:

Pengecaman pertuturan menggunakan model Whisper OpenAI

Pertuturan yang ditranskripsi daripada u2b

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.

Ringkasan

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!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam