විස්පර් සමඟ PC සහ RaspberryPi මත හඬ පාලනය

pc සහ raspberry pi මත හඬ පාලනය

ව්යාපෘතියේ අදහස නම් Voice-to-text Whisper ආකෘතිය භාවිතයෙන් අපගේ පරිගණකය හෝ අපගේ Raspberry Pi හරහා අන්තර් ක්‍රියා කිරීමට හඬ උපදෙස් දෙන්න.

වැඩසටහනක් ක්‍රියාත්මක කිරීමේ සිට RaspberryPi කටුවලට වෝල්ටීයතාවයක් ලබා දීම දක්වා විය හැකි සුදුසු අනුපිළිවෙල ක්‍රියාත්මක කිරීම සඳහා විස්පර් සමඟ පිටපත් කර, පෙළ බවට පරිවර්තනය කර පසුව විශ්ලේෂණය කරන ඇණවුමක් අපි ලබා දෙන්නෙමු.

මම පැරණි Raspberry Pi 2, මයික්‍රෝ USB එකක් භාවිතා කිරීමට යන අතර මම OpenAI විසින් මෑතකදී නිකුත් කරන ලද Voice-to-text ආකෘතිය භාවිතා කරමි, කෝපයට. ලිපිය අවසානයේ ඔබට දැක ගත හැකිය තව ටිකක් කෙඳිරිය.

සියලුම වැඩසටහන්ගත කර ඇත Python මීට උදාහරණ.

කටහඬින් පරිගණකය පාලනය කරමින් එය ක්‍රියා කරන ආකාරය පිළිබඳ නිරූපණයක් මම ඔබට මෙම වීඩියෝවෙන් තබමි.

එකලස් කිරීම

පරිගණකය සමඟ එය භාවිතා කිරීමට, අපට අවශ්ය වන්නේ මයික්රොෆෝනයක් පමණි.

ඔබ එය RaspberryPi මත සවි කිරීමට යන්නේ නම්, ඔබට USB මයික්‍රෆෝනයක් අවශ්‍ය වනු ඇත, මන්ද එහි ඇති ජැක් ප්‍රතිදානය සඳහා පමණි.

අවශ්‍යතාවය:

මෙවලමෙහි පොදු අරමුණ ලෙස හඬ හඳුනාගැනීමයි. වෙනත් උපාංගවල ක්‍රියාකාරිත්වයට එය අනුකලනය කිරීම ඉතා ප්‍රයෝජනවත් බව මට පෙනේ.

  • මයික්රෝ USB
  • මෙහෙයුම් පද්ධතිය සහිත Raspberry PI (Raspbian pro උදාහරණයක්)
  • ඉලෙක්ට්‍රොනික උපකරණ (LED, වයර්, 480 ohm ප්‍රතිරෝධක සහ පාන් පුවරුව)

අපි LED එක පින් 17 වෙත සම්බන්ධ කරමු, එය මෙම අත්දැකීම සඳහා අපි සක්‍රිය කර අක්‍රිය කරන්නෙමු.

කේත සංවර්ධනය

එය කොටස් තුනකට බෙදා ඇත, පළමු, මම කේතයක් ලබා ගත් ශ්රව්ය පටිගත කිරීම geeksforgeeks, මම ඔය පොත් කඩ දන්නේ නැති නිසා. දෙවැන්න, විස්පර් සමඟ ශ්‍රව්‍ය පෙළ බවට පරිවර්තනය කිරීම සහ තෙවැන්න, එම පෙළට ප්‍රතිකාර කිරීම සහ 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 සඳහා මයික්‍රෝ එස්ඩී එකක් හෝ සම්බන්ධ වීමට 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

ආකෘතිය සමඟ වැඩ කිරීමට විස්පර්

කාලය, මක්නිසාද යත්, ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමට ගතවන කාලය පාලනය කිරීමට මම එය භාවිතා කරන නිසා, Raspberry හි GPIO පින් සමඟ වැඩ කිරීමට gpiozero සහ ශ්‍රව්‍ය පටිගත කිරීම සඳහා sounddevice, scipy සහ wavio

කාර්යයන්

මම කාර්යයන් 4 ක් නිර්මාණය කර ඇත:

  • ප්රධාන ()
  • ආලෝකය ()
  • ඇසිපිය හෙළීමට ()
  • record_audio()

සක්‍රිය කරන්න () හුදෙක් අප සම්බන්ධ කර ඇති රාස්ප්බෙරි වල 17 පින් එකට වෝල්ටීයතාවයක් ලබා දෙයි

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

blink() යනු on() වැනි නමුත් එය ලූපයක් තුළ එය සක්‍රිය සහ අක්‍රිය කිරීමෙන් led එක දිලිසෙනවා.

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

  

මේකෙන් අපි Audio එක text වලට convert කරලා variable එකක save කරලා තියෙනවා. අපි එය ටිකක් වෙනස් කරමු.

අපි ශ්‍රව්‍යයේ එක් එක් වචන සමඟ ප්‍රතිඵල ලැයිස්තුවක් බවට පරිවර්තනය කරමු

     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 එකක් සක්‍රිය කිරීමට අපි එයට කියන්නේ මෙතැනදීය. එක්කෝ කේතයක් ධාවනය කරන්න, නැතහොත් පරිගණකය වසා දමන්න.

මේ සියල්ල මූලික අදහසකි. මෙතැන් සිට ඔබට ව්‍යාපෘතිය සංවර්ධනය කර ඔබට අවශ්‍ය පරිදි එය වැඩිදියුණු කළ හැකිය. එක් එක් පුද්ගලයාට ඒ සඳහා විවිධ ප්‍රයෝජන සොයාගත හැකිය.

මේ මොන්ටේජ් එකෙන් අපිට කරන්න පුළුවන් දේවල්

මේ මොන්ටේජ් එකෙන් ප්‍රයෝජන ගන්න මට එන අදහස්. ඇටසැකිල්ල සන්නද්ධ වූ පසු, අපට කටහඬින් සිතට එන සෑම දෙයක්ම සක්‍රිය කිරීමට එය භාවිතා කළ හැකිය, අපට මෝටරයක් ​​​​ආරම්භ කරන රිලේ එකක් සක්‍රිය කළ හැකිය, නැතහොත් අපට ස්ක්‍රිප්ට් එකක්, විද්‍යුත් තැපෑලක් හෝ වෙනත් ඕනෑම දෙයක් ක්‍රියාත්මක කරන ස්ක්‍රිප්ට් එකක් දියත් කළ හැකිය.

විස්පර් යනු කුමක්ද?

විස්පර් යනු වෙළුම් හඳුනාගැනීමේ ආකෘතියකි, භාෂා විශාල සංඛ්‍යාවක් සමඟ බහුභාෂාවෙන් ක්‍රියා කරන අතර ඉංග්‍රීසි භාෂාවට පරිවර්තනය කිරීමට ඉඩ සලසයි. එය text-to-voice මෙවලමක් ලෙස අප දන්නා දෙයකි, නමුත් මෙය විවෘත මූලාශ්‍රය, ස්ථායී විසරණයේ නිර්මාතෘවරුන් වන OpenAI කණ්ඩායම විසින් නිකුත් කරන ලදී.

අදහස අත්හැර