模拟面试Interview Practice
围绕目标岗位与 JD 逐题练习Question-by-question practice built on the target role and JD
让每一次表达,都成为下一次进步的依据。Make every time you speak evidence for getting better.
[了解产品 ↗][EXPLORE PRODUCT ↗]向下探索SCROLL TO EXPLOREECHOMIND / AI EXPRESSION TRAINING
一款基于 AI 的口头表达分析与训练工具。An AI tool for analysing and training spoken expression.
通过模拟面试、工作汇报等真实表达场景,结合实时语音识别、表达习惯统计和 AI 内容评估,帮助用户回顾自己的表达过程,发现问题,并获得针对性的改进建议。
从开口练习,到文字记录、内容分析和报告复盘,让原本难以观察的口头表达,成为可以被记录、理解和持续改善的过程。Through real scenarios such as interview practice and work reporting, EchoMind combines live speech recognition, habit metrics and AI content evaluation to help people review how they spoke, find the problems and get targeted advice.
From speaking out loud to transcripts, analysis and review, spoken expression becomes something you can record, understand and keep improving.
围绕目标岗位与 JD 逐题练习Question-by-question practice built on the target role and JD
围绕对象、目的与要点连续表达One continuous report shaped by audience, goal and key points
浏览器本机识别,文字随表达出现Speech recognised locally in the browser as you speak
语气词、重复连接词与停顿Fillers, repeated connectives and long pauses
按场景维度评分,并给出原文证据Scenario-specific scoring backed by quoted evidence
概览、逐题分析、改进建议与导出Overview, per-question analysis, advice and export
项目状态 / Beta · v0.1.1 · 持续开发与验证中Project status / Beta · v0.1.1 · in active development





