blackrock-cio-said-bitcoin-could-reach-new-heights.jpg

"Ok, Google!" - Puhe tekstiksi Pythonissa ja syväoppiminen 2 minuutissa

Lähdesolmu: 1866555

Tämä artikkeli julkaistiin osana Data Science Blogathon

esittely

Saatat käyttää usein google Assistant tai Applen Siri tai jopa Amazon Alexa saadaksesi nopeasti vastauksia verkosta tai yksinkertaisesti komentaa jotain. Nämä tekoälyavustajat tunnetaan hyvin puhekomentojemme ymmärtämisestä ja haluttujen tehtävien suorittamisesta. He vastaavat nopeasti puhekomentoihin, kuten ”OK, Google. Mikä on Islannin pääkaupunki? " tai "Hei, Siri. Näytä minulle lasagnen resepti." ja näyttää tarkan tuloksen. Oletko koskaan miettinyt, miten he todella tekevät sen? Tänään rakennamme hyvin yksinkertaisen puheentunnistusjärjestelmän, joka ottaa äänemme syötteeksi ja tuottaa vastaavan tekstin kuuntelemalla tuloa.

puheen tekstiksi
Image 1

TLDR Näytä koodi!

Jos olet kärsimätön kuten minä, tämä on käytännössä koko lähdekoodi, joka voidaan nopeasti kopioida, liittää ja suorittaa Python -tiedoston kautta. Varmista, että puhesyöttösi on tiedosto nimeltä my-audio.wav. Varmista myös, että kaikki kirjastot on asennettu.

Opetusohjelman myöhemmässä osassa keskustelemme siitä, mitä kukin rivi tekee.

Tässä koodi!

tuonti taskulamppu tuonti librosa tuonti numpy np: nä tuonti äänitiedosto sf: nä scipy.io: sta tuonti wav -tiedosto IPythonista. näyttö tuonti ääni muuntajista tuonti Wav2Vec2ForCTC, Wav2Vec2Tokenizer
tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
file_name = 'my-audio.wav'
data = wavfile.read (tiedoston_nimi) framerate = data [0] sounddata = data [1] time = np.arange (0, len (sounddata))/framerate input_audio, _ = librosa.load (tiedoston_nimi, sr = 16000) input_values = tokenizer (input_audio, return_tensors = "pt"). input_values ​​logits = malli (input_values) .logits predicated_ids = torch.argmax (logits, dim = -1) transcription = tokenizer.batch_decode (predicated_ids) [0] print (transcription)

Ennen kuin aloitamme

Muista tarkistaa tämän opetusohjelman koko lähdekoodi tämä Github -repo.

Wav2Vec: vallankumouksellinen malli

wave2vec | puhe tekstiksi
Image 2

Me käytämme Wave2Vec -Facebookin viimeisin puheentunnistusmenetelmä.

Facebookin tutkijat kuvaavat tätä lähestymistapaa seuraavasti:

Maailmassa puhutaan tuhansia kieliä, joista monilla on useita eri murteita, mikä on valtava haaste laadukkaan puheentunnistustekniikan rakentamiselle. Ei yksinkertaisesti ole mahdollista hankkia resursseja jokaiselle murteelle ja jokaiselle kielelle monilta mahdollisilta aloilta (lukupuhe, puhelinpuhe jne.). Uusi mallimme, wav2vec 2.0, käyttää itsevalvontaa rajojen ylittämiseen oppimalla merkitsemättömistä harjoitustiedoista ja mahdollistaa puheentunnistusjärjestelmät monille muille kielille, murteille ja alueille. Vain yhden tunnin merkityillä harjoitustiedoilla wav2vec 2.0 ylittää LibriSpeech-vertailuarvon 100 tunnin osajoukon edellisen tason-käyttämällä 100 kertaa vähemmän merkittyä dataa.

Ole hyvä! Wav2Vec on itseohjattu malli, jonka tavoitteena on luoda puheentunnistusjärjestelmä useille kielille ja murteille. Hyvin vähän koulutustietoja (noin 100 kertaa vähemmän merkittyjä) malli on pystynyt ylittämään edellisen huipputason vertailuarvon.

Tämä malli, kuten BERT, on koulutettu ennustamalla puheyksiköt peitetyille äänisegmenteille. Puheääni puolestaan ​​​​on jatkuva signaali, joka kaappaa monia tallenteen piirteitä ilman, että se on selvästi segmentoitu sanoiksi tai muihin yksiköihin. Wav2vec 2.0 korjaa tämän ongelman oppimalla 25 ms: n perusyksiköt korkean tason asiayhteyteen perustuvien esitysten oppimiseksi. Näitä yksiköitä käytetään sitten luonnehtimaan laaja valikoima puhuttuja äänitallenteita, mikä parantaa wav2vecin kestävyyttä. 100x vähemmän merkityillä harjoitustiedoilla voimme luoda puheentunnistusalgoritmeja, jotka ylittävät parhaiten puolivalvotut lähestymistavat. Itseohjatun oppimisen ansiosta Wav2vec 2.0 on osa koneoppimismalleja, jotka luottavat vähemmän merkittyihin tietoihin. Itsevalvonta on auttanut kuvan luokittelun, videon ymmärtämisen ja sisällön ymmärtämisen järjestelmien kehittämisessä. Algoritmi voi johtaa puhetekniikan kehitykseen monilla kielillä, murteilla ja aloilla sekä nykyisissä järjestelmissä.

