Компьютер болон RaspberryPi дээр Whisper ашиглан дуут удирдлага

компьютер болон бөөрөлзгөнө pi дээр дуут удирдлага

Төслийн санаа нь Voice-to Text Whisper загварыг ашиглан компьютер эсвэл Raspberry Pi-ээр дамжуулан харилцахын тулд дуут заавар өгнө үү..

Бид Whisper ашиглан бичвэр болгон, текст болгон хувиргаж, дараа нь програмыг гүйцэтгэхээс эхлээд RaspberryPi тээглүүрүүдэд хүчдэл өгөх хүртэлх зохих дарааллыг гүйцэтгэхийн тулд дүн шинжилгээ хийх тушаал өгнө.

Би хуучин Raspberry Pi 2, микро USB ашиглах гэж байгаа бөгөөд OpenAI-аас саяхан гаргасан Voice to text загварыг ашиглах болно. Шивнэх. Өгүүллийн төгсгөлд та харж болно арай илүү шивнэх.

бүгд програмчлагдсан Python.

Би энэ видеон дээр компьютерийг дуу хоолойгоор удирдаж байгааг харуулсан үзүүлбэрийг үлдээж байна.

Чуулган

Үүнийг компьютерт ашиглахын тулд бидэнд зөвхөн микрофон хэрэгтэй болно.

Хэрэв та үүнийг RaspberryPi дээр холбох гэж байгаа бол танд USB микрофон хэрэгтэй болно, учир нь түүний оролт нь зөвхөн гаралтын зориулалттай.

Бидэнд хэрэгтэй:

Энэ хэрэгслийн ерөнхий зорилго нь дуу хоолойг таних явдал юм. Үүнийг бусад төхөөрөмжүүдийн үйл ажиллагаанд нэгтгэх нь надад маш хэрэгтэй гэж бодож байна.

  • Микро USB
  • Үйлдлийн системтэй Raspberry PI (Raspbian pro жишээ)
  • Электрон төхөөрөмж (LED, утас, 480 ом эсэргүүцэл ба талх самбар)

Бид LED-ийг 17-р зүү рүү холбодог бөгөөд энэ нь бидний туршлагыг идэвхжүүлж, идэвхгүй болгох болно.

код боловсруулах

Энэ нь гурван хэсэгт хуваагдсан бөгөөд эхнийх нь миний кодыг авсан аудио бичлэг юм geeksforgeeks, учир нь би тэдгээр номын дэлгүүрүүдийг мэдэхгүй. Хоёрдугаарт, Whisper ашиглан аудиог текст болгон хувиргах, гурав дахь нь, RaspberryPi дээрх текстийг боловсруулах, хариу үйлдэл хийх.

Туршилтын жишээн дээр би зөвхөн LED-тэй харьцаж, гэрэлтүүлэх эсвэл анивчих болно, гэхдээ бид үүнийг өөрсдийн хэрэгцээнд тохируулахын тулд скриптийг боловсруулж болно.

Энэ бол Raspberry Pi 2 бөгөөд Raspberry Pi 4-ээс хамаагүй удаан байх болно гэдгийг би мэдэж байна, гэхдээ туршилтын хувьд энэ нь зүгээр юм.

Үүнийг ажиллуулахын өмнө та дараах зүйлийг суулгах хэрэгтэй

#Instalar whisper
pip install git+https://github.com/openai/whisper.git
sudo apt update && sudo apt install ffmpeg

#para que funcione la grabación de audio
python3 -m pip install sounddevice --user
pip install git+https://github.com/WarrenWeckesser/wavio.git

#si vas a instalarlo en la raspberry
#dar permisos para usar la GPIO
sudo apt install python3-gpiozero
sudo usermode -aG gpio <username>

бүх код

