ไลบรารีคำพูดเป็นข้อความที่ใช้งานง่ายและมีเวลาแฝงต่ำสำหรับแอปพลิเคชันแบบเรียลไทม์
RealtimeSTT ฟังไมโครโฟนและถอดเสียงเป็นข้อความ
คำแนะนำ: ลองดู Linguflex ซึ่งเป็นโปรเจ็กต์ดั้งเดิมที่ RealtimeSTT ได้ถูกแยกออกไป มันช่วยให้คุณควบคุมสภาพแวดล้อมของคุณด้วยการพูดและเป็นหนึ่งในผู้ช่วยโอเพ่นซอร์สที่มีความสามารถและซับซ้อนที่สุดที่มีอยู่ในปัจจุบัน
เหมาะสำหรับ:
เวอร์ชันล่าสุด: v0.3.7
ดูประวัติการเปิดตัว
คำแนะนำ: เนื่องจากตอนนี้เราใช้โมดูล
multiprocessing
ดังนั้นอย่าลืมรวมการป้องกันif __name__ == '__main__':
ไว้ในโค้ดของคุณเพื่อป้องกันพฤติกรรมที่ไม่คาดคิด โดยเฉพาะบนแพลตฟอร์ม เช่น Windows สำหรับคำอธิบายโดยละเอียดว่าเหตุใดสิ่งนี้จึงสำคัญ โปรดไปที่เอกสาร Python อย่างเป็นทางการเกี่ยวกับmultiprocessing
from RealtimeSTT import AudioToTextRecorder
import pyautogui
def process_text ( text ):
print ( text )
if __name__ == '__main__' :
print ( "Wait until it says 'speak now'" )
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
from RealtimeSTT import AudioToTextRecorder
import pyautogui
def process_text ( text ):
pyautogui . typewrite ( text + " " )
if __name__ == '__main__' :
print ( "Wait until it says 'speak now'" )
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
จะพิมพ์ทุกอย่างที่ถูกพูดลงในกล่องข้อความที่คุณเลือก
คำแนะนำ : ลองดู RealtimeTTS ซึ่งเป็นเอาต์พุตที่เหมือนกันของไลบรารีนี้ สำหรับความสามารถในการแปลงข้อความเป็นเสียง เมื่อรวมกันแล้ว พวกมันจะสร้าง wrapper เสียงแบบเรียลไทม์อันทรงพลังสำหรับโมเดลภาษาขนาดใหญ่
ห้องสมุดนี้ใช้:
ส่วนประกอบเหล่านี้แสดงถึง "มาตรฐานอุตสาหกรรม" สำหรับการใช้งานที่ล้ำสมัย ซึ่งเป็นรากฐานที่ทันสมัยและมีประสิทธิภาพที่สุดสำหรับการสร้างโซลูชันระดับไฮเอนด์
pip install RealtimeSTT
การดำเนินการนี้จะติดตั้งการขึ้นต่อกันที่จำเป็นทั้งหมด รวมถึง CPU ที่รองรับ PyTorch เวอร์ชันเดียวเท่านั้น
แม้ว่าจะเป็นไปได้ที่จะรัน RealtimeSTT ด้วยการติดตั้ง CPU เท่านั้น (ในกรณีนี้ให้ใช้รุ่นขนาดเล็ก เช่น "เล็ก" หรือ "ฐาน") คุณจะได้รับประสบการณ์ที่ดีขึ้นเมื่อใช้:
หากต้องการอัปเกรดการติดตั้ง PyTorch เพื่อเปิดใช้งานการรองรับ GPU ด้วย CUDA ให้ทำตามคำแนะนำเหล่านี้ตามเวอร์ชัน CUDA เฉพาะของคุณ สิ่งนี้มีประโยชน์หากคุณต้องการเพิ่มประสิทธิภาพของ RealtimeSTT ด้วยความสามารถของ CUDA
หากต้องการอัปเดต PyTorch และ Torchaudio ให้รองรับ CUDA 11.8 ให้ใช้คำสั่งต่อไปนี้:
pip install torch==2.3.1+cu118 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu118
หากต้องการอัปเดต PyTorch และ Torchaudio ให้รองรับ CUDA 12.X ให้ดำเนินการดังต่อไปนี้:
pip install torch==2.3.1+cu121 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
แทนที่ 2.3.1
ด้วยเวอร์ชันของ PyTorch ที่ตรงกับระบบและข้อกำหนดของคุณ
หมายเหตุ : หากต้องการตรวจสอบว่า NVIDIA GPU ของคุณรองรับ CUDA หรือไม่ ให้ไปที่รายการ CUDA GPU อย่างเป็นทางการ
หากคุณไม่เคยใช้โมเดล CUDA มาก่อน อาจต้องมีขั้นตอนเพิ่มเติมบางอย่างก่อนการติดตั้ง ขั้นตอนเหล่านี้เตรียมระบบเพื่อรองรับ CUDA และการติดตั้งการติดตั้ง ที่ปรับให้เหมาะสมกับ GPU ขอแนะนำสำหรับผู้ที่ต้องการ ประสิทธิภาพที่ดีขึ้น และมี NVIDIA GPU ที่รองรับ หากต้องการใช้ RealtimeSTT พร้อมรองรับ GPU ผ่าน CUDA โปรดทำตามขั้นตอนเหล่านี้:
ติดตั้งชุดเครื่องมือ NVIDIA CUDA :
ติดตั้ง NVIDIA cuDNN :
ติดตั้ง ffmpeg :
หมายเหตุ : การติดตั้ง ffmpeg อาจไม่จำเป็นจริงๆ เพื่อใช้งาน RealtimeSTT *ขอบคุณ jgilbert2017 สำหรับการชี้ให้เห็นสิ่งนี้
คุณสามารถดาวน์โหลดตัวติดตั้งสำหรับระบบปฏิบัติการของคุณได้จากเว็บไซต์ ffmpeg
หรือใช้ตัวจัดการแพ็คเกจ:
บน Ubuntu หรือ Debian :
sudo apt update && sudo apt install ffmpeg
บน Arch Linux :
sudo pacman -S ffmpeg
บน MacOS โดยใช้ Homebrew (https://brew.sh/):
brew install ffmpeg
บน Windows โดยใช้เอกสารอย่างเป็นทางการของ Winget :
winget install Gyan.FFmpeg
บน Windows ที่ใช้ Chocolatey (https://chocolatey.org/):
choco install ffmpeg
บน Windows ที่ใช้ Scoop (https://scoop.sh/):
scoop install ffmpeg
การใช้งานขั้นพื้นฐาน:
การเริ่มและหยุดการบันทึกจะถูกกระตุ้นด้วยตนเอง
recorder . start ()
recorder . stop ()
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ()
recorder . start ()
input ( "Press Enter to stop recording..." )
recorder . stop ()
print ( "Transcription: " , recorder . text ())
การบันทึกตามการตรวจจับกิจกรรมเสียง
with AudioToTextRecorder () as recorder :
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
with AudioToTextRecorder () as recorder :
print ( "Transcription: " , recorder . text ())
เมื่อรัน recorder.text ในลูป ขอแนะนำให้ใช้การโทรกลับ เพื่อให้สามารถรันการถอดเสียงแบบอะซิงโครนัสได้:
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )
from RealtimeSTT import AudioToTextRecorder
def process_text ( text ):
print ( text )
if __name__ == '__main__' :
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
การเปิดใช้งานคำหลักก่อนที่จะตรวจจับเสียง เขียนรายการคำสำคัญในการเปิดใช้งานที่คุณต้องการโดยคั่นด้วยเครื่องหมายจุลภาคลงในพารามิเตอร์ wake_words คุณสามารถเลือกคำปลุกจากรายการเหล่านี้: alexa, อเมริกาโน, บลูเบอร์รี่, บัมเบิลบี, คอมพิวเตอร์, เกรปฟรุต, ตั๊กแตน, เฮ้ Google, เฮ้สิริ, จาร์วิส, โอเค Google, picovoice, เม่น, เทอร์มิเนเตอร์
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" then speak.' )
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" to start recording.' )
print ( recorder . text ())
คุณสามารถตั้งค่าฟังก์ชันการโทรกลับให้ดำเนินการในเหตุการณ์ต่างๆ ได้ (ดูการกำหนดค่า) :
def my_start_callback ():
print ( "Recording started!" )
def my_stop_callback ():
print ( "Recording stopped!" )
recorder = AudioToTextRecorder ( on_recording_start = my_start_callback ,
on_recording_stop = my_stop_callback )
from RealtimeSTT import AudioToTextRecorder
def start_callback ():
print ( "Recording started!" )
def stop_callback ():
print ( "Recording stopped!" )
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( on_recording_start = start_callback ,
on_recording_stop = stop_callback )
หากคุณไม่ต้องการใช้ไมโครโฟนในเครื่อง ให้ตั้งค่าพารามิเตอร์ use_microphone เป็น false และจัดเตรียมชิ้นเสียง PCM แบบดิบในรูปแบบโมโน 16 บิต (ตัวอย่าง 16000) ด้วยวิธีนี้:
recorder . feed_audio ( audio_chunk )
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( use_microphone = False )
with open ( "audio_chunk.pcm" , "rb" ) as f :
audio_chunk = f . read ()
recorder . feed_audio ( audio_chunk )
print ( "Transcription: " , recorder . text ())
คุณสามารถปิดเครื่องบันทึกได้อย่างปลอดภัยโดยใช้โปรโตคอลตัวจัดการบริบท:
with AudioToTextRecorder () as recorder :
[...]
หรือคุณสามารถเรียกวิธีการปิดระบบด้วยตนเอง (หากใช้ "กับ" ไม่สามารถทำได้):
recorder . shutdown ()
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
with AudioToTextRecorder () as recorder :
[...]
# or manually shutdown if "with" is not used
recorder . shutdown ()
ไดเร็กทอรีย่อยการทดสอบประกอบด้วยชุดสคริปต์เพื่อช่วยคุณประเมินและทำความเข้าใจความสามารถของไลบรารี RealtimeTTS
สคริปต์ทดสอบขึ้นอยู่กับไลบรารี RealtimeTTS อาจกำหนดให้คุณต้องป้อนภูมิภาคบริการ Azure ภายในสคริปต์ เมื่อใช้สคริปต์สาธิตที่เกี่ยวข้องกับ OpenAI-, Azure- หรือ Elevenlabs ควรระบุคีย์ API ในตัวแปรสภาพแวดล้อม OPENAI_API_KEY, AZURE_SPEECH_KEY และ ELEVENLABS_API_KEY (ดู RealtimeTTS)
simple_test.py
realtimestt_test.py
wakeword_test.py
translator.py
pip install openai realtimetts
openai_voice_interface.py
pip install openai realtimetts
Advanced_talk.py
pip install openai keyboard realtimetts
minimalic_talkbot.py
pip install openai realtimetts
ไดเรกทอรีย่อย example_app มีแอปพลิเคชันอินเทอร์เฟซผู้ใช้ที่สวยงามสำหรับ OpenAI API ที่ใช้ PyQt5
AudioToTextRecorder
เมื่อคุณเริ่มต้นคลาส AudioToTextRecorder
คุณจะมีตัวเลือกมากมายในการปรับแต่งลักษณะการทำงาน
model (str, default="tiny"): ขนาดโมเดลหรือเส้นทางสำหรับการถอดเสียง
ภาษา (str, default=""): รหัสภาษาสำหรับการถอดเสียง หากเว้นว่างไว้ โมเดลจะพยายามตรวจหาภาษาโดยอัตโนมัติ รหัสภาษาที่รองรับแสดงอยู่ในไลบรารี Whisper Tokenizer
compute_type (str, default="default"): ระบุประเภทของการคำนวณที่จะใช้สำหรับการถอดเสียง ดูการหาปริมาณ Whisper
input_device_index (int, default=0): ดัชนีอุปกรณ์อินพุตเสียงที่จะใช้
gpu_device_index (int, default=0): ดัชนีอุปกรณ์ GPU ที่จะใช้ โมเดลนี้สามารถโหลดได้บน GPU หลายตัวโดยส่งรายการรหัส (เช่น [0, 1, 2, 3])
อุปกรณ์ (str, default="cuda"): อุปกรณ์สำหรับรุ่นที่จะใช้ อาจเป็น "cuda" หรือ "cpu" ก็ได้
on_recording_start : ฟังก์ชั่นที่เรียกใช้ได้เมื่อเริ่มการบันทึก
on_recording_stop : ฟังก์ชั่นที่เรียกใช้ได้เมื่อการบันทึกสิ้นสุดลง
on_transcription_start : ฟังก์ชันที่สามารถเรียกใช้ได้เมื่อเริ่มการถอดเสียง
Sure_sentence_starting_uppercase (bool, default=True): ตรวจสอบให้แน่ใจว่าทุกประโยคที่อัลกอริทึมตรวจพบจะเริ่มต้นด้วยอักษรตัวพิมพ์ใหญ่
ให้ แน่ใจ ว่าทุกประโยคที่ไม่ลงท้ายด้วยเครื่องหมายวรรคตอน เช่น "?", "!" จบลงด้วยช่วงเวลาหนึ่ง
use_microphone (bool, default=True): การใช้ไมโครโฟนในเครื่องสำหรับการถอดเสียง ตั้งค่าเป็น False หากคุณต้องการจัดเตรียมเมธอด feed_audio ให้กับชิ้นส่วน
spinner (bool, default=True): ให้ข้อความแอนิเมชั่นสปินเนอร์พร้อมข้อมูลเกี่ยวกับสถานะเครื่องบันทึกปัจจุบัน
ระดับ (int, default=logging.WARNING): ระดับการบันทึก
handle_buffer_overflow (bool, default=True): หากตั้งค่าไว้ ระบบจะบันทึกคำเตือนเมื่อมีอินพุตโอเวอร์โฟลว์เกิดขึ้นระหว่างการบันทึก และลบข้อมูลออกจากบัฟเฟอร์
beam_size (int, default=5): ขนาดลำแสงที่จะใช้สำหรับการถอดรหัสการค้นหาลำแสง
Initial_prompt (str หรือ iterable ของ int, default=None): พรอมต์เริ่มต้นที่จะป้อนให้กับโมเดลการถอดเสียง
Suppress_tokens (รายการ int, default=[-1]): โทเค็นที่จะถูกระงับจากเอาต์พุตการถอดเสียง
on_recorded_chunk : ฟังก์ชั่นโทรกลับที่เกิดขึ้นเมื่อบันทึกเสียงจำนวนมาก ส่งข้อมูลก้อนเป็นพารามิเตอร์
debug_mode (bool, default=False): หากตั้งค่าไว้ ระบบจะพิมพ์ข้อมูลการดีบักเพิ่มเติมไปยังคอนโซล
print_transcription_time (bool, default=False): บันทึกเวลาการประมวลผลของการถอดเสียงโมเดลหลัก สิ่งนี้มีประโยชน์สำหรับการตรวจสอบประสิทธิภาพและการดีบัก
Early_transcription_on_silence (int, default=0): หากตั้งค่าไว้ ระบบจะถอดเสียงเร็วขึ้นเมื่อตรวจพบความเงียบ การถอดเสียงจะเริ่มหลังจากมิลลิวินาทีที่ระบุ รักษาค่านี้ให้ต่ำกว่า post_speech_silence_duration
โดยหลักการแล้วควรอยู่ที่ประมาณ post_speech_silence_duration
ลบด้วยเวลาถอดเสียงโดยประมาณด้วยโมเดลหลัก หากความเงียบกินเวลานานกว่า post_speech_silence_duration
การบันทึกจะหยุดและส่งการถอดเสียง หากกิจกรรมเสียงกลับมาดำเนินการต่อภายในระยะเวลานี้ การถอดเสียงเป็นคำจะถูกยกเลิก ซึ่งส่งผลให้การถอดเสียงขั้นสุดท้ายเร็วขึ้นโดยต้องเสียค่าใช้จ่ายในการโหลด GPU เพิ่มเติม เนื่องจากการถอดเสียงครั้งสุดท้ายที่ไม่จำเป็นบางอย่าง
Allow_latency_limit (int, default=100): ระบุจำนวนสูงสุดของชิ้นที่ยังไม่ได้ประมวลผลในคิวก่อนที่จะทิ้งชิ้น ซึ่งช่วยป้องกันไม่ให้ระบบถูกครอบงำและสูญเสียการตอบสนองในแอปพลิเคชันแบบเรียลไทม์
no_log_file (bool, default=False): หากตั้งค่าไว้ ระบบจะข้ามการเขียนไฟล์บันทึกการดีบัก เพื่อลด I/O ของดิสก์ มีประโยชน์หากไม่จำเป็นต้องบันทึกไฟล์และประสิทธิภาพเป็นสิ่งสำคัญ
หมายเหตุ : เมื่อเปิดใช้งานคำอธิบายแบบเรียลไทม์ ขอแนะนำอย่างยิ่งให้ติดตั้ง GPU การใช้การถอดเสียงแบบเรียลไทม์อาจสร้างภาระงาน GPU สูง
Enable_realtime_transcription (bool, default=False): เปิดใช้งานหรือปิดใช้งานการถอดเสียงแบบเรียลไทม์ เมื่อตั้งค่าเป็น True เสียงจะถูกถอดอย่างต่อเนื่องในขณะที่กำลังบันทึก
use_main_model_for_realtime (bool, default=False): หากตั้งค่าเป็น True โมเดลการถอดเสียงหลักจะถูกใช้สำหรับการถอดเสียงทั้งแบบปกติและแบบเรียลไทม์ หากเป็นเท็จ ระบบจะใช้โมเดลแยกต่างหากที่ระบุโดย realtime_model_type
สำหรับการถอดเสียงแบบเรียลไทม์ การใช้รุ่นเดียวสามารถประหยัดหน่วยความจำและอาจปรับปรุงประสิทธิภาพได้ แต่อาจไม่ได้รับการปรับให้เหมาะสมสำหรับการประมวลผลแบบเรียลไทม์ การใช้แบบจำลองที่แยกจากกันจะทำให้แบบจำลองมีขนาดเล็กลงและเร็วขึ้นสำหรับการถอดเสียงแบบเรียลไทม์ ขณะเดียวกันก็รักษาแบบจำลองที่แม่นยำยิ่งขึ้นสำหรับการถอดเสียงขั้นสุดท้าย
realtime_model_type (str, default="tiny"): ระบุขนาดหรือเส้นทางของโมเดลการเรียนรู้ของเครื่องที่จะใช้สำหรับการถอดเสียงแบบเรียลไทม์
realtime_processing_pause (float, default=0.2): ระบุช่วงเวลาเป็นวินาทีหลังจากถอดเสียงบางส่วน ค่าที่ต่ำกว่าจะส่งผลให้มีการอัปเดตการถอดเสียง "แบบเรียลไทม์" (บ่อยครั้ง) มากขึ้น แต่อาจเพิ่มภาระในการคำนวณ
on_realtime_transcription_update : ฟังก์ชันการโทรกลับที่จะถูกทริกเกอร์เมื่อใดก็ตามที่มีการอัปเดตในการถอดเสียงแบบเรียลไทม์ ฟังก์ชันนี้ถูกเรียกใช้โดยมีข้อความที่ถอดความใหม่เป็นอาร์กิวเมนต์
on_realtime_transcription_stabilized : ฟังก์ชันโทรกลับที่ทริกเกอร์เมื่อใดก็ตามที่มีการอัปเดตในการถอดเสียงแบบเรียลไทม์ และส่งกลับข้อความที่มีความเสถียรและมีคุณภาพสูงกว่าเป็นอาร์กิวเมนต์
beam_size_realtime (int, default=3): ขนาดลำแสงที่จะใช้สำหรับการถอดรหัสการค้นหาลำแสงการถอดรหัสแบบเรียลไทม์
silero_sensitivity (float, default=0.6): ความไวสำหรับการตรวจจับกิจกรรมเสียงของ Silero มีตั้งแต่ 0 (ไวน้อยที่สุด) ถึง 1 (ไวที่สุด) ค่าเริ่มต้นคือ 0.6
silero_use_onnx (bool, default=False): เปิดใช้งานการใช้งานโมเดลที่ได้รับการฝึกล่วงหน้าจาก Silero ในรูปแบบ ONNX (Open Neural Network Exchange) แทนรูปแบบ PyTorch ค่าเริ่มต้นเป็นเท็จ แนะนำเพื่อประสิทธิภาพที่เร็วขึ้น
silero_deactivity_detection (bool, default=False): เปิดใช้งานโมเดล Silero สำหรับการตรวจจับการสิ้นสุดคำพูด ทนทานต่อเสียงรบกวนจากพื้นหลังมากขึ้น ใช้ทรัพยากร GPU เพิ่มเติมแต่ปรับปรุงความแม่นยำในสภาพแวดล้อมที่มีเสียงดัง เมื่อเป็นเท็จ จะใช้ WebRTC VAD เริ่มต้นซึ่งมีความไวมากกว่าแต่อาจบันทึกต่อได้นานขึ้นเนื่องจากเสียงพื้นหลัง
webrtc_sensitivity (int, default=3): ความไวสำหรับกลไกการตรวจจับกิจกรรมเสียงของ WebRTC ตั้งแต่ 0 (รุนแรงน้อยที่สุด / ละเอียดอ่อนที่สุด) ถึง 3 (รุนแรงที่สุด, ละเอียดอ่อนน้อยที่สุด) ค่าเริ่มต้นคือ 3
post_speech_silence_duration (ลอย, ค่าเริ่มต้น = 0.2): ระยะเวลาเป็นวินาทีแห่งความเงียบที่ต้องตามคำพูดก่อนที่จะถือว่าการบันทึกเสร็จสมบูรณ์ เพื่อให้แน่ใจว่าการหยุดชั่วคราวระหว่างการพูดจะไม่ทำให้การบันทึกสิ้นสุดลงก่อนเวลาอันควร
min_gap_between_recordings (float, default=1.0): ระบุช่วงเวลาขั้นต่ำเป็นวินาทีที่ควรอยู่ระหว่างสิ้นสุดเซสชันการบันทึกหนึ่งกับจุดเริ่มต้นของอีกเซสชันหนึ่ง เพื่อป้องกันการบันทึกต่อเนื่องอย่างรวดเร็ว
min_length_of_recording (ลอย ค่าเริ่มต้น=1.0): ระบุระยะเวลาขั้นต่ำเป็นวินาทีที่เซสชันการบันทึกควรมีอายุการใช้งานเพื่อให้แน่ใจว่ามีการบันทึกเสียงที่มีความหมาย ป้องกันการบันทึกที่สั้นเกินไปหรือกระจัดกระจาย
pre_recording_buffer_duration (float, default=0.2): ช่วงเวลาเป็นวินาที ในระหว่างที่เสียงถูกบัฟเฟอร์ก่อนการบันทึกอย่างเป็นทางการ ซึ่งจะช่วยถ่วงดุลเวลาแฝงที่มีอยู่ในการตรวจจับกิจกรรมคำพูด ทำให้มั่นใจได้ว่าจะไม่พลาดเสียงเริ่มต้น
on_vad_detect_start : ฟังก์ชั่นที่เรียกได้จะถูกทริกเกอร์เมื่อระบบเริ่มฟังกิจกรรมเสียง
on_vad_detect_stop : ฟังก์ชั่นที่เรียกใช้ได้เมื่อระบบหยุดฟังกิจกรรมเสียง
wakeword_backend (str, default="pvporcupine"): ระบุไลบรารีแบ็กเอนด์ที่จะใช้สำหรับการตรวจจับคำปลุก ตัวเลือกที่รองรับ ได้แก่ 'pvporcupine' สำหรับการใช้กลไกคำปลุก Porcupine หรือ 'oww' สำหรับการใช้กลไก OpenWakeWord
openwakeword_model_paths (str, default=None): พาธที่คั่นด้วยเครื่องหมายจุลภาคไปยังไฟล์โมเดลสำหรับไลบรารี openwakeword พาธเหล่านี้ชี้ไปที่โมเดลแบบกำหนดเองที่สามารถใช้สำหรับการตรวจจับคำปลุกเมื่อเลือกไลบรารี openwakeword เป็น wakeword_backend
openwakeword_inference_framework (str, default="onnx"): ระบุกรอบงานการอนุมานที่จะใช้กับไลบรารี openwakeword อาจเป็น 'onnx' สำหรับรูปแบบ Open Neural Network Exchange หรือ 'tflite' สำหรับ TensorFlow Lite
wake_words (str, default=""): เริ่มต้นการบันทึกเมื่อใช้แบ็กเอนด์ wakeword 'pvporcupine' สามารถระบุคำปลุกหลายคำเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาค คำปลุกที่รองรับ ได้แก่ alexa, americano, blueberry, bumblebee, คอมพิวเตอร์, เกรปฟรุต, ตั๊กแตน, เฮ้ google, เฮ้ siri, จาร์วิส, โอเค google, picovoice, เม่น, เทอร์มิเนเตอร์ สำหรับแบ็กเอนด์ 'openwakeword' คำปลุกจะถูกแยกออกจากไฟล์โมเดลที่ให้ไว้โดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องระบุคำเหล่านี้ที่นี่
wake_words_sensitivity (float, default=0.6): ระดับความไวสำหรับการตรวจจับคำปลุก (0 สำหรับความไวน้อยที่สุด, 1 สำหรับความไวสูงสุด)
wake_word_activation_delay (float, default=0): ระยะเวลาเป็นวินาทีหลังจากเริ่มการตรวจสอบ ก่อนที่ระบบจะเปลี่ยนเป็นการเปิดใช้งานคำปลุกหากไม่มีเสียงใดถูกตรวจพบในตอนแรก หากตั้งค่าเป็นศูนย์ ระบบจะใช้การเปิดใช้งานคำปลุกทันที
wake_word_timeout (ลอย ค่าเริ่มต้น=5): ระยะเวลาเป็นวินาทีหลังจากรู้จักคำปลุก หากตรวจไม่พบกิจกรรมเสียงตามมาภายในหน้าต่างนี้ ระบบจะเปลี่ยนกลับเป็นสถานะไม่ใช้งาน โดยรอคำปลุกครั้งถัดไปหรือการเปิดใช้งานด้วยเสียง
wake_word_buffer_duration (ลอย ค่าเริ่มต้น = 0.1): ระยะเวลาเป็นวินาทีในการบัฟเฟอร์ข้อมูลเสียงระหว่างการตรวจจับคำปลุก ซึ่งจะช่วยในการตัดคำปลุกออกจากบัฟเฟอร์การบันทึก เพื่อไม่ให้ตรวจพบอย่างไม่ถูกต้องพร้อมกับข้อความที่พูดต่อไปนี้ ทำให้มั่นใจได้ว่าทริกเกอร์เริ่มการถอดเสียงจะสะอาดและแม่นยำยิ่งขึ้น เพิ่มค่านี้หากตรวจพบบางส่วนของคำปลุกเป็นข้อความ
on_wakeword_detected : ฟังก์ชั่นที่เรียกได้จะถูกทริกเกอร์เมื่อตรวจพบคำปลุก
on_wakeword_timeout : ฟังก์ชันที่เรียกใช้ได้จะถูกทริกเกอร์เมื่อระบบกลับสู่สถานะไม่ใช้งาน หลังจากนั้นเมื่อไม่มีการตรวจพบคำพูดหลังจากเปิดใช้งานคำปลุก
on_wakeword_detection_start : ฟังก์ชั่นที่เรียกได้จะถูกทริกเกอร์เมื่อระบบเริ่มฟังคำปลุก
on_wakeword_detection_end : ฟังก์ชั่นที่เรียกใช้ได้จะถูกทริกเกอร์เมื่อหยุดเพื่อฟังคำปลุก (เช่น เนื่องจากตรวจพบคำปลุกหมดเวลาหรือคำปลุก)
ดูข้อมูลเกี่ยวกับวิธีการฝึกโมเดล OpenWakeWord ของคุณเองที่นี่ คุณสามารถใช้สมุดบันทึก Google Colab แบบธรรมดาในการเริ่มต้น หรือใช้สมุดบันทึกที่มีรายละเอียดมากขึ้นซึ่งช่วยให้ปรับแต่งได้มากขึ้น (สามารถสร้างโมเดลคุณภาพสูงได้ แต่ต้องใช้ประสบการณ์การพัฒนาที่มากกว่า)
คุณอาจต้องใช้ tf2onnx เพื่อแปลงโมเดล tensorflow tflite เป็นรูปแบบ onnx:
pip install -U tf2onnx
python -m tf2onnx.convert --tflite my_model_filename.tflite --output my_model_filename.onnx
พารามิเตอร์เริ่มต้นที่แนะนำสำหรับการใช้งาน OpenWakeWord:
with AudioToTextRecorder (
wakeword_backend = "oww" ,
wake_words_sensitivity = 0.35 ,
openwakeword_model_paths = "word1.onnx,word2.onnx" ,
wake_word_buffer_duration = 1 ,
) as recorder :
ตอบ: ปัญหานี้เกิดขึ้นจากความไม่ตรงกันระหว่างเวอร์ชันของ ctranslate2
และ cuDNN ไลบรารี ctranslate2
ได้รับการอัปเดตเป็นเวอร์ชัน 4.5.0 ซึ่งใช้ cuDNN 9.2 มีสองวิธีในการแก้ไขปัญหานี้:
ctranslate2
เป็นเวอร์ชัน 4.4.0 : pip install ctranslate2==4.4.0
ยินดีต้อนรับเสมอ!
ตะโกนถึง Steven Linn ที่ให้การสนับสนุนนักเทียบท่า
เอ็มไอที
โคลจา เบเจล
อีเมล์: [email protected]
GitHub