PC اور RaspberryPi پر وائس کنٹرول کے ساتھ وائس کنٹرول

PC اور raspberry pi پر صوتی کنٹرول

منصوبے کا خیال ہے وائس ٹو ٹیکسٹ وِسپر ماڈل کا استعمال کرتے ہوئے ہمارے PC یا Raspberry Pi کے ذریعے بات چیت کرنے کے لیے صوتی ہدایات دیں۔.

ہم ایک آرڈر دیں گے جسے Whisper کے ساتھ نقل کیا جائے گا، متن میں تبدیل کیا جائے گا اور پھر مناسب ترتیب کو انجام دینے کے لیے تجزیہ کیا جائے گا، جو کہ کسی پروگرام کو چلانے سے لے کر RaspberryPi پنوں کو وولٹیج دینے تک ہو سکتا ہے۔

میں ایک پرانا Raspberry Pi 2، ایک مائیکرو USB استعمال کرنے جا رہا ہوں اور میں وائس ٹو ٹیکسٹ ماڈل استعمال کروں گا جو حال ہی میں OpenAI کے ذریعہ جاری کیا گیا ہے، کسبی. مضمون کے آخر میں آپ دیکھ سکتے ہیں۔ تھوڑا اور سرگوشی.

تمام پروگرام میں ازگر.

میں آپ کے لیے ایک مظاہرہ چھوڑتا ہوں کہ یہ اس ویڈیو میں کیسے کام کرتا ہے، آواز کے ذریعے پی سی کو کنٹرول کرتا ہے۔

اسمبلی

اسے پی سی کے ساتھ استعمال کرنے کے لیے، ہمیں صرف ایک مائکروفون کی ضرورت ہوگی۔

اگر آپ اسے RaspberryPi پر نصب کرنے جا رہے ہیں، تو آپ کو USB مائیکروفون کی ضرورت ہوگی، کیونکہ اس میں جو جیک ہے وہ صرف آؤٹ پٹ کے لیے ہے۔

ہمیں ضرورت ہے:

جیسا کہ ٹول کا عمومی مقصد آواز کی شناخت ہے۔ مجھے اسے دوسرے آلات کے آپریشن میں ضم کرنا بہت مفید لگتا ہے۔

  • مائیکرو USB
  • آپریٹنگ سسٹم کے ساتھ Raspberry PI (Raspbian pro مثال)
  • الیکٹرانکس (ایل ای ڈی، تاریں، 480 اوہم ریزسٹر اور بریڈ بورڈ)

ہم LED کو پن 17 سے جوڑتے ہیں، جسے ہم اس تجربے کے لیے چالو اور غیر فعال کر دیں گے۔

کوڈ کی ترقی

اسے تین حصوں میں تقسیم کیا گیا ہے، پہلا، آڈیو ریکارڈنگ جس کے لیے میں نے کوڈ لیا ہے۔ geeksforgeeksکیونکہ میں ان کتابوں کی دکانوں کو نہیں جانتا۔ دوسرا، وسپر کے ساتھ آڈیو کو ٹیکسٹ میں تبدیل کرنا اور تیسرا، RaspberryPi میں اس متن اور ردعمل کا علاج

ٹیسٹ کی مثال میں میں صرف ایل ای ڈی کے ساتھ بات چیت کرنے جا رہا ہوں، اسے روشن یا پلک جھپکتا ہے، لیکن ہم اسکرپٹ کو اپنی ضروریات کے مطابق ڈھال سکتے ہیں۔

میں جانتا ہوں کہ یہ ایک 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 کے لیے مائیکرو ایس ڈی نہیں ہے، یا کنیکٹ کرنے کے لیے کوئی 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 فنکشنز بنائے ہیں:

  • اہم ()
  • روشنی ()
  • پلک جھپکنا ()
  • ریکارڈ_آڈیو()

آن () راسبیری کے پن 17 کو صرف وولٹیج دیتا ہے جہاں ہم نے اس معاملے میں ایل ای ڈی کو جانچنے کے لیے جوڑا ہے۔

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() ہے۔ اس طرح اسٹارٹ اپ پر، یہ لائبریریوں کو امپورٹ کرے گا اور پھر فنکشن کال کرے گا۔

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


  

میں اسے آڈیو میں الفاظ کو چھوٹے حروف میں تبدیل کرنے اور کوما اور پیریڈز کو ہٹانے کے لیے استعمال کرتا ہوں۔ اور اس طرح موازنہ میں غلطیوں سے بچیں۔

ہر ایک میں اگر ہمارے منتخب کردہ الفاظ میں سے کسی ایک کے ہونے کی شرط پوری ہو جاتی ہے، تو اسے ایک فنکشن کہا جاتا ہے جو وہ کرے گا جو ہم چاہتے ہیں،

یہ وہ جگہ ہے جہاں ہم اسے ایک PIN کو فعال کرنے کو کہتے ہیں جو LED کو روشن کرے یا اسے جھپکائے۔ یا تو کچھ کوڈ چلائیں، یا کمپیوٹر کو بند کر دیں۔

یہ سب ایک بنیادی خیال ہے۔ یہاں سے آپ پروجیکٹ کو تیار کرسکتے ہیں اور اسے اپنی مرضی کے مطابق بہتر کرسکتے ہیں۔ ہر شخص اس کے لیے مختلف استعمال تلاش کرسکتا ہے۔

چیزیں جو ہم اس مانٹیج کے ساتھ کر سکتے ہیں۔

یہ وہ خیالات ہیں جو اس مانٹیج سے فائدہ اٹھانے کے لیے میرے پاس آتے ہیں۔ ایک بار جب کنکال مسلح ہو جاتا ہے، ہم اسے آواز کے ذریعے ذہن میں آنے والی ہر چیز کو چالو کرنے کے لیے استعمال کر سکتے ہیں، ہم ایک ریلے کو چالو کر سکتے ہیں جو موٹر کو شروع کرتا ہے یا ہم ایک اسکرپٹ شروع کر سکتے ہیں جو اسکرپٹ، ای میل یا کسی بھی چیز پر عمل درآمد کرے۔

سرگوشی کیا ہے؟

Whisper ایک vol recognition model ہے، کثیر زبانوں میں بڑی تعداد میں زبانوں کے ساتھ کام کرتا ہے اور انگریزی میں ترجمہ کی اجازت دیتا ہے۔ یہ وہی ہے جسے ہم ٹیکسٹ ٹو وائس ٹول کے طور پر جانتے ہیں، لیکن یہ اوپن سورس ہے، جسے OpenAI ٹیم نے جاری کیا ہے، جو کہ Stable Diffusion کے تخلیق کار ہیں۔

ایک تبصرہ چھوڑ دو