forked from tianye1999/callpilot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
85 lines (70 loc) · 2.48 KB
/
Copy pathmain.py
File metadata and controls
85 lines (70 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""AgentCall 入口:EG25 来电自动接入千问/豆包 Agent。"""
from __future__ import annotations
import argparse
import logging
import os
import sys
from dotenv import load_dotenv
from agentcall import config
from agentcall.call_agent import CallAgentService
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="EG25 来电 AI Agent 服务")
parser.add_argument("--port", default=config.get_str("MODEM_PORT"))
parser.add_argument("--baud", type=int, default=config.get_int("MODEM_BAUD"))
parser.add_argument(
"--audio-keyword",
default=config.get_str("MODEM_AUDIO_KEYWORD"),
help="USB 声卡名称关键字",
)
parser.add_argument(
"--audio-mode",
choices=config.get_spec("MODEM_AUDIO_MODE").choices,
default=config.get_str("MODEM_AUDIO_MODE"),
help="模组音频模式:uac=USB声卡,nmea=USB NMEA串口PCM",
)
parser.add_argument("--pcm-port", default=config.get_str("MODEM_PCM_PORT"))
parser.add_argument(
"--pcm-baud",
type=int,
default=config.get_int("MODEM_PCM_BAUD"),
)
parser.add_argument(
"--tx-gain",
type=float,
default=config.get_float("MODEM_TX_GAIN"),
help="写回电话侧的 PCM 音量增益",
)
parser.add_argument(
"--provider",
choices=config.get_spec("AGENT_PROVIDER").choices,
default=config.get_str("AGENT_PROVIDER"),
)
parser.add_argument("--list-audio", action="store_true", help="列出音频设备后退出")
return parser
def main() -> None:
load_dotenv()
args = build_parser().parse_args()
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
)
if args.list_audio:
import sounddevice as sd
print(sd.query_devices())
return
if args.provider == "qwen" and not os.getenv("DASHSCOPE_API_KEY"):
print("错误: 使用千问需设置 DASHSCOPE_API_KEY", file=sys.stderr)
sys.exit(1)
service = CallAgentService(
modem_port=args.port,
audio_keyword=args.audio_keyword,
provider=args.provider,
baudrate=args.baud,
audio_mode=args.audio_mode,
pcm_port=args.pcm_port,
pcm_baudrate=args.pcm_baud,
tx_gain=args.tx_gain,
)
service.run()
if __name__ == "__main__":
main()