จำเป็นต้องมีขั้นตอนเพิ่มเติมสำหรับการติดตั้ง GPU ที่ปรับให้เหมาะสม ขั้นตอนเหล่านี้ได้รับการแนะนำสำหรับผู้ที่ต้องการ ประสิทธิภาพที่ดีขึ้น และมี Nvidia GPU ที่เข้ากันได้
หมายเหตุ : หากต้องการตรวจสอบว่า NVIDIA GPU ของคุณรองรับ CUDA โปรดไปที่รายการ CUDA GPU อย่างเป็นทางการหรือไม่
หากต้องการใช้ RealTimestt ด้วยการสนับสนุน GPU ผ่าน CUDA โปรดทำตามขั้นตอนเหล่านี้:
ติดตั้งชุดเครื่องมือ NVIDIA CUDA 11.8 :
ติดตั้ง nvidia cudnn 8.7.0 สำหรับ cuda 11.x :
ติดตั้ง ffmpeg :
คุณสามารถดาวน์โหลดตัวติดตั้งสำหรับระบบปฏิบัติการของคุณได้จากเว็บไซต์ FFMPEG
หรือใช้ผู้จัดการแพ็คเกจ:
บน Ubuntu หรือ Debian :
sudo apt update && sudo apt install ffmpegบน Arch Linux :
sudo pacman -S ffmpegบน macOS โดยใช้ homebrew (https://brew.sh/):
brew install ffmpegบนหน้าต่างโดยใช้ช็อคโกแลต (https://chocolate.org/):
choco install ffmpegบน Windows โดยใช้ Scoop (https://scoop.sh/):
scoop install ffmpegติดตั้ง pytorch ด้วยการสนับสนุน cuda :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
Win 如果装不上 Webrtcvad, 提示了 vs c ++ 相关的报错, 请下载 https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/, 安装 c ++ 开发相关工具,,,,,,,,,,,,,,,,,,,,,,,,
启动后端python RealtimeSTT_server2.py
双击index.html , 浏览器运行, 填入服务器 IP 地址, 注意, 关闭服务器的防火墙, 或者针对性放行 9001/9002 这两个用于 WebSocket 连接的端口!
等待后端模型加载完毕后, 就可以正常对话了。
2024-07-01
2024-06-03
2024-06-02
2024-05-28
ไลบรารีคำพูดที่ใช้งานง่ายและใช้งานง่ายสำหรับแอปพลิเคชันเรียลไทม์
RealTimestt ฟังไมโครโฟนและถอดเสียงลงในข้อความ
เหมาะสำหรับ:
with )คำแนะนำ: เนื่องจากเราใช้โมดูล
multiprocessingในขณะนี้ตรวจสอบให้แน่ใจว่าได้รวมif __name__ == '__main__':การป้องกันในรหัสของคุณเพื่อป้องกันพฤติกรรมที่ไม่คาดคิดโดยเฉพาะบนแพลตฟอร์มเช่น Windows สำหรับคำอธิบายโดยละเอียดเกี่ยวกับสาเหตุที่สำคัญให้เยี่ยมชมเอกสาร Python อย่างเป็นทางการเกี่ยวกับmultiprocessing
คำแนะนำ : ตรวจสอบ realtimetts คู่ส่งออกของไลบรารีนี้เพื่อความสามารถในการส่งข้อความ พวกเขารวมกันเป็นเครื่องห่อเสียงเรียลไทม์ที่ทรงพลังรอบ ๆ โมเดลภาษาขนาดใหญ่
ห้องสมุดนี้ใช้:
ส่วนประกอบเหล่านี้แสดงถึง "มาตรฐานอุตสาหกรรม" สำหรับแอปพลิเคชันที่ทันสมัยซึ่งเป็นรากฐานที่ทันสมัยและมีประสิทธิภาพมากที่สุดสำหรับการสร้างโซลูชั่นระดับสูง
pip install RealtimeSTTสิ่งนี้จะติดตั้งการพึ่งพาที่จำเป็นทั้งหมดรวมถึง การสนับสนุน CPU รุ่น Pytorch เท่านั้น
แม้ว่าจะเป็นไปได้ที่จะเรียกใช้ realtimestt ด้วยการติดตั้ง CPU เท่านั้น (ใช้รุ่นเล็ก ๆ เช่น "เล็ก" หรือ "ฐาน" ในกรณีนี้) คุณจะได้รับประสบการณ์ที่ดีขึ้นโดยใช้:
จำเป็นต้องมีขั้นตอนเพิ่มเติมสำหรับการติดตั้ง GPU ที่ปรับให้เหมาะสม ขั้นตอนเหล่านี้ได้รับการแนะนำสำหรับผู้ที่ต้องการ ประสิทธิภาพที่ดีขึ้น และมี Nvidia GPU ที่เข้ากันได้
หมายเหตุ : หากต้องการตรวจสอบว่า NVIDIA GPU ของคุณรองรับ CUDA โปรดไปที่รายการ CUDA GPU อย่างเป็นทางการหรือไม่
หากต้องการใช้ RealTimestt ด้วยการสนับสนุน GPU ผ่าน CUDA โปรดทำตามขั้นตอนเหล่านี้:
ติดตั้งชุดเครื่องมือ NVIDIA CUDA 11.8 :
ติดตั้ง nvidia cudnn 8.7.0 สำหรับ cuda 11.x :
ติดตั้ง ffmpeg :
คุณสามารถดาวน์โหลดตัวติดตั้งสำหรับระบบปฏิบัติการของคุณได้จากเว็บไซต์ FFMPEG
หรือใช้ผู้จัดการแพ็คเกจ:
บน Ubuntu หรือ Debian :
sudo apt update && sudo apt install ffmpegบน Arch Linux :
sudo pacman -S ffmpegบน macOS โดยใช้ homebrew (https://brew.sh/):
brew install ffmpegบนหน้าต่างโดยใช้ช็อคโกแลต (https://chocolate.org/):
choco install ffmpegบน Windows โดยใช้ Scoop (https://scoop.sh/):
scoop install ffmpegติดตั้ง pytorch ด้วยการสนับสนุน cuda :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118การใช้งานขั้นพื้นฐาน:
เริ่มต้นและหยุดการบันทึกจะถูกกระตุ้นด้วยตนเอง
recorder . start ()
recorder . stop ()
print ( recorder . text ())การบันทึกตามการตรวจจับกิจกรรมเสียง
with AudioToTextRecorder () as recorder :
print ( recorder . text ())เมื่อเรียกใช้ Recorder.Text ในลูปแนะนำให้ใช้การโทรกลับทำให้การถอดรหัสทำงานแบบอะซิงโครนัส:
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )การเปิดใช้งานคำหลักก่อนตรวจจับเสียง เขียนรายการคีย์เวิร์ดการเปิดใช้งานการเปิดใช้งานที่คุณต้องการลงในพารามิเตอร์ WAKE_WORDS คุณสามารถเลือก Wake Words จากรายการเหล่านี้: Alexa, Americano, Blueberry, Bumblebee, คอมพิวเตอร์, เกรฟฟรุ๊ต, ตั๊กแตน, เฮ้ Google, เฮ้ Siri, Jarvis, โอเค Google, picovoice, เม่น, เทอร์มิเนเตอร์
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" then speak.' )
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 )หากคุณไม่ต้องการใช้พารามิเตอร์ไมโครโฟนท้องถิ่น USE_MICROPHONE กับเท็จและให้ AudioChunks PCM ดิบในโมโน 16 บิต (ตัวอย่าง 16000) ด้วยวิธีนี้:
recorder . feed_audio ( audio_chunk )คุณสามารถปิดเครื่องบันทึกได้อย่างปลอดภัยโดยใช้โปรโตคอล Context Manager:
with AudioToTextRecorder () as recorder :
[...]หรือคุณสามารถเรียกวิธีการปิดระบบด้วยตนเอง (ถ้าใช้ "กับ" ไม่สามารถทำได้):
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 realtimettsopenai_voice_interface.py
pip install openai realtimettsadvanced_talk.py
pip install openai keyboard realtimettsminimalistic_talkbot.py
pip install openai realtimettsไดเรกทอรีย่อย Example_app มีแอปพลิเคชันอินเทอร์เฟซผู้ใช้ขัดเงาสำหรับ OpenAI API ตาม PYQT5
AudioToTextRecorder เมื่อคุณเริ่มต้นคลาส AudioToTextRecorder คุณมีตัวเลือกต่าง ๆ ในการปรับแต่งพฤติกรรม
รุ่น (str, default = "tiny"): ขนาดของรุ่นหรือเส้นทางสำหรับการถอดความ
ภาษา (str, default = ""): รหัสภาษาสำหรับการถอดความ หากว่างเปล่าโมเดลจะพยายามตรวจจับภาษาโดยอัตโนมัติ รหัสภาษาที่รองรับแสดงอยู่ในไลบรารี Whisper Tokenizer
compute_type (str, default = "default"): ระบุประเภทของการคำนวณที่จะใช้สำหรับการถอดความ ดูกระซิบ quantization
input_device_index (int, default = 0): ดัชนีอุปกรณ์อินพุตเสียงที่จะใช้
GPU_DEVICE_INDEX (int, default = 0): ดัชนีอุปกรณ์ GPU ที่จะใช้ รุ่นนี้สามารถโหลดได้ใน GPU หลายตัวโดยผ่านรายการ ID (เช่น [0, 1, 2, 3])
ON_RECORDING_START : ฟังก์ชั่นที่เรียกได้ว่าเรียกใช้เมื่อเริ่มการบันทึก
ON_RECORDING_STOP : ฟังก์ชั่นที่เรียกได้ว่าเรียกใช้เมื่อสิ้นสุดการบันทึก
on_transcription_start : ฟังก์ชั่นที่เรียกได้เรียกเมื่อเริ่มการถอดความ
uce_sentence_starting_uppercase (bool, default = true): ตรวจสอบให้แน่ใจว่าทุกประโยคที่ตรวจพบโดยอัลกอริทึมเริ่มต้นด้วยตัวอักษรตัวพิมพ์ใหญ่
uSTE_SENTENCE_ENDS_WITH_PERIOD (bool, default = true): ตรวจสอบให้แน่ใจว่าทุกประโยคที่ไม่จบด้วยเครื่องหมายวรรคตอนเช่น "?", "!" จบลงด้วยช่วงเวลา
use_microphone (bool, default = true): การใช้ไมโครโฟนท้องถิ่นสำหรับการถอดความ ตั้งค่าเป็นเท็จหากคุณต้องการให้ชิ้นส่วนด้วยวิธี FEED_AUDIO
Spinner (bool, default = true): ให้ข้อความภาพเคลื่อนไหวสปินเนอร์พร้อมข้อมูลเกี่ยวกับสถานะบันทึกปัจจุบัน
ระดับ (int, default = logging.warning): ระดับการบันทึก
หมายเหตุ : เมื่อเปิดใช้งานคำอธิบายแบบเรียลไทม์การติดตั้ง GPU จะได้รับการแนะนำอย่างยิ่ง การใช้การถอดรหัสแบบเรียลไทม์อาจสร้างโหลด GPU สูง
enable_realtime_transcription (bool, default = false): เปิดใช้งานหรือปิดใช้งานการถอดรหัสเสียงแบบเรียลไทม์ เมื่อตั้งค่าเป็นจริงเสียงจะถูกถอดความอย่างต่อเนื่องเมื่อมีการบันทึก
RealTime_model_type (str, default = "tiny"): ระบุขนาดหรือเส้นทางของรูปแบบการเรียนรู้ของเครื่องที่จะใช้สำหรับการถอดความแบบเรียลไทม์
realtime_processing_pause (float, default = 0.2): ระบุช่วงเวลาช่วงเวลาในวินาทีหลังจากชิ้นเสียงได้รับการถอดความ ค่าที่ต่ำกว่าจะส่งผลให้มีการอัปเดตการถอดความ "เรียลไทม์" (บ่อยครั้ง) แต่อาจเพิ่มภาระการคำนวณ
on_realtime_transcription_update : ฟังก์ชั่นการโทรกลับที่ถูกเรียกใช้เมื่อใดก็ตามที่มีการอัปเดตในการถอดความแบบเรียลไทม์ ฟังก์ชั่นนี้ถูกเรียกด้วยข้อความที่ถอดความใหม่เป็นอาร์กิวเมนต์
on_realtime_transcription_stabilized : ฟังก์ชั่นการโทรกลับที่ถูกเรียกใช้เมื่อใดก็ตามที่มีการอัปเดตในการถอดความแบบเรียลไทม์และส่งกลับคุณภาพที่สูงขึ้นข้อความที่มีความเสถียรเป็นอาร์กิวเมนต์
silero_sensitivity (ลอย, ค่าเริ่มต้น = 0.6): ความไวสำหรับการตรวจจับกิจกรรมเสียงของ Silero ตั้งแต่ 0 (ไวน้อยที่สุด) ถึง 1 (ไวมากที่สุด) ค่าเริ่มต้นคือ 0.6
silero_sensitivity (ลอย, ค่าเริ่มต้น = 0.6): ความไวสำหรับการตรวจจับกิจกรรมเสียงของ Silero ตั้งแต่ 0 (ไวน้อยที่สุด) ถึง 1 (ไวมากที่สุด) ค่าเริ่มต้นคือ 0.6
silero_use_onnx (bool, default = false): เปิดใช้งานการใช้งานของโมเดลที่ผ่านการฝึกอบรมมาก่อนจาก Silero ในรูปแบบ ONNX (เปิดเครือข่ายประสาทเทียม) แทนรูปแบบ pytorch ค่าเริ่มต้นเป็นเท็จ แนะนำสำหรับประสิทธิภาพที่เร็วขึ้น
post_speech_silence_duration (ลอย, ค่าเริ่มต้น = 0.2): ระยะเวลาในวินาทีของความเงียบที่ต้องทำตามคำพูดก่อนที่การบันทึกจะเสร็จสิ้น สิ่งนี้ทำให้มั่นใจได้ว่าการหยุดสั้น ๆ ในระหว่างการพูดจะไม่สิ้นสุดการบันทึกก่อนกำหนด
min_gap_between_recordings (float, default = 1.0): ระบุช่วงเวลาขั้นต่ำในวินาทีที่ควรมีอยู่ระหว่างการสิ้นสุดของเซสชันการบันทึกหนึ่งและจุดเริ่มต้นของอีกครั้งเพื่อป้องกันการบันทึกติดต่อกันอย่างรวดเร็ว
min_length_of_recording (ลอย, ค่าเริ่มต้น = 1.0): ระบุระยะเวลาขั้นต่ำในวินาทีที่เซสชันการบันทึกควรมีอายุการใช้งานเพื่อให้แน่ใจว่าการจับเสียงที่มีความหมายป้องกันการบันทึกที่สั้นมากหรือกระจัดกระจายมากเกินไป
pre_recording_buffer_duration (ลอย, ค่าเริ่มต้น = 0.2): ช่วงเวลาในวินาทีในระหว่างที่เสียงถูกบัฟเฟอร์ก่อนการบันทึกอย่างเป็นทางการ สิ่งนี้จะช่วยให้การปรับสมดุลความล่าช้าในการตรวจจับกิจกรรมการพูดเพื่อให้แน่ใจว่าไม่พลาดเสียงเริ่มต้น
ON_VAD_DETECT_START : ฟังก์ชั่นที่เรียกได้ว่าเกิดขึ้นเมื่อระบบเริ่มฟังกิจกรรมเสียง
ON_VAD_DETECT_STOP : ฟังก์ชั่นที่เรียกได้ว่าเกิดขึ้นเมื่อระบบหยุดฟังกิจกรรมเสียง
wake_words (str, default = ""): Wake Words สำหรับการเริ่มต้นการบันทึก สามารถให้คำหลายคำที่สามารถให้เป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาคได้ คำพูดที่ได้รับการสนับสนุนคือ: Alexa, Americano, Blueberry, Bumblebee, คอมพิวเตอร์, ส้มโอ, ตั๊กแตน, เฮ้ Google, เฮ้ Siri, Jarvis, โอเค Google, Picovoice, เม่น, เทอร์มิเนเตอร์
WAKE_WORDS_SENSITIVITY (ลอย, ค่าเริ่มต้น = 0.6): ระดับความไวสำหรับการตรวจจับคำปลุก (0 สำหรับความอ่อนไหวน้อยที่สุด 1 สำหรับความอ่อนไหวมากที่สุด)
WAKE_WORD_ACTIVATION_DELAY (ลอย, ค่าเริ่มต้น = 0): ระยะเวลาในวินาทีหลังจากเริ่มการตรวจสอบก่อนที่ระบบจะเปลี่ยนการเปิดใช้งานการเปิดใช้งานคำหากไม่มีการตรวจพบเสียงเริ่มแรก หากตั้งค่าเป็นศูนย์ระบบจะใช้การเปิดใช้งาน Wake Word ทันที
WAKE_WORD_TIMEOUT (ลอย, ค่าเริ่มต้น = 5): ระยะเวลาเป็นวินาทีหลังจากรับรู้คำปลุก หากไม่มีการตรวจพบกิจกรรมเสียงที่ตามมาภายในหน้าต่างนี้ระบบจะเปลี่ยนกลับไปสู่สถานะที่ไม่ได้ใช้งานรอการเปิดใช้งานคำหรือการเปิดใช้งานเสียงครั้งต่อไป
ON_WAKEWORD_DETECTED : ฟังก์ชั่นที่เรียกได้ว่าเรียกใช้เมื่อตรวจพบคำปลุก
ON_WAKEWORD_TIMEOUT : ฟังก์ชั่นที่เรียกได้ว่าเกิดขึ้นเมื่อระบบกลับไปสู่สถานะที่ไม่ได้ใช้งานหลังจากไม่ตรวจพบคำพูดหลังจากการเปิดใช้งาน WAKE Word
ON_WAKEWORD_DETECTION_START : ฟังก์ชั่นที่เรียกได้ว่าเกิดขึ้นเมื่อระบบเริ่มฟังคำปลุก
ON_WAKEWORD_DETECTION_END : ฟังก์ชั่นที่เรียกได้ว่าเกิดขึ้นเมื่อหยุดฟังคำปลุก (เช่นเนื่องจากการหมดเวลาหรือการปลุกคำที่ตรวจพบ)
ยินดีต้อนรับการมีส่วนร่วมเสมอ!
มิกซ์
Kolja Beigel
อีเมล: [email protected]
คนอื่น ๆ