blackrock-cio-a spus-bitcoin-ar-ar putea-ajunge-noi-înălțimi.jpg

„Ok, Google!” - Discurs către text în Python cu Deep Learning în 2 minute

Nodul sursă: 1866555

Acest articol a fost publicat ca parte a Blogathon Data Science

Introducere

Este posibil să utilizați frecvent Asistent Google sau a lui Apple Siri sau chiar Amazon Alexa pentru a afla răspunsuri rapide pe web sau pur și simplu pentru a comanda ceva. Acești asistenți AI sunt bine cunoscuți pentru înțelegerea comenzilor noastre de vorbire și pentru îndeplinirea sarcinilor dorite. Ei răspund rapid la comenzile vocale precum „OK, Google. Care este capitala Islandei?” sau „Hei, Siri. Arată-mi rețeta de lasagna.” și afișați rezultatul exact. Te-ai întrebat vreodată cum o fac cu adevărat? Astăzi, vom construi un sistem de recunoaștere a vorbirii foarte simplu, care să ne ia vocea ca intrare și să producă textul corespunzător auzind intrarea.

vorbire în text
Imagine 1

TLDR Arată-mi codul!

Dacă sunteți nerăbdător ca mine, acesta este practic codul sursă complet care poate fi copiat, lipit și executat rapid printr-un fișier Python. Asigurați-vă că aveți un fișier numit „my-audio.wav” ca intrare vocală. De asemenea, asigurați-vă că aveți toate bibliotecile instalate.

În partea ulterioară a tutorialului, vom discuta despre ceea ce face fiecare dintre linii.

Iată codul!

import torch import librosa import numpy as np import soundfile as sf from scipy.io import wavfile din IPython.display import Audio din transformatoare import Wav2Vec2ForCTC, Wav2Vec2Tokenizer
tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
nume_fișier = 'my-audio.wav'
data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate input_audio, _ = librosa.load(file_name, sr=16000) input_values = tokenizer(input_audio, return_tensors="pt").input_values ​​logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = tokenizer.batch_decode(predicted_ids)[0] print(transcription)

Înainte de a începe

Asigurați-vă că verificați codul sursă complet al acestui tutorial în acest depozit Github.

Wav2Vec: Un model revoluționar

wave2vec | vorbire în text
Imagine 2

Vom folosi Wave2Vec — o abordare de ultimă generație de recunoaștere a vorbirii de către Facebook.

Cercetătorii de la Facebook descriu această abordare ca:

Există mii de limbi vorbite în întreaga lume, multe cu mai multe dialecte diferite, ceea ce reprezintă o provocare uriașă pentru construirea unei tehnologii de recunoaștere a vorbirii de înaltă calitate. Pur și simplu, nu este fezabil să obțineți resurse pentru fiecare dialect și fiecare limbă în numeroasele domenii posibile (vorbire citită, vorbire telefonică etc.). Noul nostru model, wav2vec 2.0, folosește auto-supravegherea pentru a depăși granițele învățând din date de antrenament neetichetate pentru a activa sistemele de recunoaștere a vorbirii pentru mai multe limbi, dialecte și domenii. Cu doar o oră de date de antrenament etichetate, wav2vec 2.0 depășește stadiul anterior al tehnicii în subsetul de 100 de ore al benchmarkului LibriSpeech - folosind de 100 de ori mai puține date etichetate.

Iată! Wav2Vec este un model auto-supravegheat care își propune să creeze un sistem de recunoaștere a vorbirii pentru mai multe limbi și dialecte. Cu foarte puține date de antrenament (de aproximativ 100 de ori mai puține etichetate), modelul a reușit să depășească standardul anterior de ultimă generație.

Acest model, ca și BERT, este antrenat prin predicția unităților de vorbire pentru segmentele audio mascate. Audio vocal, pe de altă parte, este un semnal continuu care captează multe caracteristici ale înregistrării fără a fi segmentat clar în cuvinte sau alte unități. Wav2vec 2.0 abordează această problemă prin învățarea unităților de bază de 25 ms pentru a învăța reprezentări contextualizate la nivel înalt. Aceste unități sunt apoi utilizate pentru a caracteriza o gamă largă de înregistrări audio vorbite, sporind robustețea wav2vec. Cu de 100 de ori mai puține date de antrenament etichetate, putem crea algoritmi de recunoaștere a vocii care depășesc cele mai bune abordări semisupravegheate. Datorită învățării auto-supravegheate, Wav2vec 2.0 face parte din modelele de învățare automată care se bazează mai puțin pe intrările etichetate. Autosupravegherea a ajutat la dezvoltarea clasificării imaginilor, a înțelegerii videoclipurilor și a sistemelor de înțelegere a conținutului. Algoritmul ar putea duce la progrese în tehnologia vorbirii pentru o gamă largă de limbi, dialecte și domenii, precum și pentru sistemele actuale.

