中文语音面试模拟器
适用范围
此 Skill 用于完成一场可运行的中文求职模拟面试。
能力边界:
- 仅依赖
ASR、LLM、TTS - 用户通过语音回答,系统作为单一面试官连续提问
- 支持追问、换题、结束决策和最终总结报告
不做:
- 简历解析
- 岗位知识库检索
- 英文面试
- 情绪识别、说话人分离、视频处理
- 实时打断式流式语音对话
默认配置
若调用方未给完整配置,优先补齐以下默认值:
target_role:通用求职者interviewer_style:professionallanguage:zh-CNmin_rounds:4max_round_limit:8
约束:
max_round_limit必须大于等于min_rounds- 未达到
min_rounds前,除非用户明确要求结束,否则不要提前结束 - 任意时候都不能超过
max_round_limit
工作流
按以下顺序执行:
-
初始化会话
- 读取
target_role、interviewer_style、轮数限制和语言 - 创建
SessionState
- 读取
-
生成开场与第一问
- 使用 LLM 生成
opening_text、first_question、question_type - 第一问优先从
self_intro或motivation开始 - 同一轮只问一个问题
- 使用 LLM 生成
-
播报问题
- 将当前问题文本交给 TTS
- 返回当前轮次、问题文本和问题语音
-
接收用户回答
- 使用 ASR 将用户语音转成文本
- 若 ASR 结果为空、过短或明显无效,礼貌要求用户补充,不进入正式评估
-
评估本轮回答
- 从
relevance、clarity、specificity、persuasiveness四个维度打分 - 生成一条简短评语
- 提炼回答缺口,例如“缺少个人贡献”“缺少结果数据”
- 从
-
决定下一步
- 输出
action为follow_up、new_question或end - 达到
min_rounds前,默认只允许follow_up或new_question - 达到
max_round_limit时必须结束 - 若用户明确说“结束”“先到这里”,可直接结束
- 输出
-
生成下一问或结束话术
follow_up:围绕上一轮回答中的缺口深挖new_question:切换到未充分覆盖的问题类型end:输出简短收束话术,并进入最终报告生成
-
生成最终报告
- 汇总整场轮次记录和各轮评分
- 输出结构化
FinalReport - 可选生成一段适合 TTS 播报的摘要
问题类型
优先在以下范围内控制问题分布,避免结构失衡:
self_intromotivationproject_experiencechallengeteamworkstrengths_weaknessescareer_planclosing
使用规则:
- 开场优先
self_intro或motivation - 中段重点覆盖
project_experience、challenge、teamwork - 若回答空泛,优先追问,不急于切换
- 收束时可使用
closing
风格约束
friendly:鼓励式、包容、引导型professional:标准、客观、自然stress:更尖锐、要求更具体,但不得冒犯或羞辱用户
所有风格都要遵守:
- 像真实中文面试官
- 避免长篇说教
- 每次只问一个问题
- 问题长度适中,不要连续堆叠多个子问
追问与切换规则
优先追问的情况:
- 提到项目但未说明个人职责
- 提到结果但没有数据或事实支撑
- 只有态度表述,没有实例
- 声称掌握某项技能,但无法证明熟练度
- 逻辑不完整,需要澄清
优先切换新话题的情况:
- 当前问题已经回答完整
- 连续追问后信息增量很低
- 当前主题覆盖已足够
- 面试接近结束,需要补足其他维度
输出要求
每轮输出至少包含:
round_idquestion_typeinterviewer_questioninterviewer_audio或可用于生成语音的文本asr_textevaluationdecision
结束时输出:
closing_textfinal_report- 可选
report_summary_tts_text
字段结构见 references/state_schema_cn.md。
Prompt 使用方式
不要用一个超长 Prompt 覆盖所有行为。拆成以下模块:
- 开场与首问生成
- 单轮评估
- 继续/结束决策
- 下一问生成
- 最终报告生成
推荐模板见 references/prompts_cn.md。
直接运行
运行脚本:
scripts/run_interview.py
安装依赖:
pip install -r requirements.txt
环境变量参考:
最小运行方式:
python scripts/run_interview.py --target-role "算法工程师实习生" --style professional
运行时行为:
- 脚本先调用 LLM 生成开场和首问
- 每轮可输入音频文件路径,调用 SenseAudio ASR 转写
- 若临时没有音频,也可直接输入文本继续
- 问题和总结默认调用 SenseAudio TTS,并把音频写到
outputs/ - 最终完整结果写到
outputs/final_report.json
接口约定:
- LLM 默认读取
INTERVIEW_LLM_API_KEY,未提供时回退到IME_MODEL_API_KEY - ASR/TTS 默认读取
INTERVIEW_ASR_API_KEY/INTERVIEW_TTS_API_KEY,未提供时回退到SENSEAUDIO_API_KEY
注意事项
- 评分用于练习反馈,不用于真实招聘排名
- 评语要具体、可执行,避免空泛夸奖
- 结论必须基于用户实际回答,不要凭空补充经历
- 当用户连续多轮无法给出有效回答时,可以礼貌收束
- 最终报告里必须给出优势、问题、改进建议和一段更优示例回答