#!/usr/bin/env python3
import whisper
import time
from gpiozero import LED
import sounddevice as sd
from scipy.io.wavfile import write
import wavio as wv

        
def main ():
    inicio = time.time()
    record_audio ()

    model = whisper.load_model("tiny")
    result = model.transcribe("audio1.wav")
    words = result["text"].split()

    for word in words:
        word = word.replace(',', '').replace('.', '').lower()
        if word == 'enciende' or 'encender':
            encender()
            break
        if word == 'parpadea' or 'parpadear':
            parpadear()
            break      
    fin = time.time()
    print(fin-inicio)

def encender ():
    LED(17).on()

def parpadear ():
    light = LED(17)
    while True:
        light.on()
        sleep(1)
        light.off()
        sleep(1)

def record_audio ():
    # Sampling frequency
    freq = 44100
    # Recording duration
    duration = 5
    # Start recorder with the given values
    # of duration and sample frequency
    recording = sd.rec(int(duration * freq),
                    samplerate=freq, channels=2)
    # Record audio for the given number of seconds
    sd.wait()
    # This will convert the NumPy array to an audio
    # file with the given sampling frequency
    write("audio0.wav", freq, recording)
    # Convert the NumPy array to audio file
    wv.write("audio1.wav", recording, freq, sampwidth=2)
        
main ()


#dar permisos para usar la GPIO
#sudo apt install python3-gpiozero
#sudo usermode -aG gpio <username>

#Instalar whisper
#pip install git+https://github.com/openai/whisper.git
#sudo apt update &amp;&amp; sudo apt install ffmpeg

Надад RaspberryPi-д зориулсан microSD эсвэл холбох USB чанга яригч байхгүй тул би үүнийг туршиж чадаагүй ч оролдоод үзэхэд амархан нэвтэрдэг алдааг зассан.

Кодын алхам алхмаар тайлбар

#!/usr/bin/env python3

Бид ямар хэлээр програмчлагдсан, ямар орчуулагч ашиглахыг төхөөрөмжид хэлэхийн тулд Shebang. Хэдийгээр энэ нь өчүүхэн мэт боловч үүнийг тавихгүй байх нь олон тохиолдолд алдаа гаргадаг.

импортын номын сангууд

import whisper
import time
from gpiozero import LED
import sounddevice as sd
from scipy.io.wavfile import write
import wavio as wv

Загвар өмсөгчтэй ажиллахын тулд шивнэх

цаг, учир нь би үүнийг скриптийг гүйцэтгэхэд шаардагдах хугацааг хянахын тулд gpiozero нь Raspberry болон sounddevice-ийн GPIO зүү, scipy болон wavio-той ажиллахад аудио бичихэд ашигладаг.

Чиг үүрэг

Би 4 функц үүсгэсэн:

  • үндсэн ()
  • гэрэл ()
  • анивчих ()
  • бичлэг_аудио()

асаах () нь зүгээр л бөөрөлзгөнөний 17-р зүү дээр хүчдэл өгдөг бөгөөд энэ тохиолдолд бид шалгахын тулд LED-ийг холбосон болно.

def encender ():
    LED(17).on()

blink() нь on() шиг боловч нэг гогцоо дотор асааж унтрааснаар лед анивчдаг.

def parpadear ():
    light = LED(17)
    while True:
        light.on()
        sleep(1)
        light.off()
        sleep(1)

record_audio() ашиглан бид аудио файлыг бичдэг

def record_audio ():
    # Sampling frequency
    freq = 44100
    # Recording duration
    duration = 5
    # Start recorder with the given values
    # of duration and sample frequency
    recording = sd.rec(int(duration * freq),
                    samplerate=freq, channels=2)
    # Record audio for the given number of seconds
    sd.wait()
    # This will convert the NumPy array to an audio
    # file with the given sampling frequency
    write("audio0.wav", freq, recording)
    # Convert the NumPy array to audio file
    wv.write("audio1.wav", recording, freq, sampwidth=2)

Main бол үндсэн функц бөгөөд бидэнд функцээс гадуур байгаа цорын ганц зүйл бол скриптийн төгсгөлд байгаа main() руу залгах явдал гэдгийг анхаарна уу. Энэ нь эхлүүлэх үед номын сангуудыг импортлох бөгөөд дараа нь функцийг дуудах болно.

