诊所接待语音助手

一款基于LiveKit的语音助手,用于诊所接待,可为两个分支机构(锡亚尔科特和拉合尔)预约基于日期的可用时间,与患者确认详细信息,并通过实时TTS进行语音交互。

  • by Waleed-coder079
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Waleed-coder079/livekit_doctor_receponist

使用说明

医生接待员语音代理

一个由LiveKit驱动的语音代理,充当诊所接待员。它为两个分支机构(锡亚尔科特和拉合尔)预订预约,提供日间可用性,与患者确认详细信息,并通过TTS实时通话。

特性

  • 🎤 自然语音对话(低延迟,插入)
  • 🗓️ 分行/日间可用性(锡亚尔科特:周一至周三,拉合尔:周四至周六)
  • ⏰ 固定一小时时段(10–2,4–8)
  • 🧰 功能工具:检查可用性、预订、列出预订
  • 🔌 提供商:Deepgram STT、谷歌Gemini LLM、ElevenLabs TTS、Silero VAD

先决条件

  • Python 3.9或更高版本
  • API密钥:
    • 深度编程API密钥(STT)
    • Google Gemini API密钥(LLM)
    • ElevenLabs API密钥(TTS)
    • LiveKit Cloud凭据(可选;仅适用于云部署)

快速开始

1) 安装依赖项

python -m venv .\venv
.\venv\Scripts\Activate.ps1
python -m pip install -U pip
pip install -r requirements.txt

2) 配置环境

copy .env.example .env
# Then edit .env and add your keys

必修的: DEEPGRAM_API_KEY, GEMINI_API_KEY, ELEVENLABS_API_KEY

3) 运行代理

# Using Python directly
python .\main.py console

# Or via the PowerShell helper (if configured to run main.py)
.\start-agent.ps1 -Mode console

4) (可选)启用谷歌日历同步

该项目包括一个类似MCP的小型HTTP服务器,为预订的约会创建Google日历事件。

# One-time: download OAuth client JSON from Google Cloud Console
# Place it as .\credentials.json

# Set a SECRET_KEY in your .env (any random string)
# Optionally set GOOGLE_MCP_URL (default http://localhost:5000/create-event)

# Run the calendar server in a separate terminal
python .\mcp_server.py

# In your browser, authorize access
http://127.0.0.1:5000/authorize

在OAuth成功之后, token.json 保存在本地。当你预约时,代理人会发邮件到 GOOGLE_MCP_URL 创建日历事件。

建筑

┌─────────────┐     ┌────────────────────────────┐
│   Microphone│──▶──│  LiveKit AgentSession      │──▶ ElevenLabs TTS (voice out)
│ + Speakers  │     │  (STT+LLM+TTS+VAD pipeline)│
└─────────────┘     └───────┬─────────┬──────────┘
                             │         │
                         Deepgram    Gemini          (Optional)
                            STT        LLM        ──▶ Google Calendar Server

代码概述

  • 入口点: main.py
  • 代理类: DoctorReceptionist
  • 工具:
    • get_current_date_and_time
    • check_availability(city, day)
    • book_appointment(patient_name, city, day, slot)
    • show_appointments()

语音管道配置

  • STT:Deepgram Nova-2(DEEPGRAM_API_KEY, STT_LANGUAGE=en)
  • 法学硕士:谷歌双子座(GEMINI_API_KEY, LLM_CHOICE=gemini-2.5-flash 默认)
  • TTS:ElevenLabs(ELEVENLABS_API_KEY,可选 ELEVENLABS_VOICE_ID, ELEVENLABS_TTS_MODEL)
  • VAD:Silero(通过插件捆绑,无需额外密钥)

故障排除

  • 401到LiveKit推理STT:该项目在本地使用Deepgram STT。如果你切换到 inference.STT,您必须设置有效的LiveKit Cloud凭据。
  • 瞬态STT断开连接:通常是网络/提供商打嗝。重试或保持交互通常会解决问题。
  • 音频设备问题:检查操作系统中的麦克风/扬声器权限。

环境变量引用

变量 必填 描述
DEEPGRAM_API_KEY 是 STT的Deepcram API密钥
GEMINI_API_KEY 是 用于LLM的Google Gemini API密钥
ELEVENLABS_API_KEY 是 ElevenLabs API TTS密钥
ELEVENLABS_VOICE_ID 否 ElevenLabs语音ID(可选)
ELEVENLABS_TTS_MODEL 否 ElevenLabs TTS型号(可选)
ELEVENLABS_STREAMING_LATENCY 否 整数延迟提示(默认值0)
STT_LANGUAGE 无 STT语言代码(默认 en)
LLM_CHOICE 否 LLM模型(默认 gemini-2.5-flash)
LIVEKIT_URL 否 LiveKit服务器URL(适用于云)
LIVEKIT_API_KEY 否 LiveKit API密钥(用于云)
LIVEKIT_API_SECRET 否 LiveKit API机密(用于云)
LOG_LEVEL 否 日志记录级别(默认 INFO)
GOOGLE_MCP_URL 否 日历服务器终结点(默认 http://localhost:5000/create-event)
SECRET_KEY 否 Flask会话秘密 mcp_server.py

资源

  • LiveKit代理:https://docs.livekit.io/agents/
  • LiveKit Python SDK:https://github.com/livekit/agents