విష్పర్‌తో PC మరియు RaspberryPiపై వాయిస్ నియంత్రణ

PC మరియు రాస్ప్బెర్రీ పై వాయిస్ నియంత్రణ

అనేది ప్రాజెక్ట్ ఆలోచన వాయిస్-టు-టెక్స్ట్ విస్పర్ మోడల్‌ని ఉపయోగించి మా PC లేదా మా రాస్ప్‌బెర్రీ పై ద్వారా ఇంటరాక్ట్ అవ్వడానికి వాయిస్ సూచనలను ఇవ్వండి.

మేము విస్పర్‌తో లిప్యంతరీకరించబడిన, టెక్స్ట్‌గా మార్చబడే ఆర్డర్‌ను అందిస్తాము మరియు తగిన క్రమాన్ని అమలు చేయడానికి విశ్లేషించాము, ఇది ప్రోగ్రామ్‌ను అమలు చేయడం నుండి RaspberryPi పిన్‌లకు వోల్టేజ్ ఇవ్వడం వరకు ఉంటుంది.

నేను పాత Raspberry Pi 2, మైక్రో USBని ఉపయోగించబోతున్నాను మరియు OpenAI ద్వారా ఇటీవల విడుదల చేయబడిన వాయిస్-టు-టెక్స్ట్ మోడల్‌ని నేను ఉపయోగిస్తాను, విష్పర్. వ్యాసం చివరలో మీరు చూడవచ్చు మరికొంత గుసగుస.

అన్నీ ప్రోగ్రామ్ చేయబడ్డాయి పైథాన్.

వాయిస్ ద్వారా PCని నియంత్రిస్తూ, ఈ వీడియోలో ఇది ఎలా పని చేస్తుందో నేను మీకు ప్రదర్శనను ఇస్తున్నాను.

మౌంటు

దీన్ని PCతో ఉపయోగించడానికి, మాకు మైక్రోఫోన్ మాత్రమే అవసరం.

మీరు దీన్ని RaspberryPiలో మౌంట్ చేయబోతున్నట్లయితే, మీకు USB మైక్రోఫోన్ అవసరం, ఎందుకంటే దానిలో ఉన్న జాక్ అవుట్‌పుట్ కోసం మాత్రమే.

అవసరం:

సాధనం యొక్క సాధారణ ప్రయోజనం వాయిస్ గుర్తింపు. ఇతర పరికరాల ఆపరేషన్‌లో దాన్ని ఏకీకృతం చేయడం నాకు చాలా ఉపయోగకరంగా ఉంది.

  • మైక్రో USB
  • ఆపరేటింగ్ సిస్టమ్‌తో రాస్ప్బెర్రీ PI (రాస్ప్బియన్ ప్రో ఉదాహరణ)
  • ఎలక్ట్రానిక్స్ (LED, వైర్లు, 480 ఓం రెసిస్టర్ మరియు బ్రెడ్‌బోర్డ్)

మేము LEDని పిన్ 17కి కనెక్ట్ చేస్తాము, ఈ అనుభవం కోసం మేము దీన్ని యాక్టివేట్ చేస్తాము మరియు డీయాక్టివేట్ చేస్తాము.

కోడ్ అభివృద్ధి

ఇది మూడు భాగాలుగా విభజించబడింది, మొదటిది, నేను కోడ్ తీసుకున్న ఆడియో రికార్డింగ్ గీక్స్ఫోర్గీక్స్, ఎందుకంటే ఆ పుస్తక దుకాణాలు నాకు తెలియవు. రెండవది, విస్పర్‌తో ఆడియోను టెక్స్ట్‌గా మార్చడం మరియు మూడవది, ఆ టెక్స్ట్‌కి సంబంధించిన చికిత్స మరియు రాస్ప్‌బెర్రీపై ప్రతిస్పందన

పరీక్ష ఉదాహరణలో, నేను లెడ్‌తో మాత్రమే ఇంటరాక్ట్ చేయబోతున్నాను, అది వెలుగులోకి లేదా బ్లింక్ అయ్యేలా చేస్తుంది, కానీ మన అవసరాలకు అనుగుణంగా దాన్ని సర్దుబాటు చేయడానికి మేము స్క్రిప్ట్‌ను అభివృద్ధి చేయవచ్చు.