Valitsemme ympäristön ja kirjastot

Me käytämme PyTorch, avoimen lähdekoodin koneoppimiskehys tätä toimintoa varten. Samoin käytämme Muuntajat, uusin Natural Language Processing -kirjasto Halaaminen kasvot.

Alla on luettelo kaikista vaatimuksista, jotka haluat asentaa pip: n kautta. On suositeltavaa asentaa kaikki nämä paketit a virtuaalinen ympäristö ennen etenemistä.

  1. Jupyter Notebook
  2. Taskulamppu
  3. Librosa
  4. Nöpö
  5. Äänitiedosto
  6. Opi
  7. IPython
  8. Muuntajat

Työskentely koodin kanssa

Avaa Jupyter -muistikirja samalla, kun aktivoit virtuaalisen ympäristön, joka sisältää kaikki yllä mainitut olennaiset kirjastot.

Kun muistikirja on ladattu, luo uusi tiedosto ja aloita kirjastojen tuonti.

tuonti taskulamppu tuonti librosa tuonti numpy np: nä tuonti äänitiedosto sf: nä scipy.io: sta tuonti wav -tiedosto IPythonista. näyttö tuonti ääni muuntajista tuonti Wav2Vec2ForCTC, Wav2Vec2Tokenizer

Nyt kun olemme tuoneet onnistuneesti kaikki kirjastot, lataa tokenizer ja malli. Tässä esimerkissä käytämme esikoulutettua mallia. Esikoulutettu malli on malli, jonka joku muu on jo kouluttanut ja jota voimme käyttää uudelleen järjestelmässämme. Mallin, jonka aiomme tuoda, on kouluttanut Facebook.

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

Tämän lataaminen voi kestää jonkin aikaa.

Kun olet valmis, voit äänittää äänesi ja tallentaa wav-tiedoston sen tiedoston viereen, johon kirjoitat koodiasi. Voit nimetä äänesi "my-audio.wav": ksi.

file_name = 'my-audio.wav' Ääni (tiedoston_nimi)

Tällä koodilla voit toistaa ääntäsi Jupyter -muistikirjassa.

Seuraavaksi: lataamme äänitiedostomme ja tarkistamme näytteenottotaajuutemme ja kokonaisajan.

data = wavfile.read (tiedoston_nimi) framerate = data [0] sounddata = data [1] time = np.arange (0, len (sounddata))/framerate print ('Näytteenottotaajuus:', kehysnopeus, 'Hz')

Tämän esimerkin tulos eroaa omastasi, koska saatat käyttää omaa ääntäsi.

Näytteenottotaajuus: 44100 Hz

Tämä tulostetaan näyteäänelleni.

Meidän on muutettava näytteenottotaajuus 16000 Hz: ksi, koska Facebookin malli hyväksyy näytteenottotaajuuden tällä alueella. Haemme apua Librosalta, kirjastolta, jonka olimme asentaneet aiemmin.

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

Lopuksi tuloääni syötetään tokenizeriin, jota malli sitten käsittelee. Lopputulos tallennetaan transkriptiomuuttujaan.

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

Tulos:

"Syvä oppiminen on hämmästyttävää"

No, juuri sitä olin tallentanut my-audio.wav-tiedostoon.

Jatka ja yritä tallentaa oma puheesi ja suorittaa viimeinen koodilohko uudelleen. Sen pitäisi toimia sekunneissa.

Author:

Hei siellä! Nimeni on Akash ja olen työskennellyt Python-kehittäjänä yli 4 vuotta. Aloitin urani aikana Junior Python -kehittäjänä Nepalin suurimmalla työpaikkaportaalilla, Merojob. Myöhemmin olin mukana datatieteessä ja tutkimuksessa Nepalin ensimmäisessä kyydinjakoyrityksessä, Soitella. Tällä hetkellä olen ollut aktiivisesti mukana tietotieteessä sekä verkkokehityksessä Djangon kanssa.

Muut projektini löytyvät osoitteesta:

https://github.com/akashadhikari

Yhdistä minut LinkedIniin

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

Sähköposti: [sähköposti suojattu] | [sähköposti suojattu]

Verkkosivusto (Työskentely Data Science Blogissa): https://akashadhikari.github.io/

Kuvalähteet:

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

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

Loppuhuomautukset:

Kiitos käsittelyssä!

Toivottavasti pidit artikkelin lukemisesta. Jos pidit sitä hyödyllisenä, jaa se myös ystäviesi kanssa sosiaalisessa mediassa. Jos sinulla on kysyttävää, ehdotuksia, rakentavaa kritiikkiä tai muuta keskustelua, lähetä minulle ping täällä kommenteissa tai voit ottaa minuun yhteyttä suoraan sähköpostitse.

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

Aikaleima:

Lisää aiheesta Analyysi Vidhya