Alegerea mediului și a bibliotecilor noastre

Vom folosi PyTorch, un cadru de învățare automată open-source pentru această operațiune. În mod similar, vom folosi transformatoare, o bibliotecă de ultimă generație de procesare a limbajului natural de Fata îmbrățișată.

Mai jos este lista tuturor cerințelor pe care ați putea dori să le instalați prin pip. Este recomandat să instalați toate aceste pachete în interiorul a mediu virtual înainte de a începe.

  1. Jupiter Notebook
  2. Lanternă
  3. Librosa
  4. NumPy
  5. Fișier sunet
  6. Scipy
  7. IPython
  8. transformatoare

Lucrul cu codul

Deschideți notebook-ul Jupyter în timp ce activați mediul virtual care conține toate bibliotecile esențiale menționate mai sus.

Odată ce blocnotesul este încărcat, creați un fișier nou și începeți să importați bibliotecile.

import torch import librosa import numpy as np import soundfile as sf from scipy.io import wavfile din IPython.display import Audio din transformatoare import Wav2Vec2ForCTC, Wav2Vec2Tokenizer

Acum că am importat cu succes toate bibliotecile, să încărcăm tokenizerul și modelul. Vom folosi un model pre-antrenat pentru acest exemplu. Un model pre-antrenat este un model care a fost deja antrenat de altcineva pe care îl putem reutiliza în sistemul nostru. Modelul pe care urmează să-l importăm este antrenat de Facebook.

tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

Descărcarea poate dura ceva timp.

După ce ați terminat, vă puteți înregistra vocea și puteți salva fișierul wav chiar lângă fișierul în care scrieți codul. Vă puteți denumi audio „my-audio.wav”.

file_name = 'my-audio.wav' Audio(file_name)

Cu acest cod, puteți reda sunetul în notebook-ul Jupyter.

Următorul: ne vom încărca fișierul audio și vom verifica rata de eșantionare și timpul total.

data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate print('Rata de eșantionare:',framerate,'Hz')

Rezultatul din acest exemplu ar fi diferit de al dumneavoastră, deoarece este posibil să utilizați propriul audio.

Frecvența de eșantionare: 44100 Hz

Acesta este tipărit pentru proba mea audio.

Trebuie să convertim rata de eșantionare la 16000 Hz, deoarece modelul Facebook acceptă rata de eșantionare în acest interval. Vom primi ajutor de la Librosa, o bibliotecă pe care o instalasem mai devreme.

input_audio, _ = librosa.load(file_name, sr=16000)

În cele din urmă, sunetul de intrare este alimentat către tokenizer, care este apoi procesat de model. Rezultatul final va fi stocat în variabila de transcriere.

input_values ​​= tokenizer(input_audio, return_tensors="pt").input_values ​​logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = tokenizer.batch_decode(predicted_ids)[0] print(transcription)

Ieșirea:

„ÎNVĂȚAREA PROFUNDĂ ESTE ULIMITANT”

Ei bine, exact asta am înregistrat în fișierul my-audio.wav.

Continuați și încercați să vă înregistrați propriul discurs și să executați din nou ultimul bloc de cod. Ar trebui să funcționeze în câteva secunde.

Despre autor:

Bună! Numele meu este Akash și lucrez ca dezvoltator Python de peste 4 ani. Pe parcursul carierei mele, am început ca dezvoltator junior Python pe cel mai mare portal de locuri de muncă din Nepal, Merojob. Mai târziu, am fost implicat în știința datelor și în cercetare la prima companie de transport partajat din Nepal, dinte. În prezent, am fost implicat activ în știința datelor, precum și în dezvoltarea web cu Django.

Puteti gasi celelalte proiecte ale mele pe:

https://github.com/akashadhikari

Conectați-mă pe LinkedIn

https://www.linkedin.com/in/akashadh/

E-mail: [e-mail protejat] | [e-mail protejat]

Site-ul web (lucru pe blogul Data Science): https://akashadhikari.github.io/

Surse de imagine:

Imaginea 1 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/

Imaginea 2 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/

Note de final:

Vă mulțumim pentru citirea!

Sper că ți-a plăcut să citești articolul. Dacă vi s-a părut util, vă rugăm să-l distribuiți prietenilor tăi și pe rețelele sociale. Pentru orice întrebări, sugestii, critici constructive sau orice altă discuție, vă rugăm să-mi trimiteți un ping aici în comentarii sau mă puteți contacta direct prin e-mail.

Sursa: https://www.analyticsvidhya.com/blog/2021/09/ok-google-speech-to-text-in-python-with-deep-learning-in-2-minutes/

Timestamp-ul:

Mai mult de la Analize Vidhya