def main ():
    inicio = time.time()
    record_audio ()

    model = whisper.load_model("tiny")
    result = model.transcribe("audio1.wav")
    words = result["text"].split()

    for word in words:
        word = word.replace(',', '').replace('.', '').lower()
        if word == 'enciende' or 'encender':
            encender()
            break
        if word == 'parpadea' or 'parpadear':
            parpadear()
            break      
    fin = time.time()
    print(fin-inicio)

Бид функцийг гүйцэтгэж эхлэх цагаа хэмнээд дараа нь бидний зааврыг .wav, .mp3 гэх мэт файлд бичих аудио бичлэгийн функцийг дууддаг бөгөөд үүнийг дараа нь текст болгон хөрвүүлэх болно.

    inicio = time.time()
    record_audio ()

  

Бид аудиотой болмогц шивнэх дуудагдах бөгөөд бид түүнд ашиглахыг хүссэн загвараа хэлэх болно, 5 загвар байгаа бөгөөд бид жижигхэн ашиглах болно, гэхдээ энэ нь хамгийн хурдан бөгөөд аудио нь энгийн байх тул хамгийн тодорхойгүй, ердөө 3, 4 үг.

     model = whisper.load_model("tiny")
    result = model.transcribe("audio1.wav")

  

Үүний тусламжтайгаар бид аудиог текст болгон хувиргаж, хувьсагчид хадгалсан болно. Үүнийг жаахан өөрчилье.

Бид үр дүнг аудионы үг бүрийн жагсаалт болгон хувиргадаг

     words = result["text"].split()

  

Мөн бүх зүйл манай төхөөрөмжтэй харилцахад бэлэн байна. Одоо бид хүссэн нөхцөлөө бүрдүүлэх л үлдлээ.

Аудио нь X гэсэн үгтэй бол Y-г хий. Жагсаалтад байгаа үгс байгаа тул нөхцөл нэмэхэд маш хялбар байдаг

         for word in words:
        word = word.replace(',', '').replace('.', '').lower()
        if word == 'enciende' or 'encender':
            encender()
            break
        if word == 'parpadea' or 'parpadear':
            parpadear()
            break   

  

Шугам

         
        word = word.replace(',', '').replace('.', '').lower()


  

Би үүнийг аудио дээрх үгсийг жижиг үсгээр хөрвүүлэх, таслал, цэгийг арилгахад ашигладаг. Ийм байдлаар харьцуулахдаа алдаа гаргахаас зайлсхий

Хэрэв бидний сонгосон үгсийн аль нэг нь байх нөхцөл хангагдсан бол энэ нь бидний хүссэн зүйлийг хийх функцийг дууддаг.

Энд бид LED-ийг асаах эсвэл анивчих PIN кодыг идэвхжүүлэхийг зааж өгдөг. Зарим кодыг ажиллуул, эсвэл компьютерээ унтраа.

Энэ бүхэн бол үндсэн санаа юм. Эндээс та төслөө боловсруулж, хүссэнээрээ сайжруулах боломжтой. Хүн бүр өөр өөр хэрэглээг олж чадна.

Энэ монтажаар хийж болох зүйлс

Энэ монтажийн давуу талыг ашиглахын тулд эдгээр санаанууд надад ирдэг. Араг ясыг зэвсэглэсний дараа бид үүнийг ашиглан санаанд орж буй бүх зүйлийг дуу хоолойгоор идэвхжүүлж, мотор ажиллуулдаг релейг идэвхжүүлж, скрипт, имэйл эсвэл бусад зүйлийг ажиллуулж болно.

Шивнээ гэж юу вэ

Whisper бол дуу таних загвар бөгөөд олон хэлээр олон хэл дээр ажилладаг бөгөөд англи хэл рүү орчуулах боломжийг олгодог. Энэ бол бидний мэддэг текстээс дуу хоолой руу шилжих хэрэгсэл боловч энэ бол Stable Diffusion-ийг бүтээгч OpenAI багийн гаргасан Open Source юм.

Deja НҮБ-ын comentario