ຄວາມຄິດຂອງໂຄງການແມ່ນ ໃຫ້ຄໍາແນະນໍາສຽງເພື່ອໂຕ້ຕອບກັບ PC ຫຼື Raspberry Pi ຂອງພວກເຮົາໂດຍໃຊ້ຕົວແບບສຽງຫາຂໍ້ຄວາມ Whisper.
ພວກເຮົາຈະໃຫ້ຄໍາສັ່ງທີ່ຈະຖືກຖອດຂໍ້ຄວາມ, ປ່ຽນເປັນຂໍ້ຄວາມ, ດ້ວຍ Whisper ແລະຫຼັງຈາກນັ້ນວິເຄາະເພື່ອປະຕິບັດຄໍາສັ່ງທີ່ເຫມາະສົມ, ເຊິ່ງສາມາດຕັ້ງແຕ່ການດໍາເນີນການໂຄງການທີ່ຈະໃຫ້ແຮງດັນກັບ pins RaspberryPi.
ຂ້ອຍຈະໃຊ້ Raspberry Pi 2 ເກົ່າ, micro USB ແລະຂ້ອຍຈະໃຊ້ຮູບແບບ Voice-to-text ທີ່ປ່ອຍອອກມາເມື່ອບໍ່ດົນມານີ້ໂດຍ OpenAI, Whisper. ໃນຕອນທ້າຍຂອງບົດຄວາມທີ່ທ່ານສາມາດເບິ່ງ ກະຊິບໜ້ອຍໜຶ່ງ.
ໂຄງການທັງຫມົດໃນ Python.
ຂ້າພະເຈົ້າປ່ອຍໃຫ້ທ່ານສາທິດການເຮັດວຽກຂອງວິດີໂອນີ້, ການຄວບຄຸມ PC ໂດຍສຽງ.
ສະພາແຫ່ງ
ເພື່ອໃຊ້ມັນກັບ PC, ພວກເຮົາຈະຕ້ອງການໄມໂຄຣໂຟນເທົ່ານັ້ນ.
ຖ້າເຈົ້າຈະຕິດມັນໃສ່ RaspberryPi, ເຈົ້າຈະຕ້ອງມີໄມໂຄຣໂຟນ USB, ເພາະວ່າແຈັກທີ່ມັນມີນັ້ນພຽງແຕ່ເອົາອອກເທົ່ານັ້ນ.
ຕ້ອງການ:
ໃນຖານະເປັນຈຸດປະສົງທົ່ວໄປຂອງເຄື່ອງມືແມ່ນການກໍານົດສຽງ. ຂ້າພະເຈົ້າເຫັນວ່າມັນເປັນປະໂຫຍດຫຼາຍທີ່ຈະປະສົມປະສານມັນເຂົ້າໃນການດໍາເນີນງານຂອງອຸປະກອນອື່ນໆ.
- Micro USB
- Raspberry PI ກັບລະບົບປະຕິບັດການ (ຕົວຢ່າງ Raspbian pro)
- ເອເລັກໂຕຣນິກ (LED, ສາຍໄຟ, ຕົວຕ້ານທານ 480 ohm ແລະ breadboard)
ພວກເຮົາເຊື່ອມຕໍ່ LED ກັບ pin 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 && sudo apt install ffmpeg
ຂ້ອຍບໍ່ສາມາດທົດສອບມັນໄດ້ເພາະວ່າຂ້ອຍບໍ່ມີ microSD ສໍາລັບ 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
ກະຊິບເພື່ອເຮັດວຽກກັບຕົວແບບ
ເວລາ, ເພາະວ່າຂ້ອຍໃຊ້ມັນເພື່ອຄວບຄຸມເວລາທີ່ມັນໃຊ້ເພື່ອປະຕິບັດ script, gpiozero ເຮັດວຽກກັບ pins GPIO ຂອງ Raspberry ແລະ sounddevice, scipy ແລະ wavio ເພື່ອບັນທຶກສຽງ.
ໜ້າ ທີ່
ຂ້າພະເຈົ້າໄດ້ສ້າງ 4 ຫນ້າທີ່:
- ຕົ້ນຕໍ ()
- ແສງ ()
- ກະພິບ ()
- record_audio()
ເປີດ () ພຽງແຕ່ໃຫ້ແຮງດັນກັບ pin 17 ຂອງ raspberry ບ່ອນທີ່ພວກເຮົາໄດ້ເຊື່ອມຕໍ່ໃນກໍລະນີນີ້ LED ເພື່ອທົດສອບ
def encender (): LED(17).on()
blink() ຄືກັບ on() ແຕ່ມັນເຮັດໃຫ້ກະພິບ led ໂດຍການເປີດແລະປິດພາຍໃນ loop.
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() ໃນຕອນທ້າຍຂອງ script. ວິທີການນີ້ໃນຕອນເລີ່ມຕົ້ນ, ມັນຈະນໍາເຂົ້າຫ້ອງສະຫມຸດແລະຫຼັງຈາກນັ້ນເຮັດໃຫ້ການເອີ້ນຟັງຊັນ.
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 ຫຼືເຮັດໃຫ້ມັນກະພິບ. ທັງແລ່ນລະຫັດບາງອັນ, ຫຼືປິດຄອມພິວເຕີ.
ທັງຫມົດນີ້ແມ່ນຄວາມຄິດພື້ນຖານ. ຈາກທີ່ນີ້ທ່ານສາມາດພັດທະນາໂຄງການແລະປັບປຸງມັນຕາມທີ່ທ່ານຕ້ອງການ. ແຕ່ລະຄົນສາມາດຊອກຫາການນໍາໃຊ້ທີ່ແຕກຕ່າງກັນສໍາລັບມັນ.
ສິ່ງທີ່ພວກເຮົາສາມາດເຮັດໄດ້ກັບ montage ນີ້
ເຫຼົ່ານີ້ແມ່ນແນວຄວາມຄິດທີ່ມາຫາຂ້າພະເຈົ້າເພື່ອໃຊ້ປະໂຍດຈາກ montage ນີ້. ເມື່ອໂຄງກະດູກຖືກປະກອບອາວຸດ, ພວກເຮົາສາມາດໃຊ້ມັນເພື່ອກະຕຸ້ນທຸກສິ່ງທຸກຢ່າງທີ່ຢູ່ໃນໃຈໂດຍສຽງ, ພວກເຮົາສາມາດເປີດໃຊ້ relay ທີ່ເລີ່ມຕົ້ນ motor ຫຼືພວກເຮົາສາມາດເປີດຕົວ script ທີ່ດໍາເນີນການ script, ອີເມວຫຼືໃດກໍ່ຕາມ.
ກະຊິບແມ່ນຫຍັງ
Whisper ແມ່ນຮູບແບບການຮັບຮູ້ vol, ເຮັດວຽກຢູ່ໃນຫຼາຍພາສາທີ່ມີຈໍານວນພາສາຈໍານວນຫລາຍແລະອະນຸຍາດໃຫ້ແປເປັນພາສາອັງກິດ. ມັນແມ່ນສິ່ງທີ່ພວກເຮົາຮູ້ວ່າເປັນເຄື່ອງມືຂໍ້ຄວາມເປັນສຽງ, ປ່ອຍອອກມາໂດຍທີມງານ OpenAI, ຜູ້ສ້າງຂອງ Dall-e.