- Handy คือ แอปเดสก์ท็อปแปลงเสียงเป็นข้อความแบบฟรีและโอเพนซอร์ส ที่ทำงานได้ ออฟไลน์เต็มรูปแบบ พร้อมการออกแบบที่เน้นความเป็นส่วนตัว
- สร้างบนพื้นฐาน Tauri(Rust + React/TypeScript) โดยกดคีย์ลัดแล้วพูด จากนั้นเสียงจะถูกป้อนลงในช่องข้อความทันที
- รองรับโมเดล Whisper และ Parakeet V3 พร้อมทำ การจดจำเสียงในเครื่อง ด้วย GPU acceleration หรือบน CPU
- ใช้งานได้ทั้งบน Windows, macOS, Linux และพัฒนาโดยให้ความสำคัญกับ การขยายความสามารถและการ fork ได้ง่าย เพื่อส่งเสริมการมีส่วนร่วมจากนักพัฒนา
- เป็น เครื่องมือป้อนข้อมูลด้วยเสียงที่เน้นความเป็นส่วนตัว ซึ่งประมวลผลทั้งหมดในเครื่องโดยไม่ส่งขึ้นคลาวด์ จึงมีความเข้าถึงง่ายและปรับแต่งได้สูง
ภาพรวม
- Handy เป็น แอปจดจำเสียงที่ฟรี โอเพนซอร์ส และขยายต่อได้ ซึ่งทำงานแบบออฟไลน์เต็มรูปแบบโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต
- พัฒนาด้วย เฟรมเวิร์ก Tauri โดยผสาน Rust backend เข้ากับ React/TypeScript frontend
- ผู้ใช้สามารถกดคีย์ลัดเพื่อพูด และเมื่อปล่อยมือ โมเดล Whisper หรือ Parakeet V3 จะเปลี่ยนเสียงเป็นข้อความแล้ววางลงในแอปที่กำลังใช้งานอยู่
- ข้อมูลเสียงทั้งหมดถูกประมวลผลภายในเครื่อง จึง ไม่มีความเสี่ยงจากการรั่วไหลของข้อมูลส่วนบุคคล
ปรัชญาของ Handy
- ฟรี: เครื่องมือเพื่อการเข้าถึงควรเป็นสิ่งที่ทุกคนใช้งานได้
- โอเพนซอร์ส: ทุกคนสามารถขยายและปรับปรุงฟังก์ชันได้
- คุ้มครองความเป็นส่วนตัว: ข้อมูลเสียงจะไม่ถูกส่งไปยังคลาวด์
- ความเรียบง่าย: มุ่งเน้นเพียงเป้าหมายเดียว คือการแปลงเสียงเป็นข้อความ
- เป้าหมายไม่ใช่การสร้างแอปที่ “สมบูรณ์แบบที่สุด” แต่เป็นการสร้างแอปที่ “fork ได้ง่ายที่สุด”
วิธีการทำงาน
- ผู้ใช้สามารถเริ่ม/หยุดการบันทึกด้วย คีย์ลัด หรือใช้ โหมด push-to-talk ได้
- ใช้ Silero VAD กรองช่วงที่ไม่มีเสียง และแปลงเสียงด้วยโมเดล Whisper หรือ Parakeet V3
- โมเดล Whisper: มีเวอร์ชัน Small, Medium, Turbo, Large และรองรับ GPU acceleration
- Parakeet V3: ปรับแต่งมาสำหรับ CPU และมีฟังก์ชันตรวจจับภาษาอัตโนมัติ
- ข้อความที่แปลงแล้วจะถูกแทรกอัตโนมัติลงในช่องป้อนข้อมูลของแอปพลิเคชันที่กำลังใช้อยู่
- รองรับทั้ง Windows, macOS, Linux
สถาปัตยกรรม
- ฟรอนต์เอนด์: React + TypeScript + Tailwind CSS
- แบ็กเอนด์: พื้นฐาน Rust รับผิดชอบการประมวลผลเสียงและการอนุมานของแมชชีนเลิร์นนิง
- ไลบรารีหลัก
whisper-rs: จดจำเสียงในเครื่องด้วยโมเดล Whisper
transcription-rs: จดจำบน CPU ด้วยโมเดล Parakeet
cpal: อินพุต/เอาต์พุตเสียง
vad-rs: การตรวจจับกิจกรรมเสียงพูด
rdev: จัดการคีย์ลัดระดับระบบและอีเวนต์ของระบบ
rubato: การรีแซมเปิลเสียง
- โหมดดีบัก: เข้าใช้งานได้ด้วย
Cmd+Shift+D(macOS) หรือ Ctrl+Shift+D(Windows/Linux)
ปัญหาที่ทราบและข้อจำกัด
- โมเดล Whisper ขัดข้อง: มีปัญหาโมเดลล่มในบางสภาพแวดล้อมของ Windows/Linux
- การรองรับ Wayland แบบจำกัด: ในสภาพแวดล้อม Linux Wayland จำเป็นต้องติดตั้ง
wtype หรือ dotool
- เครื่องมือป้อนข้อความ
- X11:
xdotool
- Wayland:
wtype หรือ dotool
- หากไม่ได้ติดตั้งเครื่องมือ ระบบจะใช้
enigo แทน แต่มีข้อจำกัดด้านความเข้ากันได้
- ปิดโอเวอร์เลย์บน Linux เป็นค่าเริ่มต้น: เพื่อหลีกเลี่ยงปัญหาการชนกันของโฟกัส จึงปิดไว้โดยค่าเริ่มต้น
ความต้องการของระบบ
- สำหรับโมเดล Whisper
- macOS: M series หรือ Intel Mac
- Windows/Linux: Intel, AMD, NVIDIA GPU (แนะนำ Ubuntu 22.04/24.04)
- สำหรับโมเดล Parakeet V3
- ใช้ CPU เท่านั้น แนะนำ Intel Skylake (รุ่นที่ 6) ขึ้นไป
- บนฮาร์ดแวร์ระดับกลาง ทำงานได้เร็วประมาณ 5 เท่าของเวลาจริง
- มีฟังก์ชันตรวจจับภาษาอัตโนมัติ
โรดแมปการพัฒนา
- ฟังก์ชันที่กำลังดำเนินการ
- เพิ่มไฟล์บันทึกดีบัก
- ปรับปรุงคีย์ลัดบน macOS (รองรับปุ่ม Globe และเขียนส่วนจัดการคีย์ลัดระดับระบบใหม่)
- ฟังก์ชันวิเคราะห์แบบเลือกใช้: เก็บข้อมูลการใช้งานแบบไม่ระบุตัวตนโดยอาศัยการยินยอมอย่างชัดเจน
- รีแฟกเตอร์ระบบตั้งค่าและปรับปรุงชั้น abstraction
- จัดระเบียบโครงสร้างคำสั่งของ Tauri และเพิ่ม type safety
การแก้ปัญหาและการติดตั้งโมเดลด้วยตนเอง
- ในสภาพแวดล้อมที่มีข้อจำกัดด้านเครือข่าย สามารถ ดาวน์โหลดและติดตั้งโมเดลด้วยตนเอง ได้
- สร้างโฟลเดอร์
models ภายในไดเรกทอรีข้อมูลแอป แล้ววางไฟล์โมเดลไว้
- โมเดล Whisper: คัดลอกไฟล์
.bin โดยตรง
- โมเดล Parakeet: แตกไฟล์
.tar.gz แล้วคงชื่อโฟลเดอร์ตามที่กำหนด
- หลังติดตั้งแล้ว เมื่อรีสตาร์ตแอป ระบบจะตรวจพบโมเดลโดยอัตโนมัติ
วิธีร่วมพัฒนา
- ตรวจสอบ GitHub issue ก่อน จากนั้น fork และสร้าง branch
- ทดสอบบนแพลตฟอร์มเป้าหมายให้เพียงพอก่อน ส่ง Pull Request
- สามารถเข้าร่วมชุมชนผ่านอีเมล(contact@handy.computer) หรือ Discord
- เป้าหมายคือการมอบรากฐานให้ชุมชนต่อยอดได้ ผ่าน โค้ดเบสที่เรียบง่ายและมีโครงสร้างที่ดี
โปรเจกต์ที่เกี่ยวข้องและไลเซนส์
- Handy CLI: เวอร์ชันคอมมานด์ไลน์ที่พัฒนาด้วย Python
- handy.computer: เว็บไซต์ทางการและเดโม
- เผยแพร่ภายใต้ MIT License
- สร้างบนพื้นฐานของโปรเจกต์โอเพนซอร์สอย่าง Whisper(OpenAI), Silero, Tauri เป็นต้น
คำกล่าวอ้าง
- “Handy สามารถเป็นจุดสิ้นสุดการค้นหาเครื่องมือจดจำเสียงของคุณได้ ไม่ใช่เพราะมันสมบูรณ์แบบ แต่เพราะคุณสามารถทำให้มันสมบูรณ์แบบได้”
1 ความคิดเห็น
ความเห็นจาก Hacker News
ใช้คู่กับ Parakeet V3 แล้วตอบสนองแทบจะทันทีและแม่นยำดีพอ
ฉันมักใช้วิธีคุยกับเอเจนต์ CLI แล้วขอว่า “บอกฉันหน่อยว่าคุณเข้าใจคำพูดฉันยังไง”
แบบนี้ช่วยยืนยันความเข้าใจและยังทำหน้าที่คล้ายสเปกเอกสารด้วย
ช่วงหลังฉันก็ลองชุด Handy + Parakeet v3 ด้วย ซึ่งทำงานได้ดีมาก เลยว่าจะใช้ชุดนี้ไปอีกสักสองสามวัน
ถ้ากด Cmd‑Shift‑D เพื่อเปิด UI “debug” ก็จะเห็นตัวเลือกเพิ่มเติมอย่าง post‑processing หรือการเพิ่มช่องว่าง
ฉันอยากพูดคำสั่งอย่าง “cd ~/projects” หรือ “git push --force” ได้
เพราะงั้นแอป TTS อย่าง SuperWhisper เลยช่วยได้มาก
หวังว่า Handy จะให้ประสบการณ์คล้ายกัน
แต่ถ้าจะพัฒนาไปอีกขั้น ฉันคิดว่ามันต้องก้าวข้ามการแปลงเสียงเป็นข้อความอย่างเดียวไปสู่ การขยายความตามบริบท
เช่น พูดโค้ดใน IDE แล้วได้โค้ดจริงถูกสร้างขึ้นมา
ท้ายที่สุดก็คือการรวม TTS เข้ากับการใช้งานคอมพิวเตอร์
ultraplanมันบันทึกเสียงด้วย Whisper แบบรันในเครื่อง และ เก็บภาพหน้าจอ เนื้อหาในคลิปบอร์ด ฯลฯ เป็นไทม์ไลน์
จากนั้นเอเจนต์อย่าง Claude Code ก็จะอ่านไทม์ไลน์นี้แล้วทำงานต่อ
พูดว่า “marco” เพื่อสั่ง ควบคุมแบบแฮนด์ฟรี อย่างการจับภาพหน้าจอก็ได้
ถ้าสนใจฉันจัดระเบียบแล้วเอาขึ้น GitHub ได้
ตอนนี้ก็มีการทดลองใช้โมเดลโลคัลขนาดเล็ก (moondream, qwen ฯลฯ) เพื่อทำความเข้าใจบริบทของคอมพิวเตอร์
ตอนที่นิ้วฉันเคยหัก ฉันเคยแมปคีย์ลัดเข้ากับ Handy เพื่อทำระบบควบคุมตามบริบทแบบง่าย ๆ
เช่นกรณีจากปี 2013 อย่าง Using Voice to Code Faster than Keyboard
และงานวิจัยล่าสุดก็มี บทความนี้
ถ้าเอาผลลัพธ์ STT ป้อนเข้า LLM ก็สามารถตีความเจตนาแล้วสร้างเป็น ชุดคำสั่ง ได้
ใน CLI การแปลงคำสั่งเสียงเป็นคำสั่งเชลล์โดยตรงทำได้ง่าย
แต่ใน GUI จะซับซ้อนขึ้นนิดหน่อยเพราะต้องรู้สถานะของหน้าจอ
MacWhisper บน macOS สามารถส่งข้อความถอดเสียงไปยัง endpoint ที่เข้ากันได้กับ OpenAI
Superwhisper เป็นแบบเสียเงิน แต่มีตัวเลือกซื้อแบบตลอดชีพและมีฟีเจอร์เยอะ แม้จะดูแลโดยนักพัฒนาเดี่ยวจึงมีบั๊กบ้างเป็นครั้งคราว
Hex เป็นตัวเลือกฟรีที่เบาและเรียบที่สุด
Fluid Voice มีฟีเจอร์แปลกดีคือแสดงข้อความแบบเรียลไทม์ขณะพูด
Handy มี UI สีชมพูน่ารักและฉันชอบหน้าต่างประวัติ การตั้งค่ากู้คืนคลิปบอร์ดค่อนข้างแปลกนิดหน่อย
การสลับติดตั้งหลายแอปไปมาทำให้มีปัญหาชนกันอยู่บ้าง
ต้องขอบคุณที่ Nvidia เปิดซอร์ส Parakeet ทำให้ทั้งหมดเร็วมาก
ฉันชอบฟีเจอร์สตรีมการถอดเสียงแบบเรียลไทม์ คือเห็นผลทันทีแม้คุณภาพจะต่ำ แล้วค่อยถูกแทนที่ด้วยเวอร์ชันคุณภาพสูงในภายหลัง
ส่วนใหญ่เสียเงินหรือเป็นแบบสมัครสมาชิก จนเกือบจะคิดทำเองแล้ว แต่ Handy เร็ว เรียบง่าย และไม่รบกวนการใช้งาน
แถมยังอัปเดตอย่างต่อเนื่อง เลยพอใจมากจริง ๆ
ฟีเจอร์ post‑processing ก็น่าจะเจ๋งดี
การเพิ่มคำด้วยตนเองก็ดี แต่ถ้าระบุคำที่ไม่แน่ใจให้เห็นได้ก็จะช่วยแก้ไขได้ง่ายขึ้น
คีย์ลัดเริ่มต้นคือ Ctrl+Space และเมื่อปล่อยปุ่มแล้ว ข้อความถอดเสียงจะถูกแทรกทันที
ถ้าตอนนั้น Ctrl ยังถูกกดค้างอยู่ ข้อความที่แทรกจะ ถูกตีความเป็นอักขระ Ctrl
สภาพแวดล้อมที่ทดสอบคือ Linux x64, X11, Emacs
ฉันเคยลอง Monologue, Superwhisper และ Aqua มาแล้ว แต่ Handy รันในเครื่อง และไม่มีค่าสมัครสมาชิก
แนะนำมาก
จากคำอธิบายดูคล้ายกัน Handy ออกรุ่นแรกในเดือนมิถุนายน 2025 ส่วน OpenWhispr ออกตามมาหนึ่งเดือนให้หลัง
Handy มีดาวบน GitHub 11k ส่วน OpenWhispr มีราว 730
ตอนนั้น OpenWhispr ยังไม่มีโมเดล Parakeet และ UI ก็ยังไม่ลื่นเท่าไร
Handy ใช้งานได้เข้าใจง่ายเพราะมี UI แบบมินิมอล
แม้จะขาดฟีเจอร์ขั้นสูง แต่ฉันใช้มาได้สองเดือนแล้วและไม่ได้คิดจะหาแอป STT ตัวอื่น
การตั้งค่าก็เรียบง่ายพอดีเลยใช้งานสะดวก
ฉันสงสัยว่าออปชัน “discharging the model” คืออะไร แต่ดูเหมือนจะไม่กระทบ RAM หรือ CPU
ถ้า discharge ก็จะถูกเอาออกจากหน่วยความจำ ทำให้เริ่มต้นช้าลง