AI Agent + Voice — สอนสร้าง Voice Assistant ภาษาไทย
เมื่อ 2–3 ปีก่อน Voice AI ภาษาไทยยังเป็นเรื่องที่ฟังดูไกลตัว — เสียงหุ่นยนต์ฟังยาก, ไม่เข้าใจ accent ไทย, latency สูงจนคุยไม่รู้เรื่อง
แต่ปี 2026 ตลาดเปลี่ยนไปอย่างสิ้นเชิง
Call center ไทยหลายแห่งเริ่มใช้ AI Voice Agent รับสายแทนคนจริงแล้วในกะดึก ร้านอาหาร drive-thru บางเจ้าทดลอง Voice AI รับออร์เดอร์ ลูกค้าโต้ตอบกลับภาษาไทยได้อย่างเป็นธรรมชาติ
ถ้าคุณอยากสร้าง AI Voice Agent ภาษาไทย เอง — บทความนี้จะพาคุณเดินทางตั้งแต่ concept ไปจนถึง code ที่รันได้จริง
1. Voice Agent ภาษาไทย — เทรนด์ 2026
ข้อมูลจาก Gartner ปี 2026 ระบุว่า 30% ของ interaction ระหว่างธุรกิจกับลูกค้า จะผ่าน Voice AI ภายในปี 2028 และตัวเลขในเอเชียตะวันออกเฉียงใต้เติบโตเร็วกว่าค่าเฉลี่ยโลกเนื่องจากพฤติกรรมการโทรยังคงแข็งแกร่ง
สำหรับไทยโดยเฉพาะ ปัจจัยที่ขับเคลื่อนตลาด:
- ต้นทุนแรงงาน Call Center สูงขึ้น — เงินเดือน agent เริ่มต้น 15,000–20,000 บาท/เดือน บวกค่า turnover ที่สูง
- ลูกค้าไทยโทรหาบริษัทมากกว่าพิมพ์ — โดยเฉพาะกลุ่มอายุ 35+ ที่คุ้นเคยกับ Voice มากกว่า Chat
- Whisper + LLM ทำให้ภาษาไทยแม่นขึ้นมาก — accuracy ของ ASR ภาษาไทยพุ่งจาก ~70% ในปี 2022 เป็น 92–95% ในปี 2026
- API cost ถูกลง 10x — ทำให้ scale ได้โดยไม่ต้องลงทุน infrastructure เอง
ถ้าคุณสนใจภาพรวม AI Agent ในไทย แนะนำอ่าน คู่มือสร้าง AI Agent ภาษาไทย 2026 ก่อนเพื่อเข้าใจ foundation
2. Architecture: STT → LLM → TTS
Voice Agent ทุกตัวทำงานบน pipeline เดียวกัน:
ผู้ใช้พูด
↓
[STT] Speech-to-Text → text ภาษาไทย
↓
[LLM] Language Model → คำตอบที่เหมาะสม
↓
[TTS] Text-to-Speech → เสียงพูดตอบกลับ
↓
ผู้ใช้ได้ยิน
แต่ละ block มีทางเลือกหลายตัว และการเลือกถูกต้องส่งผลต่อ latency, ความแม่นยำ และต้นทุน อย่างมีนัยสำคัญ
ข้อจำกัดที่ต้องเข้าใจก่อน
ภาษาไทยมีความท้าทายเฉพาะตัว:
- ไม่มี space ระหว่างคำ — ทำให้ word segmentation ยากกว่า
- tone mark — คำเดียวกันออกเสียงต่างกันได้ถึง 5 tones
- คำทับศัพท์อังกฤษ — ออกเสียงแตกต่างกันมากตาม speaker
- ภาษาปาก vs ทางการ — model ต้องรองรับทั้งสองแบบ
3. STT ภาษาไทย — ตัวเลือกที่ดีที่สุดปี 2026
OpenAI Whisper (แนะนำสำหรับ accuracy สูง)
Whisper Large v3 รองรับภาษาไทยได้ดีที่สุดในกลุ่ม open-source accuracy ~93–95% กับเสียงพูดทั่วไป
import whisper
model = whisper.load_model("large-v3")
result = model.transcribe("audio.wav", language="th")
print(result["text"])
ข้อดี: Free, privacy สูง (run local), accuracy ดีมาก ข้อเสีย: ต้องการ GPU สำหรับ real-time, latency 0.5–2 วินาที
Google Speech-to-Text (แนะนำสำหรับ production)
Google STT v2 รองรับ th-TH พร้อม streaming mode ทำให้ latency ต่ำลง
from google.cloud import speech
client = speech.SpeechClient()
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=16000,
language_code="th-TH",
)
ข้อดี: Streaming real-time, scalable, ไม่ต้องดู hardware ข้อเสีย: มีค่าใช้จ่าย ~$0.006/15 วินาที
Botnoi STT (สำหรับ Thai-first)
Botnoi Voice เป็น Thai startup ที่สร้าง STT/TTS เฉพาะภาษาไทย รองรับ accent ท้องถิ่นได้ดีกว่า global model
ข้อดี: Thai-native, ราคาถูกกว่า Google ในบางแพลน, รองรับสำเนียงไทย ข้อเสีย: Latency สูงกว่านิดหน่อย, ecosystem เล็กกว่า
สำหรับ benchmark STT ภาษาไทยแบบละเอียด อ่านต่อที่ AI Speech to Text ภาษาไทย — เปรียบเทียบ 2026
4. LLM + Memory — สมองของ Voice Agent
เมื่อ STT แปลงเสียงเป็น text แล้ว LLM จะประมวลผลและสร้างคำตอบ
เลือก LLM ตามงาน
| Use Case | Model แนะนำ | เหตุผล |
|---|---|---|
| Customer Service | Claude 3.7 Sonnet | เข้าใจ context ยาว, ตอบสุภาพ |
| General Assistant | GPT-5 mini | เร็ว, ถูก, เหมาะ real-time |
| Complex reasoning | Claude Opus 4 | ต้องการ reasoning ลึก |
| Low latency critical | Llama 3.3 70B | Self-host ได้, ควบคุม latency |
Memory ทำให้ Voice Agent จำได้
Voice Agent ที่ดีต้องจำ context ของการสนทนาได้ ไม่ใช่ตอบแบบ stateless
from anthropic import Anthropic
client = Anthropic()
conversation_history = []
def chat_with_memory(user_message: str) -> str:
conversation_history.append({
"role": "user",
"content": user_message
})
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=500,
system="""คุณเป็น Voice Assistant ภาษาไทยที่ฉลาดและเป็นมิตร
ตอบกระชับ เหมาะกับการพูด ไม่ใช้ bullet point หรือ markdown
ตอบเป็นประโยคที่ฟังแล้วเป็นธรรมชาติ""",
messages=conversation_history
)
assistant_message = response.content[0].text
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
สำหรับ production ต้องเพิ่ม session management เพื่อ isolate conversation ระหว่าง caller แต่ละคน และใช้ database เก็บ history แทน in-memory list
ถ้าต้องการเชื่อม Voice Agent กับข้อมูลธุรกิจ ดูที่ สร้าง AI Agent Customer Service ภาษาไทย ที่ครอบคลุม RAG และ knowledge base
5. TTS ภาษาไทย — เสียงที่ฟังเป็นธรรมชาติ
Text-to-Speech คือส่วนที่ส่งผลต่อ "ความรู้สึก" ของผู้ใช้มากที่สุด เสียงหุ่นยนต์ทำลายประสบการณ์ทั้งหมดได้ทันที
ElevenLabs (คุณภาพสูงสุด)
ElevenLabs รองรับภาษาไทยด้วย multilingual v2 model คุณภาพเสียงเป็นธรรมชาติที่สุด
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="YOUR_API_KEY")
audio = client.text_to_speech.convert(
voice_id="Thai_Female_Voice_ID",
text="สวัสดีครับ มีอะไรให้ช่วยไหมครับ",
model_id="eleven_multilingual_v2",
output_format="mp3_44100_128"
)
ดู guide ละเอียดที่ ElevenLabs TTS ภาษาไทย — คู่มือฉบับสมบูรณ์ และ เปรียบเทียบ AI Voice ภาษาไทย 2026
Botnoi TTS (Thai-native, ราคาคุ้ม)
Botnoi เป็นตัวเลือกที่ดีสำหรับ Thai market โดยเฉพาะ — สำเนียงชัด, รองรับ tone ได้ดี และราคาถูกกว่า ElevenLabs
import requests
def botnoi_tts(text: str, speaker: str = "1") -> bytes:
response = requests.post(
"https://api-voice.botnoi.ai/openapi/v1/generate_audio",
headers={
"Botnoi-Token": "YOUR_TOKEN",
"Content-Type": "application/json"
},
json={
"text": text,
"speaker": speaker,
"volume": 1,
"speed": 1,
"type_media": "mp3"
}
)
return response.content
Google TTS (เสถียร, ราคาต่ำ)
สำหรับ volume สูงและงบจำกัด Google TTS ภาษาไทย (th-TH, WaveNet) ให้คุณภาพดีพอและ latency ต่ำ
6. Tutorial: สร้าง Voice Agent ขั้นพื้นฐาน (Python)
มาสร้าง Voice Agent แบบ end-to-end ที่รันได้จริงบน local machine
ติดตั้ง dependencies
pip install openai-whisper anthropic elevenlabs pyaudio sounddevice numpy
Voice Agent แบบ complete pipeline
import anthropic
import whisper
import sounddevice as sd
import numpy as np
import tempfile
import wave
from elevenlabs.client import ElevenLabs
from elevenlabs import play
# Initialize clients
whisper_model = whisper.load_model("base") # ใช้ "large-v3" สำหรับ production
anthropic_client = anthropic.Anthropic(api_key="YOUR_ANTHROPIC_KEY")
elevenlabs_client = ElevenLabs(api_key="YOUR_ELEVENLABS_KEY")
conversation_history = []
SYSTEM_PROMPT = """คุณเป็น Voice Assistant ภาษาไทยที่เป็นมิตรและช่วยเหลือได้ดี
ตอบสั้นและกระชับ ใช้ภาษาพูดที่เป็นธรรมชาติ
ห้ามใช้ bullet points, markdown หรือสัญลักษณ์พิเศษ
ตอบเป็นประโยคสมบูรณ์ที่ฟังแล้วไม่ขัดหู"""
def record_audio(duration: int = 5, sample_rate: int = 16000) -> str:
"""บันทึกเสียงและบันทึกเป็นไฟล์ชั่วคราว"""
print(f"กำลังฟัง... ({duration} วินาที)")
recording = sd.rec(
int(duration * sample_rate),
samplerate=sample_rate,
channels=1,
dtype=np.int16
)
sd.wait()
temp_file = tempfile.mktemp(suffix=".wav")
with wave.open(temp_file, "wb") as wf:
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(sample_rate)
wf.writeframes(recording.tobytes())
return temp_file
def speech_to_text(audio_file: str) -> str:
"""แปลงเสียงเป็น text ด้วย Whisper"""
result = whisper_model.transcribe(audio_file, language="th")
text = result["text"].strip()
print(f"คุณพูดว่า: {text}")
return text
def get_llm_response(user_text: str) -> str:
"""ส่ง text ให้ Claude และรับคำตอบ"""
conversation_history.append({"role": "user", "content": user_text})
response = anthropic_client.messages.create(
model="claude-sonnet-4-5",
max_tokens=300,
system=SYSTEM_PROMPT,
messages=conversation_history
)
answer = response.content[0].text
conversation_history.append({"role": "assistant", "content": answer})
print(f"AI ตอบว่า: {answer}")
return answer
def text_to_speech(text: str) -> None:
"""แปลง text เป็นเสียงด้วย ElevenLabs"""
audio = elevenlabs_client.text_to_speech.convert(
voice_id="YOUR_THAI_VOICE_ID",
text=text,
model_id="eleven_multilingual_v2"
)
play(audio)
def run_voice_agent():
"""Main loop ของ Voice Agent"""
print("Voice Agent พร้อมแล้ว! พูดเพื่อเริ่มต้น (Ctrl+C เพื่อหยุด)")
while True:
try:
# Step 1: บันทึกเสียง
audio_file = record_audio(duration=5)
# Step 2: STT
user_text = speech_to_text(audio_file)
if not user_text:
continue
# Step 3: LLM
response_text = get_llm_response(user_text)
# Step 4: TTS
text_to_speech(response_text)
except KeyboardInterrupt:
print("\nหยุด Voice Agent แล้ว")
break
if __name__ == "__main__":
run_voice_agent()
ทดสอบ
- ใส่ API keys ให้ครบ (
ANTHROPIC_KEY,ELEVENLABS_KEY) - รัน
python voice_agent.py - พูดคำถามภาษาไทย รอประมาณ 2–3 วินาที
- ฟัง AI ตอบกลับเป็นเสียงไทย
โค้ดนี้เป็น prototype — production จะต้องเพิ่ม VAD (Voice Activity Detection), error handling และ session management
7. Use Cases จริงที่ได้ผลในตลาดไทย
Call Center อัตโนมัติ
ธนาคารและบริษัทประกันหลายแห่งในไทยใช้ Voice AI รับสาย tier 1 (คำถามง่าย ๆ เช่น ยอดบัตร, สาขาใกล้เคียง) ก่อนโอนไปหา agent จริงเมื่อซับซ้อนขึ้น
ผลที่วัดได้จริง:
- ลด call volume ที่ถึง agent จริง 40–60%
- AHT (Average Handle Time) ลดลง เพราะ agent ได้รับ context จาก AI แล้ว
- พร้อมรับสาย 24/7 โดยไม่เพิ่มต้นทุน headcount
Personal Assistant ภาษาไทย
Startup บางรายในไทยกำลังสร้าง Personal Voice Assistant ที่ช่วยจัดการ calendar, แปลภาษา, สรุปข่าว — ทำงานได้บน iOS/Android ผ่าน app
Drive-Thru อัจฉริยะ
ร้านอาหาร chain ในไทยทดลองระบบ Voice AI รับออร์เดอร์ drive-thru ที่เชื่อมกับ POS โดยตรง ลูกค้าสั่งอาหารด้วยเสียงภาษาไทยและได้รับการยืนยันออร์เดอร์
Inclusive Access สำหรับผู้ใช้ที่พิมพ์ยาก
Voice Agent ช่วยเปิด access ให้กลุ่มผู้สูงอายุและผู้พิการที่ใช้งาน keyboard ยาก — เป็น use case ที่มี social impact สูงและรัฐบาลไทยให้ความสนใจ
สำหรับ use case ด้าน AI Agent กับ SME ไทยโดยตรง อ่านเพิ่มที่ AI Agent สำหรับธุรกิจ SME ไทย
8. Latency Optimization — เป้าหมาย < 500ms
Latency คือตัวแปรที่สำคัญที่สุดใน Voice UX การตอบช้า > 2 วินาทีทำให้ผู้ใช้รู้สึกว่าระบบค้างหรือไม่ได้ยิน
วัด latency แต่ละ stage
import time
def timed_pipeline(audio_file: str):
t0 = time.time()
# STT
user_text = speech_to_text(audio_file)
t1 = time.time()
print(f"STT: {(t1-t0)*1000:.0f}ms")
# LLM
response = get_llm_response(user_text)
t2 = time.time()
print(f"LLM: {(t2-t1)*1000:.0f}ms")
# TTS
text_to_speech(response)
t3 = time.time()
print(f"TTS: {(t3-t2)*1000:.0f}ms")
print(f"Total: {(t3-t0)*1000:.0f}ms")
เทคนิคลด latency
1. Streaming TTS — เริ่มเล่นเสียงทันทีที่ได้ token แรกจาก LLM แทนรอให้ครบทั้งประโยค
# ใช้ streaming response จาก Claude
with anthropic_client.messages.stream(
model="claude-sonnet-4-5",
max_tokens=200,
messages=conversation_history
) as stream:
full_response = ""
for text in stream.text_stream:
full_response += text
# ส่ง text chunk ไปยัง TTS แบบ streaming
2. VAD (Voice Activity Detection) — หยุดบันทึกทันทีที่ผู้ใช้หยุดพูด แทนรอ fixed duration
3. Parallel processing — เริ่ม TTS request ทันทีที่ LLM สร้างประโยคแรกเสร็จ
4. ใช้ LLM model เล็กลงสำหรับ simple tasks — claude-haiku หรือ gpt-4o-mini latency ต่ำกว่า 2–3 เท่า
5. Cache คำตอบซ้ำ ๆ — คำถาม FAQ เช่น "เวลาทำการ" ไม่ต้องถาม LLM ทุกครั้ง
เป้าหมาย latency จริง
| Component | Target | Achievable |
|---|---|---|
| STT (Google Streaming) | < 200ms | ได้จริง |
| LLM (Haiku/GPT-4o-mini) | < 150ms TTFT | ได้จริง |
| TTS (ElevenLabs Streaming) | < 100ms | ได้จริง |
| Total perceived | < 500ms | ทำได้ |
ถ้าทำ streaming ครบทุก stage สามารถให้ผู้ใช้รู้สึกว่า AI ตอบเกือบทันทีได้
9. ข้อผิดพลาดที่พบบ่อยและวิธีแก้
1. STT จับเสียงผิดเพราะ background noise
ปัญหา: Whisper หรือ Google STT ได้ข้อความผิดพลาดเมื่อมีเสียงรบกวนรอบข้าง
วิธีแก้:
- ใช้ VAD (Voice Activity Detection) เช่น
silero-vadเพื่อตัดเสียงรบกวนก่อนส่ง STT - เพิ่ม noise reduction ด้วย
noisereducelibrary - ปรับ
compression_ratio_thresholdใน Whisper ให้ต่ำลงเพื่อ reject input คุณภาพต่ำ
2. TTS ออกเสียงคำทับศัพท์ผิด
ปัญหา: คำเช่น "AI", "CPU", "GPU" ถูกอ่านออกมาแปลกๆ ในภาษาไทย
วิธีแก้:
- เพิ่ม pre-processing ก่อนส่ง TTS เพื่อแปลงคำทับศัพท์เป็นการออกเสียงภาษาไทย เช่น "AI" → "เอไอ"
- ใช้ pronunciation dictionary สำหรับคำศัพท์เทคนิคที่พบบ่อยในระบบของคุณ
- ElevenLabs รองรับ SSML ที่ช่วย control การออกเสียงได้ละเอียดขึ้น
3. LLM ตอบยาวเกินไปสำหรับ Voice
ปัญหา: LLM ตอบเป็นรายการ bullet point หรือตอบยาวมากจนฟังไม่รู้เรื่องทาง Voice
วิธีแก้:
- ระบุใน System Prompt อย่างชัดเจนว่า "ตอบสั้น กระชับ ไม่เกิน 2-3 ประโยค ห้ามใช้ bullet point"
- เพิ่ม post-processing ตัด response ที่ยาวเกิน token limit ที่กำหนด
- ใช้ max_tokens ต่ำ เช่น 150-300 tokens สำหรับ Voice response
4. Latency สูงเกินไป
ปัญหา: ระบบใช้เวลา 3-5 วินาทีกว่าจะตอบ ทำให้ UX แย่
วิธีแก้:
- Switch จาก Whisper local ไปใช้ Google STT Streaming
- ใช้ LLM model เล็กลง (Haiku หรือ GPT-4o-mini) สำหรับ conversational turns ที่ไม่ซับซ้อน
- Implement streaming TTS — เริ่มเล่นเสียงก่อนที่ LLM จะตอบครบ
5. Session ปะปนกัน
ปัญหา: ใน multi-user environment, conversation history จากผู้ใช้คนหนึ่งไปปรากฏกับอีกคน
วิธีแก้:
- ใช้ session_id แบบ UUID สำหรับแต่ละ caller
- เก็บ history ใน Redis หรือ database โดย key ด้วย session_id
- กำหนด session timeout (เช่น 5 นาที) เพื่อ clear history อัตโนมัติ
10. ขั้นตอนถัดไป — จาก Prototype สู่ Production
เมื่อ prototype รันได้แล้ว สิ่งที่ต้องทำก่อน production:
Infrastructure:
- Host บน cloud ที่ใกล้ผู้ใช้ (Asia-Pacific region) เพื่อ latency ต่ำ
- ใช้ WebSocket แทน HTTP polling สำหรับ real-time streaming
- เพิ่ม load balancer รองรับ concurrent calls
Monitoring:
- วัด latency แต่ละ stage แบบ real-time
- Track STT accuracy ด้วยการ log transcription และให้ agent review
- Monitor LLM cost per conversation เพื่อ optimize
Safety:
- เพิ่ม content filtering ป้องกัน prompt injection ผ่าน Voice
- Implement confidence threshold — ถ้า STT confidence ต่ำ ให้ถามซ้ำแทนดำเนินการ
- มี fallback ชัดเจนเมื่อ AI ตอบไม่ได้ → โอนไปหาคนจริง
การทดสอบ:
- ทดสอบกับ user จริงในสภาพแวดล้อมจริง ไม่ใช่แค่ controlled setting
- ทดสอบกับสำเนียงที่หลากหลาย — ไทยกลาง, เหนือ, ใต้, อีสาน
- Stress test ด้วย concurrent calls เพื่อหา bottleneck
สรุป — เริ่มต้น Voice Agent ภาษาไทยของคุณ
Voice Agent ภาษาไทยไม่ใช่เรื่องของ research lab อีกต่อไป — เครื่องมือพร้อม API พร้อม และตลาดไทยต้องการ
Checklist เริ่มต้น:
- เลือก STT — Whisper สำหรับ prototype, Google STT สำหรับ production
- เลือก LLM — Claude Sonnet หรือ GPT-5 mini ขึ้นอยู่กับ use case
- เลือก TTS — ElevenLabs สำหรับคุณภาพสูง, Botnoi สำหรับ Thai-native
- สร้าง pipeline แบบ streaming เพื่อ latency ต่ำ
- เพิ่ม Memory และ session management สำหรับ production
ถ้าคุณอยากเรียนรู้การสร้าง AI Agent ขั้นสูงในรูปแบบ workshop จริง มีทั้ง coding, deployment และ optimization — ดูหลักสูตรได้ที่ AI Unlocked Pricing
สำหรับคนที่อยู่ในเชียงใหม่ ยังมี workshop แบบ in-person ที่ AI Unlocked เชียงใหม่ 2026
บทความที่เกี่ยวข้อง:
เขียนโดย
AI Unlocked Team
บทความอื่นๆ ที่น่าสนใจ

เรียน AI เชียงใหม่ Outcome — ศิษย์เก่าได้งานที่ไหนบ้าง
ศิษย์เก่า เรียน AI เชียงใหม่ ไปทำงานอะไร? รวม 5 career path จริง ตัวเลข placement rate เงินเดือนเริ่มต้น และ tips จากคนที่ผ่านมาแล้ว — ดู outcome ก่อนตัดสินใจ

AI ทำ Music Video — รวม 5 เครื่องมือฟรี
AI ทำ Music Video ฟรีได้จริง! รวม 5 เครื่องมือ Suno, Runway, Kaiber, Hailuo, Pika พร้อม workflow sync ภาพ-เพลง ลดต้นทุนได้ถึง 90% ไม่ต้องมีทักษะตัดต่อ
เรียน AI ใน 30 วัน — Plan สำหรับคนงานยุ่ง
เรียน AI 30 วัน ได้จริงไหม? Plan วันละ 1 ชม. สำหรับคนทำงานยุ่ง ตั้งแต่ Foundation ถึง Portfolio — เริ่มต้นได้เลยวันนี้ ดู Pricing