ఇది రాస్ప్‌బెర్రీ పై 2 అని నాకు తెలుసు మరియు ఇది రాస్‌ప్‌బెర్రీ పై 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 కోసం మైక్రో SD లేదా కనెక్ట్ చేయడానికి USB స్పీకర్‌ని కలిగి లేనందున నేను దీన్ని పరీక్షించలేకపోయాను, కానీ నేను దీన్ని ప్రయత్నించిన వెంటనే అది సులభంగా స్లిప్ అయ్యే కొన్ని లోపాన్ని సరిదిద్దాను.

కోడ్ యొక్క దశల వారీ వివరణ

#!/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

మోడల్‌తో పని చేయడానికి విష్పర్

సమయం, ఎందుకంటే స్క్రిప్ట్‌ను అమలు చేయడానికి పట్టే సమయాన్ని నియంత్రించడానికి నేను దీన్ని ఉపయోగిస్తాను, రాస్ప్‌బెర్రీ యొక్క GPIO పిన్‌లతో పని చేయడానికి gpiozero మరియు ఆడియోను రికార్డ్ చేయడానికి సౌండ్‌డివైస్, స్కిపీ మరియు వావియో

విధులు

నేను 4 ఫంక్షన్లను సృష్టించాను:

  • ప్రధాన ()
  • కాంతి ()
  • రెప్పవేయడానికి ()
  • రికార్డ్_ఆడియో()

ఆన్ చేయండి () మేము ఈ సందర్భంలో పరీక్షించడానికి LEDని కనెక్ట్ చేసిన కోరిందకాయ యొక్క పిన్ 17కి వోల్టేజ్ ఇస్తుంది

def encender ():
    LED(17).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)

మెయిన్ అనేది మెయిన్ ఫంక్షన్, ఫంక్షన్‌ల వెలుపల మనకు ఉన్న ఏకైక విషయం స్క్రిప్ట్ చివరిలో మెయిన్()కి కాల్ అని గమనించండి. ఈ విధంగా స్టార్టప్‌లో, ఇది లైబ్రరీలను దిగుమతి చేసి, ఆపై ఫంక్షన్ కాల్ చేస్తుంది.

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ని వెలిగించే లేదా బ్లింక్ చేసేలా చేసే పిన్‌ని యాక్టివేట్ చేయమని మేము ఇక్కడ చెప్పాము. ఏదైనా కోడ్‌ని అమలు చేయండి లేదా కంప్యూటర్‌ను షట్ డౌన్ చేయండి.

ఇదంతా ప్రాథమిక ఆలోచన. ఇక్కడ నుండి మీరు ప్రాజెక్ట్‌ను అభివృద్ధి చేయవచ్చు మరియు మీకు కావలసిన విధంగా మెరుగుపరచవచ్చు. ప్రతి వ్యక్తి దాని కోసం వేర్వేరు ఉపయోగాలను కనుగొనవచ్చు.

ఈ మాంటేజ్‌తో మనం చేయగలిగే పనులు

ఈ మాంటేజ్‌ని సద్వినియోగం చేసుకోవడానికి నాకు వచ్చిన ఆలోచనలు ఇవి. అస్థిపంజరం సాయుధమైన తర్వాత, మేము వాయిస్ ద్వారా గుర్తుకు వచ్చే ప్రతిదాన్ని సక్రియం చేయడానికి దాన్ని ఉపయోగించవచ్చు, మేము మోటారును ప్రారంభించే రిలేని సక్రియం చేయవచ్చు లేదా స్క్రిప్ట్, ఇమెయిల్ లేదా మరేదైనా అమలు చేసే స్క్రిప్ట్‌ను ప్రారంభించవచ్చు.

గుసగుస ఏమిటి

విష్పర్ ఒక వాల్యూమ్ గుర్తింపు మోడల్, ఇది పెద్ద సంఖ్యలో భాషలతో బహుభాషలో పని చేస్తుంది మరియు ఆంగ్లంలోకి అనువాదాన్ని అనుమతిస్తుంది. ఇది మనకు టెక్స్ట్-టు-వాయిస్ సాధనంగా తెలుసు, కానీ ఇది ఓపెన్ సోర్స్, ఇది స్థిరమైన విస్తరణ సృష్టికర్తలైన OpenAI బృందంచే విడుదల చేయబడింది.

ఒక వ్యాఖ్యను