一个从「我到底说得怎么样」出发的个人产品实验:
语音识别、产品评价机制与前端实现在这里相遇。A personal product experiment that began with one question — how did I actually sound?
Speech recognition, an evaluation model and front-end work meet here.
我们每天都在表达,
但很少真正知道自己表达得怎么样。WE EXPRESS OURSELVES DAILY,
BUT RARELY SEE HOW WE SOUND.
无论是参加一场工作面试,向领导汇报项目进展,还是向别人介绍一个复杂的想法,口头表达几乎贯穿了我们的工作与生活。但它有一个特点:当我们专注于思考下一句话该说什么时,往往很难同时观察自己正在怎样表达。Job interviews, progress reports, explaining a complicated idea — spoken expression runs through work and life. Yet while you focus on the next sentence, you can hardly watch how you are speaking at the same time.
有时候明明已经在脑海中组织好了内容,真正说出来时却变得零散;可能会频繁使用「嗯」「然后」「就是」,也可能反复解释同一个观点,或者因为不知道下一句该说什么而出现长时间停顿。A thought that felt organised comes out scattered. Fillers such as 嗯, 然后 or 就是 creep in, one point gets explained twice, and a long pause appears when the next sentence will not come.
还有一些问题更加隐蔽:以为自己回答了面试官的问题,实际上没有提供具体的案例和证据;以为完成了一次工作汇报,听众却仍不知道项目取得了什么进展、遇到了什么风险,以及需要他们做出什么决定。于是有了最初的问题——能不能做一个工具,把说过的话记录下来,再帮助我们理解自己的表达问题?Other problems hide better: you believe the question was answered, yet no concrete example or evidence was given; you believe the report is done, while the audience still does not know the progress, the risks, or what decision is needed. Hence the first question: could a tool record what was said, and help us understand our own expression?
表达能力的提升,
需要能够被观察和复盘的过程。IMPROVING SPEECH NEEDS
SOMETHING YOU CAN OBSERVE.
写作可以反复修改:逻辑不清晰就重新组织段落,词不准确就直接替换,缺了结论还能在阅读时发现。口头表达没有这样的编辑过程——一句话说完,就已经结束。没有记录,很多问题只能依靠当时的感受判断:「我刚才是不是说得有些混乱?」「是不是重复了很多次?」「我有没有真正回答对方的问题?」Writing can be edited: reorganise a paragraph, swap an imprecise word, notice a missing conclusion while reading. Speech has no such pass — a sentence ends the moment it is said. Without a record, judgement leans on a feeling: was that muddled? did I repeat myself? did I actually answer the question?
即使把讲话录下来,反复听录音也要投入不少时间,而且未必能准确判断内容结构和表达质量。因此,EchoMind 的核心思路逐渐形成:练习 → 记录 → 分析 → 复盘 → 再次练习。它应该是一套相对完整的表达训练流程,而不只是一个录音工具或语音转文字工具。Even with a recording, listening back costs time and still may not reveal structure or quality. So the core loop took shape: practise → record → analyse → review → practise again — a complete training flow rather than a recorder or a transcription utility.
让用户随时可以开始一段练习,而不必先准备设备和流程。Anyone should be able to start a session without setting up tools first.
使原本连续的语音成为可以阅读、检索和分析的信息。Continuous audio becomes information you can read, search and analyse.
告诉用户具体哪里不足,以及下一次应该怎样调整。Point at what fell short and what to change next time.
不同场合的表达,
有着不同的目标。DIFFERENT SETTINGS,
DIFFERENT GOALS.
如果只统计语气词、重复和停顿,产品很容易变成一个表达检测器:它可以说出你讲了多少次「嗯」、停顿了几次,却回答不了更重要的问题——这段表达是否完成了它原本的目的?面试回答要让面试官理解候选人的能力和经历;工作汇报要帮助听众了解状态、判断问题,或者做出决策。两者同属口头表达,目的、结构和评价标准却并不相同。Counting fillers, repeats and pauses alone turns the product into a detector: it can report how many times you said 嗯, but not whether the answer achieved its purpose. An interview answer must convey capability and experience; a report must help the audience understand status, judge a problem or make a decision. Same medium, different goals, structures and standards.
所以我没有把产品做成不区分场景的通用打分工具,而是先选择两个目标明确、又有实际使用需求的场景。So instead of a scene-agnostic scoring tool, the first version picked two scenes with clear goals and real demand.
围绕目标岗位和岗位描述逐题练习,检查回答是否切题、是否具有具体证据,以及表达结构是否清晰。Practise question by question against a target role and JD: is the answer on topic, is it backed by evidence, is the structure clear?
围绕汇报对象、汇报目的和工作内容连续表达,检查结论、进展、风险和行动请求是否清楚传达。Speak continuously around audience, goal and content: were the conclusion, progress, risks and the ask actually delivered?
两个场景共用录音与转写基础能力,但拥有不同的练习流程与评价标准。Both scenes share the recording and transcription core, but keep their own flow and rubric.
把表达训练组织成
一个可以完成的任务。ORGANISE TRAINING INTO
A TASK YOU CAN FINISH.
EchoMind 的主要使用流程被分为四个阶段。整个产品围绕这条流程展开,尽量减少无关功能,让练习、分析和复盘形成连续的体验。The main flow has four stages. Everything else is kept out of the way so practising, analysing and reviewing feel like one continuous experience.
创建练习Create a session
选择模拟面试或工作汇报,填写当前场景需要的信息;不同场景有独立的配置项。Pick interview or reporting and fill in only what that scene needs. Each scene keeps its own fields.
开始表达Start speaking
使用麦克风录制回答,语音在浏览器内实时识别,文字随表达逐步呈现。Record with the microphone; speech is recognised in the browser and text appears as you talk.
内容分析Analyse
确认回答后保存转写结果;若已配置模型,可按当前场景的评价标准分析内容。Confirming an answer stores its transcript; with a model configured it is scored against the scene rubric.
复盘报告Review
查看整体表现、逐题评价、表达习惯与改进建议,并回到原始表达证据。Read the overall result, per-question feedback, habits and advice — and go back to the original evidence.
让每一次面试回答
都有依据。EVERY ANSWER SHOULD
HAVE EVIDENCE BEHIND IT.
对于模拟面试,我没有采用完全随机的聊天方式。开始练习前,用户需要填写目标岗位和岗位描述(JD),让 AI 理解岗位关注的能力,并据此生成更有针对性的问题。专业问题数量可以设置为 1 至 15 道,还可以选择是否加入自我介绍与最后的反问面试官环节。Interview practice is not a free-form chat. Before starting, the user fills in the target role and job description so the AI understands which capabilities matter and generates pointed questions. Role questions can be set from 1 to 15, with optional self-introduction and candidate-question stages.
在较短时间内清晰介绍个人定位、相关经历和岗位匹配度。Present your positioning, relevant experience and fit in a short window.
围绕岗位要求、项目经历、问题解决与协作能力逐题回答,数量可设为 1–15 道。Answer around role requirements, projects, problem solving and collaboration — 1 to 15 questions.
练习提出与岗位有关、具有信息价值的问题。Practise asking questions that are relevant and genuinely informative.
真实面试有明确的问答节奏:面试官提问,候选人回答,再进入下一题。整个过程由用户主动控制,不必等待 AI 的下一句回应才推进。Real interviews have a rhythm: a question, an answer, then the next one. The user drives the pace instead of waiting on an AI reply.
如果可以在同一次练习里无限重答,报告最终只会留下反复修正后的版本,削弱对真实表达状态的记录价值。确认后如需更好的回答,请重新创建一场练习。Unlimited retries would leave a report of polished versions only, weakening the record of how you actually spoke. Confirm an answer and it is final — start a new session instead.
一份汇报是否有效,取决于
它是否解决了听众关心的问题。A REPORT WORKS WHEN IT
ANSWERS WHAT THE AUDIENCE ASKS.
与模拟面试不同,工作汇报通常需要围绕一个主题连续说明,而不是等待系统逐题提问。向直属领导同步项目进展,与向企业高层汇报风险和资源需求,所需要的信息密度和内容结构可能完全不同,因此工作汇报有独立的练习方式:先填写汇报主题与对象,再选择本次汇报的主要目的,并可以提前填写计划表达的关键要点。Unlike an interview, a report is usually one continuous explanation rather than a series of prompts. Updating a manager on progress and briefing executives on risks and resourcing need different density and structure — so reporting has its own flow: topic and audience first, then the primary goal, plus any key points you plan to cover.
直属领导关注进度、风险与下一步;跨部门同事关注协作边界与依赖;客户更关注交付结果与后续安排。A direct manager cares about progress and risk; peers care about boundaries and dependencies; clients care about delivery.
频繁插入问题会打断需要完整呈现的内容,因此工作汇报采用连续表达,再统一分析。Interruptions break a report that needs to flow, so reporting stays continuous and is analysed afterwards.
根据事先填写的计划要点,检查实际表达是否覆盖,并区分为已覆盖、部分覆盖与未覆盖。Planned points are checked against what was said and marked covered, partial or missing.
当前版本提供同步进展、争取资源、推动决策和复盘总结等目的选项,并允许补充次要目的。The current version offers syncing progress, resourcing, driving a decision and retrospective goals, with room for a secondary one.
当表达能够被实时看见,
用户也就获得了另一种观察自己的方式。SEEING YOUR WORDS LIVE
IS ANOTHER WAY TO WATCH YOURSELF.
语音识别是 EchoMind 的核心基础能力之一。练习过程中,用户通过麦克风输入语音,系统在浏览器内部进行识别并持续更新转写内容——不必等到录音结束才知道自己说了什么,文字会随表达过程逐步出现,让人可以观察正在形成的内容。Speech recognition is a core capability here. While practising, the browser recognises microphone input and keeps updating the transcript, so you can watch the words take shape instead of waiting until the recording ends.
基于 sherpa-onnx 的中文 Zipformer 模型,结合 AudioWorklet、Web Worker 与 WebAssembly 在浏览器本机处理音频,原始音频不发送给外部大模型服务。A sherpa-onnx Chinese Zipformer model runs through AudioWorklet, a Web Worker and WebAssembly, so raw audio never goes to an external model service.
模型需要加载,录音需要持续处理,较长的语音还会带来内存与界面性能压力——这些后来成为技术优化的重点。Models must load, audio must stream and long sessions pressure memory and rendering — which became the focus of later optimisation.
有些表达问题,
可以在练习进行时就被观察到。SOME HABITS SHOW UP
WHILE YOU ARE STILL SPEAKING.
除了实时转录,练习界面还提供一些轻量反馈:用户可能会频繁使用某些语气词,或者在组织内容时出现较长的停顿。EchoMind 围绕这些现象加入了基础的实时统计与提示。Beyond live transcription, the practice screen offers lightweight feedback around the habits people cannot see in the moment: recurring fillers, and pauses that stretch while the next point is being formed.
统计「嗯」「呃」「啊」「额」等词,看自己是否习惯用它们填补思考间隙。Counts 嗯 / 呃 / 啊 / 额 to show how often they fill a thinking gap.
观察「然后」「那么」等词的出现情况;词本身没问题,高频使用值得复盘时注意。Tracks 然后 / 那么 and similar words — fine in themselves, worth reviewing when frequent.
通过麦克风音量事件估算停顿,长时间停顿时给出简短提示,例如先讲结论或下一步。Pauses are estimated from volume events; a long pause prompts a short nudge such as lead with the conclusion.
展示输入电平、有效时长、设备状态与模型处理进度,帮助及时发现麦克风无输入或识别落后。Input level, effective duration, device state and model progress surface a dead microphone or lagging recognition.
语气词多,并不代表内容没有价值;相反,一个几乎没有停顿的人也可能始终没有回答核心问题。加上语音识别本身存在误差,当前版本把这些统计作为辅助观察指标,不直接参与内容评分。Many fillers do not mean the content was worthless — and a fluent, pause-free answer may still miss the point. With recognition error on top of that, these metrics stay advisory and never enter the content score.
语音识别产生的文字,
不一定等于用户实际表达的内容。WHAT RECOGNITION WRITES IS NOT
ALWAYS WHAT YOU SAID.
开发过程中有一个会直接影响评分公平性的问题:如果语音识别把某个专业术语听错了,AI 是否应该因此降低用户的表达评价?例如用户在介绍软件项目时用了某个英文技术名称,模型却识别成了别的词——把这段错误的转写直接交给 AI,评价就会受到无关因素影响。因此文字记录被拆成两种形式。One question directly affects fairness: if recognition mishears a technical term, should the AI score the answer lower? A product name mis-heard as another word would drag the evaluation down for no reason. So the text record is split in two.
原始转写Raw Transcript
语音识别直接产生的内容。确认回答后即锁定,不可修改,用于保留当时的表达证据,也是语气词与重复表达统计的来源。What recognition produced. Locked once the answer is confirmed, it preserves the original evidence and feeds the habit metrics.
可修订语义稿Semantic Transcript
允许修正识别错误、标点或明显的文本问题;AI 内容评价使用这一份,从而尽量避免识别误差影响内容分析。Recognition errors, punctuation and obvious text problems can be fixed here. AI evaluation reads this version so recognition noise does not skew the result.
报告页面中两份文字并列展示,用户可以直接对照原始表达和修订后的内容,并在修改语义稿后重新进行评价。原始稿不可编辑,是为了让人分得清「当时真正说了什么」和「后来为阅读或评价做了哪些调整」。The report shows both side by side so the original and the revision can be compared, and editing the semantic transcript allows re-evaluation. The raw version stays locked so that what was actually said never blurs with later adjustments.
不能用同一套标准,
评价所有类型的表达。ONE RUBRIC CANNOT JUDGE
EVERY KIND OF SPEECH.
引入 AI 评价时,首先要回答:什么样的表达才算好?通用维度(逻辑、流畅度、完整性、语言质量)不足以覆盖真正的评价目标——面试回答要突出岗位匹配和经历证据,工作汇报更关注目标、事实、风险和行动请求,自我介绍和反问面试官也应有各自的侧重点。因此不同练习场景拥有独立的评价机制。Introducing AI evaluation starts with a question: what counts as good? Generic dimensions — logic, fluency, completeness, language quality — do not cover the real targets. Interview answers need role fit and evidence; reports need goals, facts, risks and an ask; introductions and candidate questions have their own priorities. So each scene gets its own mechanism.
工作汇报还会检查结论先行、背景适量、证据具体和术语适配等听众相关指标,并对设置了计划要点的汇报检查内容覆盖情况。这也是未来扩展新场景的架构原则:每个场景可以有各自的维度、权重与标准,底层录音、转写、分析执行与报告展示能力复用。Reporting additionally checks audience-facing signals such as leading with the conclusion, proportionate context, concrete evidence and fitting terminology, plus coverage of the planned points. It is also the architectural rule for new scenes: their own dimensions, weights and standards on top of shared recording, transcription, analysis and reporting.
一个分数如果没有依据,
就很难真正帮助用户改进。A SCORE WITHOUT EVIDENCE
CANNOT HELP ANYONE IMPROVE.
大模型很容易生成听起来合理、却没有指出问题所在的评价:说「你的回答缺少具体证据」,却不说是哪一部分不够具体;认为结构完整,却指不出实际支持判断的内容。因此,对于需要评分的维度,AI 必须提供来自语义稿的真实文字证据,评价结果不能凭空引用用户没有说过的话。系统会检查模型返回的证据是否真实存在于当前语义稿中——找不到时,该维度不能保留一个看似确定的分数,而应显示证据不足或无法评价。Models readily produce plausible feedback that never locates the problem: “your answer lacks concrete evidence” without saying which part, or “the structure works” without naming what supports it. So every scored dimension must quote real text from the semantic transcript; nothing may be attributed to the user that they did not say. The system verifies each quote against that transcript — when it is missing, the dimension shows insufficient evidence or unable to evaluate rather than a confident number.
模型生成的评价并不天然可靠,涉及个人能力评价时尤其需要谨慎。这条路径不能保证所有评价都正确,但至少让结论拥有可以核对的依据。Model output is not inherently reliable, least of all when judging a person. This path cannot guarantee correctness, but it makes every conclusion checkable.
一份报告应该告诉用户
哪里需要改,以及下一次可以怎么做。A REPORT SHOULD SAY
WHAT TO CHANGE AND HOW.
完成一场练习后,EchoMind 会把各题回答、评分维度和表达习惯整理成一份报告,并分成几个层级。练习结束并不意味着训练完成——只有用户能够理解自己的问题,并把这些认识带到下一次练习中,报告才具有实际价值。After a session, EchoMind assembles answers, dimension scores and habits into a layered report. Finishing a practice session is not finishing the training: the report only earns its place when people understand the problems and carry them into the next round.
已回答与跳过的题数、有效表达时长,以及按题目权重换算的 100 分制总分。Answered and skipped questions, effective speaking time, and a weighted score out of 100.
整体表现、做得较好的方面,以及下一次最值得优先改进的问题。Overall performance, what worked, and the single most useful thing to improve next.
通过题目导航查看总体评价、维度分数、证据、建议与更合适的回答方式。Navigate each question for its verdict, dimension scores, evidence, advice and a stronger answer.
独立展示语气词、重复连接词、相邻重复表达与长停顿,不与内容能力评分混在一起。Fillers, connectives, adjacent repeats and long pauses sit apart from the content score.
并列查看原始转写与可修订语义稿,修正后可以重新评估。Raw and editable transcripts side by side; correcting one allows re-evaluation.
将报告导出为独立 HTML 文件,离开练习界面后仍可通过浏览器重新阅读。Export the report as a standalone HTML file that stays readable in a browser.
每一次练习,
都应该可以回看。EVERY SESSION SHOULD
BE WORTH REOPENING.
侧边栏提供练习历史,按练习时间排列,可以打开已完成的报告,也可以恢复尚未完成的练习。历史记录保留当前场景、题目、回答、语义稿和评价结果,因此不必每次都从头配置——一场模拟面试可能包含十几道题,用户可以在不同时间分阶段完成。The sidebar lists sessions by time: finished reports reopen, unfinished sessions resume. Scene, questions, answers, semantic transcripts and evaluations are kept, so nothing has to be configured twice — a fifteen-question interview can be completed in stages.
首版没有引入复杂的训练任务管理系统,而是优先保证练习历史能够被保存、恢复和查看。目前这些记录保存在当前浏览器的本地存储中,清除浏览器数据或更换设备时可能无法保留;跨设备同步与更完整的长期训练记录仍待探索。Version one skips a heavyweight training-task manager and instead guarantees that history can be saved, resumed and read. Records currently live in this browser's local storage, so clearing site data or switching devices may lose them; sync and durable long-term records remain open questions.
在 AI 产品中
明确数据边界。DRAW CLEAR DATA BOUNDARIES
INSIDE AN AI PRODUCT.
表达训练可能涉及私人经历,也可能涉及工作中的敏感信息:用户愿不愿意把面试回答、工作汇报,甚至涉及公司业务的内容交给一个在线服务?因此,EchoMind 把语音识别与 AI 内容分析分开处理,并让每一层的数据去向保持明确。Expression training touches private experience and sometimes sensitive company detail: would you hand your interview answers or an internal report to an online service? EchoMind therefore separates speech recognition from AI analysis and keeps each layer's data path explicit.
麦克风音频在浏览器本机处理,原始录音不上传外部识别服务,也不作为长期音频文件保存在练习历史中。Microphone audio stays in the browser: no upload to an external recogniser and no long-term audio file in history.
转写文本、语义稿与分析报告保存在当前浏览器,当前版本不要求创建云端账户。Transcripts, editable text and reports live in this browser; no cloud account is required.
需要用户自行配置兼容 OpenAI Chat Completions 的模型服务,可填写接口地址、模型 ID 与 API Key;发送文字前确认数据范围。Users configure an OpenAI Chat Completions compatible service — endpoint, model ID and key — and confirm the data scope before sending text.
BYOK 让用户按成本与模型能力自由选择,也让早期产品不必承担统一计费与额度管理;代价是配置门槛和评价质量取决于所选模型。BYOK lets people choose on cost and capability without the product owning billing and quotas — at the price of setup effort and model-dependent quality.
与此同时保留了一组基础问题:即使不配置大模型,用户也能进行录音与表达练习,只是无法获得完整的 AI 内容评价。A set of built-in questions remains: without a configured model you can still record and practise, just without the full AI evaluation.
练习界面的首要任务,
是减少干扰。THE PRACTICE SCREEN'S FIRST JOB
IS TO GET OUT OF THE WAY.
在界面设计中,我希望用户始终清楚三件事:我现在正在进行哪一项练习?我的声音是否被正常记录?接下来应该执行什么操作?因此 EchoMind 采用相对明确的页面结构。The interface should always answer three questions: which task am I in, is my voice being captured, and what do I do next? The page structure follows from that.
首页Home
创建练习的入口,左侧保留历史记录,可继续之前的训练或查看已生成的报告。The entry point, with history on the left to resume training or open a finished report.
场景配置Setup
按练习类型展示对应表单:面试关注岗位与 JD,汇报关注主题、听众、目的与计划要点。A form per scene: role and JD for interviews, topic, audience, goal and points for reporting.
练习页面Practice
主要空间留给当前任务、实时转写与录音控制,辅助区域展示习惯指标与节奏提示。The task, live transcript and recording controls take the space; habit metrics stay secondary.
结果页面Results
整体概览与逐题详情结合,先看整体表现,再进入某道题核对证据与建议。Overview first, then per-question detail for evidence and advice.
功能型软件,
也可以拥有不同的界面个性。UTILITY SOFTWARE CAN STILL
HAVE A PERSONALITY.
除了常规的明亮和深色主题,EchoMind 引入了 DaisyUI 的多套配色,并尝试报纸风与 NeoBrutalism 等视觉风格。主题不仅改变背景颜色,也会影响卡片、边框、字体层级、按钮与报告等界面元素——在保持相同信息架构和功能流程的前提下,验证不同的视觉语言能否复用同一套组件。Beyond light and dark, EchoMind adopts several DaisyUI palettes and experiments with newspaper and NeoBrutalism styles. A theme changes cards, borders, type hierarchy, buttons and reports, not just background colour — a design-system exercise in whether one component set can carry several visual languages.
无论用户选择哪种外观,录音、评价和报告流程都保持一致:主题系统不应影响练习与报告的内容完整性。Whatever the look, recording, evaluation and reporting stay identical: theming must never compromise the completeness of a session or its report.
从产品设计
到实际开发。FROM PRODUCT DESIGN
TO WORKING SOFTWARE.
EchoMind 也是一次把语音 AI、前端交互与产品评价机制结合起来的开发实践。前端使用 React、TypeScript、Vite 和 Tailwind CSS,组件基于 shadcn、Radix UI 等工具组织,并结合 DaisyUI 实现多主题能力;语音识别使用 sherpa-onnx 相关技术,把本地中文语音模型运行在浏览器环境中;AI 内容分析通过兼容的模型 API 完成,并使用独立的请求代理处理模型连接。EchoMind is also a build practice that joins speech AI, front-end interaction and an evaluation model. The front end uses React, TypeScript, Vite and Tailwind CSS with components organised through shadcn and Radix UI, plus DaisyUI for theming. Recognition runs a local Chinese speech model in the browser via sherpa-onnx, and AI analysis goes through a compatible model API behind a dedicated request proxy.
通过 Cloudflare Workers 提供静态页面、模型代理与语音模型文件访问,模型可存放在 R2,由浏览器下载后本机执行。Cloudflare Workers serve the page, the model proxy and the speech model files; models can live in R2 and run locally after download.
把网页应用、本地服务、Node.js 运行环境与语音模型整合成一个下载包,解压运行启动脚本即可在浏览器打开。A downloadable bundle that packs the web app, a local service, Node.js and the speech model — unzip, run the script, open the browser.
从实现功能,
到确保练习能够完成。FROM SHIPPING FEATURES
TO FINISHING A SESSION.
对一个表达训练工具来说,最严重的问题之一,就是用户说完了,却无法得到结果。实时语音识别比普通表单类应用复杂得多:持续采集音频、模型加载、流式处理、文字更新、状态切换与录音收尾,任何一个环节出问题都可能破坏整场练习。下面五个问题都来自真实开发过程。For a training tool, the worst failure is finishing your answer and getting nothing back. Live recognition is far more involved than a form app: continuous capture, model loading, streaming, text updates, state transitions and shutdown — any one of them can break a session. These five problems came out of the build.
用户点结束后,识别可能仍在处理剩余音频,界面会一直停在收尾状态。现在增加了明确的完成等待机制与异常、超时处理:模型无法返回时必须告诉用户发生了什么,而不是让操作悬而未决。Recognition can still be draining audio after the user stops. Explicit completion waiting plus error and timeout handling now explain what happened instead of hanging.
持续录音会不断产生音频数据。可重新转写的缓冲设置了 20 分钟上限,回答确认后及时释放;实时转写与电平更新则改为合并刷新,减少高频状态更新。Buffers for re-transcription cap at 20 minutes and release on confirmation; transcript and level updates are batched to cut re-renders.
每输入一个字符就重新计算评价、写入历史会带来不必要的开销;语义稿改为停止输入后再提交更新,并减少重复的历史写入。Per-keystroke evaluation and history writes were wasteful; edits now commit after typing stops, with fewer history writes.
切换到另一场练习后,先前请求才返回,就可能把旧数据写进新练习。写入前需要确认当前练习与评价对象仍然一致;语义稿被修改后,旧评价也不能覆盖新内容。A late response could write into the next session. Writes now verify the session and target first, and stale evaluations cannot overwrite newer text.
历史数据保存在浏览器中,异常或损坏的记录可能导致页面无法渲染。后续版本增加了历史数据校验与错误兜底,让单条异常记录不至于破坏整个应用。Bad records in local storage could break rendering. Validation and fallbacks now keep one corrupt entry from taking down the app.
在开发过程中
逐渐明确的几个原则。PRINCIPLES THAT SETTLED
DURING THE BUILD.
一个表达训练产品,需要控制好记录、分析和用户干预之间的关系。随着功能逐步实现,这些原则逐渐明确,也构成了 EchoMind 当前的交互与评价基础。A training product has to balance recording, analysis and user intervention. As features landed, these principles settled — and they now underpin how EchoMind behaves.
同一场面试练习不允许反复重录已确认的回答,让记录相对完整,而不是只留下不断修改后的结果。Confirmed answers cannot be re-recorded, so the record stays honest rather than endlessly polished.
讲话时最重要的仍是组织语言,因此实时界面只展示轻量统计与提示,更完整的内容分析放到练习之后。While speaking, organising language matters most: live UI shows light metrics only, with deeper analysis after the session.
语气词、重复表达和停顿帮助观察语言习惯,但不直接决定内容分数。Fillers, repeats and pauses inform habits; they do not decide the content score.
面试、自我介绍、反问与工作汇报使用不同维度;新增场景也应按具体目的重新设计标准。Interview, introduction, questions and reporting each use their own dimensions — new scenes get new rubrics.
模型没有返回可验证的证据时,系统不应强行给分,显示待评估或无法评价比输出一个缺乏依据的数字更合理。Without verifiable evidence the system should not invent a score; pending or unable-to-evaluate beats a hollow number.
原始录音留在本地处理,内容分析需要用户明确配置与同意,原始记录与修订内容分离。Audio stays local, analysis needs explicit configuration and consent, and raw records stay separate from revisions.
从单次分析
走向持续训练。FROM A SINGLE ANALYSIS
TO ONGOING TRAINING.
目前 EchoMind 已经建立了练习、录音、转写、评价和报告的基础流程。但对表达训练来说,一份报告只是一次观察;真正值得继续探索的,是如何把这些独立的练习连接起来。以下方向仍属于后续规划,需要进一步验证实际价值与实现成本。The core loop — practise, record, transcribe, evaluate, report — exists. But for training, one report is a single observation; the open question is how separate sessions connect. Everything below is planning, still to be validated for value and cost.
按汇报对象与目的配置更有针对性的维度、权重与 Rubric——向直属领导同步进展与向高层推动决策,评价重点并不相同。Dimensions, weights and rubrics tuned to audience and goal: updating a manager differs from asking executives to decide.
项目介绍、方案陈述、公开演讲都可以探索,但每种场景都要重新明确真实任务、输入、交互节奏与评价标准。Project intros, proposals and public speaking are candidates — each needs its own task, inputs, rhythm and standard.
在用户自愿保存的记录上,观察不同场次之间的变化:重复是否减少,回答是否更具体,某些问题是否反复出现。On records people choose to keep: are repeats falling, answers getting more concrete, the same problems recurring?
把报告里的问题转成下一次练习的重点,例如缺少案例证据时,下一场就围绕项目经历展开。Turn findings into the next drill: a lack of evidence becomes a session focused on project stories.
当前主要面向 macOS 浏览器,历史记录仍在本地;更稳定的本地交付、跨平台兼容与可控的数据迁移仍待探索。Today it targets macOS browsers with local history; stabler packaging, cross-platform support and controllable migration remain open.
一次关于 AI 表达训练的
产品实践。A PRODUCT PRACTICE IN
AI-BASED SPEECH TRAINING.
最初,我只是希望能记录自己说过的话,并借助 AI 发现口头表达中的语气词、重复、停顿和逻辑问题。但随着产品逐渐展开,我发现「表达能力」并不是一个适合用单一分数衡量的对象:一段面试回答是否有效,取决于它是否切题、能否提供证据、是否说明了候选人的能力;一次工作汇报是否有效,则要看结论是否明确、事实是否充分、风险是否被说明,以及听众是否知道接下来该做什么。于是产品从通用表达检测,调整为围绕具体场景进行练习与评价的工具。It began as a way to record what I said and let AI surface fillers, repeats, pauses and logic problems. As the product grew, “expression ability” turned out to resist a single score: an interview answer works when it is on topic, evidenced and shows capability; a report works when the conclusion is clear, the facts sufficient, the risks stated and the audience knows what comes next. So the product moved from generic detection to scene-specific practice and evaluation.
交互上需要考虑用户如何进入练习、如何控制录音、什么时候确认回答、怎样回看证据;技术上要处理实时语音识别、本地模型运行、异步任务、文本修订、数据存储和性能问题;AI 评价上则要守住一条更重要的边界——模型可以提供分析,但分析结果必须尽可能有据可查,不能因为模型能生成一个分数,就默认这个分数可信。Interaction had to answer how a session starts, how recording is controlled, when an answer is confirmed and how evidence is revisited. Engineering had to handle live recognition, local models, async work, text revision, storage and performance. Evaluation had to hold one boundary above all: a model can analyse, but the analysis must stay traceable — a generated number is not automatically a true one.
EchoMind 目前仍处于 Beta 阶段,已经拥有基本的表达训练流程,但语音识别质量、长时间稳定性、模型评价一致性和长期训练效果仍需要更多测试与验证。最后留下一个最值得继续探索的问题:如何让 AI 在不替代用户思考和表达的前提下,帮助用户更准确地认识自己的表达方式,并找到可以实际执行的改进方向?EchoMind is still Beta. The basic training flow works, yet recognition quality, long-session stability, evaluation consistency and long-term outcomes all need more testing. One question is worth keeping: how can AI help people understand their own expression more accurately — and find changes they can actually make — without thinking or speaking for them?
个人独立产品Independent personal product
AI 表达训练 / 语音识别 / 场景化学习工具AI expression training / speech recognition / scenario-based learning
模拟面试、工作汇报Interview practice, work reporting
产品规划、交互设计、UI 设计、AI 辅助开发与前端实现Product planning, interaction and UI design, AI-assisted development and front-end implementation
React 19、TypeScript、Vite 6、Tailwind CSS 4、sherpa-onnx、WebAssembly、Cloudflare Workers、R2React 19, TypeScript, Vite 6, Tailwind CSS 4, sherpa-onnx, WebAssembly, Cloudflare Workers, R2
Beta · v0.1.1Beta · v0.1.1
持续开发与验证中In active development and validation