Go 主工程 + Python DashScope 网关版本(跨平台:Windows/Linux/macOS)。
- Go 1.22+
- Python 3.10+
- ffmpeg(用于 wav/mp3 解码与 stream 麦克风采集)
- ffplay(用于 stream 模式 TTS 播放)
- 安装 Python 依赖:
cd mini-tmk-agent-go
pip install dashscope- 检查环境是否可用(这一步不要跳过):
go version
python --version
ffmpeg -version
ffplay -version- 配置密钥:
$env:DASHSCOPE_API_KEY=""export DASHSCOPE_API_KEY=""如需 TTS:
$env:SILICONFLOW_API_KEY=""export SILICONFLOW_API_KEY=""go build -o mini-tmk-agent.exe . # windows
go build -o mini-tmk-agent . # Linux当前参数校验支持:zh/en/es/ja
先按系统确认麦克风设备(推荐):
- Windows(dshow):
ffmpeg -list_devices true -f dshow -i dummy- Linux(pulse):
pactl list short sources- macOS(avfoundation):
ffmpeg -f avfoundation -list_devices true -i ""然后把设备名(或设备编号)填入 --mic-device:
# win
./mini-tmk-agent stream --source-lang zh --target-lang en --mic-device default
# linux(注意根据环境不同,可能为 python3 或 python)
./mini-tmk-agent stream --source-lang zh --target-lang en --mic-device RDPSource --python-bin python3 启用 TTS(分段播报能力):
# win
./mini-tmk-agent stream --source-lang zh --target-lang en --mic-device default --enable-tts --tts-speed 1.0 --tts-threshold 8
# linux(注意根据环境不同,可能为 python3 或 python)
./mini-tmk-agent stream --source-lang zh --target-lang en --mic-device RDPSource --enable-tts --tts-speed 1.0 --tts-threshold 8 --python-bin python3# Linux(注意根据环境不同,可能为 python3 或 python)
./mini-tmk-agent transcript --file ./test_data/中文.pcm --output ./out.txt --source-lang zh --target-lang en --python-bin python3
# win
.\mini-tmk-agent.exe transcript --file D:\go\workspace\mini-tmk-agent\mini-tmk-agent-go\test_data\英语演讲.wav --output .\out.txt --source-lang en --target-lang zh
.\mini-tmk-agent.exe transcript --file D:\go\workspace\mini-tmk-agent\mini-tmk-agent-go\test_data\英语演讲.mp3 --output .\out.txt --source-lang en --target-lang zh- Go 主程序(
main.go):负责命令行参数、流程编排、音频采集/解码、输出打印、结果落盘。 - Python 网关(
python_gateway/gateway.py):负责对接 DashScope 实时识别与翻译 SDK。 - 进程通信方式:Go 通过
stdin/stdout与 Python 子进程通信。- Go -> Python:持续写入 PCM 音频帧(二进制)。
- Python -> Go:逐行输出 JSON 事件(
status/sentence/word/final/error)。
- Go 解析
stream参数,拉起 Python 网关子进程。 - Go 按平台调用 ffmpeg 采集麦克风音频(Windows:
dshow,Linux:pulse,macOS:avfoundation),并转成s16le/mono/16000PCM 流。 - Go 将 PCM 持续写入 Python 的
stdin。 - Python 网关把音频帧送入 DashScope
TranslationRecognizerRealtime。 - Python 将识别/翻译结果按事件 JSON 输出到
stdout。 - Go 读取事件并打印
[source]/[target];如启用--enable-tts,将word事件送入 TTS worker,按句尾或标点阈值分段播放。
- Go 解析
transcript参数,按输入后缀处理音频:.pcm:直接流式读取;.wav/.mp3:用 ffmpeg 转成s16le/mono/16000PCM。
- Go 将 PCM 写入 Python 网关
stdin,音频结束后关闭写入端。 - Python 完成识别后输出
final事件(完整源文+译文)。 - Go 汇总结果并写入
--output文本文件。
status:阶段状态(启动、request_id、关闭等)。sentence:一句完整结果(用于控制台展示)。word:逐词增量结果(用于 TTS 分段缓冲)。final:最终完整文本(主要用于 transcript 模式落盘)。error:错误信息(Go 收到后中止流程并返回错误)。
- Go 与 Python 子进程间通信统一使用 UTF-8。
- Go 启动 Python 时设置
PYTHONUTF8=1,避免管道场景下 Python 回退到系统代码页(如 GBK)导致中文乱码。 - 不同操作系统终端对 UTF-8 支持不同,建议使用 UTF-8 终端环境运行,确保
[source]中文可正确显示。
--source-lang源语言(必填)--target-lang目标语言(必填)--api-keyDashScope API key(可用DASHSCOPE_API_KEY)--sample-rate采样率,默认16000--mic-device麦克风设备名/编号(Windows:dshow;Linux:pulse;macOS:avfoundation 音频设备编号),默认default(macOS 默认使用0)--enable-tts启用硅基流动 TTS--siliconflow-api-key硅基流动 key(可用SILICONFLOW_API_KEY)--tts-voiceTTS 音色,默认FunAudioLLM/CosyVoice2-0.5B:alex--tts-speedTTS 语速,默认1.0--tts-threshold标点触发阈值,默认8--python-binPython 可执行文件路径,默认python
--file输入文件(.pcm/.wav/.mp3,必填)--output输出文本路径(必填)--source-lang源语言(必填)--target-lang目标语言(必填)--api-keyDashScope API key(可用DASHSCOPE_API_KEY)--python-binPython 可执行文件路径,默认python
ffmpeg not found in PATH- 说明系统找不到
ffmpeg,请安装并确保终端可执行ffmpeg -version。
- 说明系统找不到
ffplay not found in PATH- 仅在启用 TTS 时需要,确保终端可执行
ffplay -version。
- 仅在启用 TTS 时需要,确保终端可执行
- stream 无声音频输入
- 先按系统枚举设备(Windows:
dshow;Linux:pactl;macOS:avfoundation),再用--mic-device指定正确设备名/编号。
- 先按系统枚举设备(Windows:
api key required- 设置
DASHSCOPE_API_KEY(和启用 TTS 时的SILICONFLOW_API_KEY)或通过命令参数传入。
- 设置
- Go 负责 CLI、参数、输出文件与流程编排。
- Go 负责
.pcm/.wav/.mp3输入处理、ffmpeg 解码、stream 麦克风采集、TTS 播放。 - Python 网关仅负责 DashScope 实时语音 API 调用与结果回传。