- name
- voice-interview-simulator
- description
- 进行中文求职语音模拟面试。适用于用户想围绕目标岗位进行多轮中文面试练习,并通过 ASR 识别回答、由 LLM 决定追问或换题、由 TTS 播报面试官问题,最终输出结构化评估报告、改进建议和示例优化回答的场景。支持
target_role、interviewer_style、min_rounds、max_round_limit等配置;默认用于通用中文岗位面试,不依赖情绪识别、视频处理或其他额外音频算法。
中文语音面试模拟器
适用范围
此 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 开始 - 同一轮只问一个问题
- 播报问题
- 将当前问题文本交给 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
注意事项
- 评分用于练习反馈,不用于真实招聘排名
- 评语要具体、可执行,避免空泛夸奖
- 结论必须基于用户实际回答,不要凭空补充经历
- 当用户连续多轮无法给出有效回答时,可以礼貌收束
- 最终报告里必须给出优势、问题、改进建议和一段更优示例回答