🌱 从录音到开口说话:VoxCPM2 声音克隆零基础完整教程

适用范围:本教程面向已经拥有本案例 Windows 工程的新手,帮助你从录音开始完成训练与使用。启动菜单和素材整理页面属于这套本地工程,并不是下载任何一份官方源码都会自带的界面。本文不提供未经验证的全新电脑安装步骤;如果没有这套工程,应先完成官方环境安装,再核对入口差异。

页面底部获取资源链接

🌱 目录

  1. 先分清三种东西与本案例进度
  2. 认识目录和启动菜单
  3. 录音设备与场景测试
  4. 设计并录制四组正式语料
  5. 把长录音整理成训练数据
  6. 进行 LoRA 训练
  7. 找到并检查模型
  8. 解决推理页面看不到 LoRA
  9. 第一次推理与效果对比
  10. 建立情绪参考音频库
  11. 常见问题与排错表
  12. 保存、迁移与完成检查
  13. 资料来源与证据边界

🌱 一、先分清三种东西与本案例进度

1. 训练素材、LoRA 模型、参考音频不是同一种文件

名称 是什么 什么时候使用 不能替代什么
训练素材 你录的真人声音,以及每个切片对应的准确文字 数据整理和训练时 不能直接当成训练完成的模型
LoRA 模型 训练得到的一小组适配权重及其结构配置 推理时与匹配的基础模型一起加载 不能脱离基础模型独立运行
参考音频 一小段干净的真人录音,通常配有逐字文本 生成时提供音色、节奏、语气等参考 不能保证精确控制某一种情绪,也不等于重新训练

可以先这样理解:训练素材供模型学习;LoRA 保存这次学习的结果;参考音频给某次生成提供额外示范。LoRA 与参考音频都会影响声音表现,“像谁”和“怎么说”并非完全独立的两个开关。

真人录音 + 准确文字
        ↓ 数据整理、切片与复核
训练数据集 + VoxCPM2 基础模型
        ↓ LoRA 训练
LoRA 权重 + LoRA 配置
        ↓ 与同一基础模型配合
新文本 + 可选参考音频及其原文
        ↓ 推理
生成语音

2. 原对话实际上包含两个阶段

阶段 原对话记录 本教程如何使用
早期训练 约 9.9 分钟,导出 65 条训练数据、3 条验证数据;完成 1000 步训练 用来说明已跑通的训练流程和模型检查
后期补充录音 更换设备与场景,重新测试后录了四组、合计约 50 分钟 用来说明新一轮语料设计;没有证据表明这四组已用于完成新的 VoxCPM2 训练

原对话还讨论过另一套 IndexTTS 工程。这里不把它的训练完成日志或权重当作 VoxCPM2 的成果。

如果你现在只想使用已有声音:直接阅读第二章、七至十章,无需重新录音或训练。

如果你要训练新声音:从第三章开始,先备份旧数据,再完成数据整理与新任务训练。新一轮应使用新任务名称,保留旧模型供比较。

🌱 二、认识目录和启动菜单

1. 工程目录怎么分工

在资源管理器地址栏粘贴下面的路径,按回车:

F:\VoxCPM

本案例已核对的主要结构:

F:\VoxCPM
├─ start.bat                     启动菜单;隐藏扩展名时显示为 start
├─ venv                         本工程的 Python 运行环境
├─ pretrained_models
│  └─ VoxCPM2                   基础模型
├─ dataset                      素材整理工作区
│  ├─ wavs                      导入后的解码副本
│  ├─ clips                     切片音频
│  ├─ manifest.json             切片状态、复核结果等
│  ├─ train.jsonl               训练数据清单
│  └─ val.jsonl                 验证数据清单
├─ lora                         素材整理工具输出的训练任务
│  └─ lora_20260822_211954
│     ├─ train_config.yaml       该次训练参数
│     ├─ logs                    日志等
│     └─ checkpoints            模型检查点
├─ VoxCPM_src                   VoxCPM 源码
│  ├─ lora_ft_webui.py          LoRA Training / Inference 页面
│  └─ lora                     当前菜单 4 启动后扫描的位置
├─ dataset_prep_webui.py         本地素材整理与训练工具
├─ web_ui.py                    普通声音克隆页面
└─ clone_voice.py               普通克隆命令行入口

这两个同名目录最容易混淆:上层的是本地素材整理工具的训练输出;源码里面的是当前 LoRA WebUI 启动后扫描的位置。第八章会把两者连接起来。

2. 启动前确认

确认基础模型、运行环境和已有工程都在;训练时接通电源,避免电脑自动睡眠,并为素材副本和多个检查点留出磁盘空间。原案例使用 RTX 4060 Ti 16GB,但训练曾接近显存上限,这不是对所有设置都能稳定运行的保证。

如果是在新机器上打开本文,只有 Markdown、图片和 LoRA 文件还不够。需要恢复运行环境、基础模型和对应程序;不要通过随意升级 Torch/CUDA 来猜测修复。

3. 双击启动文件

start.bat

会出现以下菜单。本菜单已对照本机启动文件核实,是文字转录,不是伪造截图。

1. Voice cloning Web UI
2. Command-line help
3. Dataset preparation and LoRA training
4. Official LoRA training Web UI
5. Exit
菜单项 用途 什么时候选
第一项 普通参考音频克隆界面 普通克隆实验;不能据此认定已加载 LoRA
第二项 查看普通克隆程序的命令行帮助 查支持哪些参数
第三项 导入、切片、识别、复核、划分与 LoRA 训练 准备数据和训练新任务
第四项 LoRA WebUI,同时包含训练和推理 使用已经训练好的 LoRA
第五项 退出菜单 结束使用

要用已有 LoRA,输入:

4

然后按回车。看到后台实际输出本地服务地址,再打开浏览器:

http://127.0.0.1:7860

素材整理工具使用另一个端口:

http://127.0.0.1:7861

第一项和第四项都使用同一个推理端口,不要同时启动。黑色窗口是后台程序,使用过程中不要关闭;关闭浏览器标签页与关闭后台不是一回事。

4. Training 与 Inference 的区别

图1:LoRA WebUI 的 Training 页面

图1|Training 页面:创建训练任务,不是选择现有声音。

说明:这是用户原始截图。图中输入框展示的是当时页面值,并非已有模型的实际训练配置。本教程采用图下位置标注,保留截图原貌。

操作标注 图中位置 应当做什么
1-A 左上方 Training 标签 训练新模型时才使用
1-B Training 右侧 Inference 标签 仅使用已有声音时,点击这里
1-C 左侧“预训练模型路径”与两种数据清单 真正训练前填写本机有效路径,不照抄截图示例
1-D 左下方训练参数 对照第六章;截图里的迭代、Alpha 等值与旧任务不同
1-E 左下方“开始训练” 只是使用现有声音时不要点击
1-F 右侧“训练日志” 判断初始化、训练、验证、保存与错误状态

🌱 三、录音设备与场景测试

1. 先测试,再录长素材

原对话中用户明确更换了设备和场景,因此重新做了录音基准测试。不能把旧场景的合格结论直接沿用到新场景。记录中没有可靠确认具体麦克风品牌和型号,本文不虚构设备清单,也不要求为本流程购买新设备。

按以下顺序做:

  1. 找安静、回声较少的位置,避开持续风声、风扇直吹与其他人说话声。
  2. 固定录音设备、嘴与麦克风的位置、坐姿和输入增益。把实际位置记下来,方便下一次恢复。
  3. 尽量关闭美声、混响、变声、强降噪和自动音量增强;设备无法关闭的处理也应记录。
  4. 先录约一至两分钟,包含平静叙述、问句、稍有力度的感叹和数字。
  5. 戴耳机试听开头、中间、结尾;检查背景噪声、喷麦、失真和声音忽远忽近。
  6. 确实需要调整增益时,每次只调一点,再录二三十秒复测。合格后固定设置。

如果不熟悉英文,直接使用中文测试。不必因为原测试稿出现了英文而勉强朗读;后续正式语料已经按用户需求改为中文为主。

可直接朗读的短测试稿:

今天重新做一次声音测试。我会保持正常坐姿,用平时和别人聊天的声音说话。现在房间比较安静,我先说几句平静的话。

准备好了吗?准备好了,可以开始。怎么回事,刚才不是还好好的吗?真的?太好了,终于等到了!

有些事情不用着急,先把问题弄清楚,再一步一步处理。今天是九月二日,上午七点二十三分。价格是三百六十八元,距离十二点五公里,已经完成百分之六十八点五。

现在我把声音恢复到平常的状态。这一次测试结束了。

2. 怎样判断“够不够好”

检查项 可继续录的表现 应调整的表现
清晰度 说话清楚,自然 含糊、明显闷声或金属感
噪声与混响 安静段没有突出的持续噪声,尾音回声不明显 风声、机器声、空房间回声遮住人声
电平 正常讲话有余量,较激动的句子也不失真 爆红、平顶波形、爆裂音
一致性 前中后距离和音量基本稳定 越录越远、转头说话、忽大忽小
状态 像平时聊天 为了训练故意压嗓、播音腔、明显疲劳

录音电平的实用参考范围,而非硬性合格线:

正常说话峰值可参考:约 -12 ~ -6 dBFS
避免碰到数字满幅:0 dBFS
不要只为追求峰值而不断提高增益

峰值表示最响的一瞬间;整段 RMS 会受静音长度影响。数值较低不能单独证明录音不合格,数字达标也不能证明没有混响或喷麦。

原对话最终选用的测试文件和历史报告为:

Recording (9)
时长:约 28.7 秒
采样率:48 kHz
峰值:约 -12.8 dBFS
整段 RMS:约 -32.7 dBFS

证据说明:这些录音数值来自原对话当时的分析报告,本次制作教程没有重新测量、试听确认。它们是案例记录,不是每个人必须达到的指标。

🌱 四、设计并录制四组正式语料

1. 总量目标与最终安排

目标是四十至六十分钟的多样化、干净素材,不是拼命凑够一小时。原先曾讨论五组,实际在四组达到约五十分钟后决定收尾。本教程保留最终四组方案,去掉反复改计划的过程。

正式录音 原对话记录时长 主要用途 录法
第一组:自然叙述 约 10 分 05 秒 建立日常音色、自然长短句和基础节奏 像面对面讲一天的经历,不朗诵
第二组:日常对话与不同语气 约 11 分钟 覆盖提问、回答、确认、否定、感叹 对话可以由同一个人读,不模仿另一个角色的音色
第三组:数字、时间、日期与复杂中文表达 约 15 分 42 秒 补金额、数量、单位、百分比、方位和数字语境 按平时表达读,标注必须匹配实际读法
第四组:自然情绪与真实表达 约 13 分 04 秒 补高兴、期待、疑惑、着急、失望、严肃、安慰等状态 自然表达,不喊叫、不故意哭腔

四组原始录音合计约五十分钟。切掉口误、噪声和多余静音后,有效训练时长可能减少,这是正常现象。

2. 正式录音规则

  1. 每组录完休息五至十分钟,喝水,让嗓音恢复,再录下一组。
  2. 设备、场景、位置和增益保持一致。情绪变化通过语速、节奏、音高和语气表达。
  3. 读错时停一两秒,从该句重新读;后续切片时剔除错误版本,不必整组重来。
  4. 小节标题、情绪标签和操作说明不要读进素材。
  5. 保留原始文件。不先做强降噪、压缩、混响或反复转码。
  6. 每组试听前、中、后段,发现疲劳或环境变化,先休息或修复环境。

原录音为 M4A,也可以保留;已有文件改后缀不会变成 WAV,转 WAV 也不能恢复有损压缩丢失的信息。下一章的工具会生成用于处理的解码副本。

配套录音稿:四组正式录音稿(从原对话提取正文)。朗读速度不同会改变时长,不要为了追上表格时间而拖慢或重复读。对于稿子中的数字和金额,应以实际读音校对标注;它是录音语料,不是计算题答案。

🌱 五、把长录音整理成训练数据

1. 先备份已有素材工作区

本地素材工具使用固定工作目录。开始新一批数据前,先把旧工作区整体复制到独立备份位置,再操作;不要把新旧素材无意混在同一份清单里。

需要备份的旧工作区:
F:\VoxCPM\dataset

还应保留:原始录音、原稿、旧训练任务目录

已有训练清单引用本地音频路径,只保存清单而不保存切片,不能恢复数据集。

2. 打开素材整理页面

双击启动文件,在菜单中输入:

3

打开该工具的本地地址,然后按顶部六个标签顺序操作。下面按钮名称已对照本机源码核实;本次取回的四张截图未包含素材整理页面,因此这里采用文字步骤,不用其他软件截图冒充。

3. ① 导入音频

上传四组原始录音,或填写存放录音的文件夹路径,点击“导入并解码”。本工具生成单声道 WAV 副本,原始文件保留。

解码副本位置:F:\VoxCPM\dataset\wavs
工具解码格式:48 kHz,单声道 WAV

完成标志:导入结果显示成功;生成的副本能正常播放,没有空文件。

4. ② 自动切片

第一轮可以先用本机工具默认值,再试听判断是否要调整:

静音阈值:35 dB(本工具参数;不是录音峰值标准)
最短切片时长:3.0 秒
最长切片时长:12 秒
合并间隔:0.45 秒

点击“开始切片”。自动切片不是自动合格:重点检查首字是否被切掉、尾音是否完整、是否把两句话之间的口误带进来。不要为了达到某个切片总数而接受坏切片。

完成标志:有可播放的切片,并且边界大体合理。需要重新切片时,应在正式复核前处理,避免反复切片使已经校对的结果失效。

5. ③ 识别与原稿比对

把对应录音的正文粘贴到“原稿文本”,点击“开始识别”。本机工具使用 SenseVoice 做识别;首次加载较慢,若识别模型未准备好,应先解决模型加载问题。

原稿只帮助比对,自动识别不是最终答案。尤其注意数字、多音字、漏读、重复读和口误。

6. ④ 人工复核

逐条播放切片,检查“最终文本”。按实际听到的内容修正后,点击“通过并下一个”;坏片段点击“剔除”。

例如实际说的是“七点二十三分”,就不要标成“七点三十分”。如果读错一句又重读,优先保留正确版本;不能让音频保留错误读法,文字却假装完全正确。

完成标志:准备进入训练的每条切片都已复核,声音与文字对应。已复核总数、通过总数、有效导出总数是不同统计口径;若少了一条,应查状态、最终文本和划分结果,不要直接认定无影响。

7. ⑤ 划分与导出

原案例使用以下划分设置:

训练集比例:0.95
随机种子:42

先点“重新划分”,确认结果,再点“生成 JSONL”。训练集用于学习;验证集用来观察没有参与训练的样本表现。

训练清单:F:\VoxCPM\dataset\train.jsonl
验证清单:F:\VoxCPM\dataset\val.jsonl

原案例导出结果是六十八条、约九点九分钟,其中训练六十五条、验证三条。这个数字属于旧数据集,不是四组新录音应该得到的数量。原来的验证集很小,结论有限;新一轮应核对验证样本覆盖,并避免重复录音跨训练、验证集合造成误导。

JSONL 是“一行一个记录”的文本文件。本工具导出的字段如下,示例仅解释格式,不应直接复制覆盖真实清单:

{"text":"今天天气不错,我想出去走一走。","audio":"F:/VoxCPM/dataset/clips/clip_0001.wav","duration":4.8}

其中时长必须对应真实文件。通常直接使用页面导出结果,不需要手工编写。

🌱 六、进行 LoRA 训练

1. 推荐入口:素材整理工具的第六页

完成导出后,进入“⑥ LoRA 训练”。这个入口会复用本机的基础模型和官方训练脚本,输出到工程根目录下的 LoRA 文件夹。

已有任务的关键参数已从训练配置文件核实:

pretrained_path: F:/VoxCPM/pretrained_models/VoxCPM2
train_manifest: F:/VoxCPM/dataset/train.jsonl
val_manifest: F:/VoxCPM/dataset/val.jsonl
num_iters: 1000
max_steps: 1000
learning_rate: 0.0001
batch_size: 2
grad_accum_steps: 8
save_interval: 500
valid_interval: 500
warmup_steps: 100
num_workers: 4
sample_rate: 16000
out_sample_rate: 48000
lora:
  r: 32
  alpha: 32
  dropout: 0.0
  enable_lm: true
  enable_dit: true
  enable_proj: false

这是历史实际配置摘要,不是为所有显卡、数据量保证效果的通用最佳参数,也不是完整可直接运行的配置文件。完整旧配置仍保存在原任务目录;不要为了照抄教程改写它。

参数 简单解释 新手重点
迭代次数、最大步数 训练更新多少次 最后一步不一定最好,保存中间模型比较
学习率 每次更新参数的幅度 不凭感觉猛加
Batch Size 一次处理多少条样本 越大通常越占显存
梯度累积 累积多次计算再更新 旧案例有效批量为两者乘积
Rank / Alpha LoRA 容量和缩放配置 推理使用检查点自身配套配置
保存间隔 多久保存一次检查点 决定中断时和试听比较时可用哪些模型
验证间隔 多久评估验证数据 验证和试听会增加总耗时

2. 不要混淆三种采样率

原始录音或解码副本:48 kHz
本案例 VoxCPM2 AudioVAE 编码输入 sample_rate:16000
本案例输出 out_sample_rate:48000

原始录音是高采样率,不代表训练配置必须写同一个值。训练配置要匹配基础模型的编码器要求。本机模型配置与 官方 VoxCPM2 LoRA 配置 均区分编码输入和输出采样率。

3. 新任务怎么开始

确认数据清单有效,输入一个与旧任务不同的新名称,例如:

my_voice_v2

记录本次设置,点击“一键开始 LoRA 训练”,查看日志。本次应从适配的新数据任务开始,不要仅因同一个人的声音就覆盖旧任务。

如果显存不足,可在失败退出后降低单批数量,再评估梯度累积设置。例如以下只是保持名义有效批量的一种调整,不保证完全等价或解决所有显存问题:

原组合:batch_size = 2,grad_accum_steps = 8
可测试:batch_size = 1,grad_accum_steps = 16

长切片、其他占显存程序和模型状态也会影响显存。训练期间尽量不要同时运行其他大型 GPU 任务。

4. 备选入口:菜单第四项的 Training

如果使用图1的官方 LoRA Training 页面,需要手动填写基础模型和真实数据清单路径:

预训练模型路径:F:\VoxCPM\pretrained_models\VoxCPM2
训练数据清单:F:\VoxCPM\dataset\train.jsonl
验证数据清单:F:\VoxCPM\dataset\val.jsonl

截图中的示例清单、默认训练次数、Alpha 不能视为旧任务设置。当前启动方式还会让该页面的新训练输出位于源码目录内的 LoRA 文件夹,因此必须以本次日志实际保存路径为准。

对于零基础新手,优先使用已经走完数据整理流程的第六页;不建议在两个训练页面之间反复切换着启动同一任务。

5. 怎样看懂日志

日志内容 含义 是否代表完成
加载 AudioVAE、模型参数列表 初始化 否
大量参数后显示 False 基础参数被冻结,不参与直接更新 否,也不等于错误
CUDA、bfloat16 使用的设备与数值精度 只能说明初始化信息
train step、loss 已开始训练迭代 仍需等待后续保存
val step 验证 不一定是全部结束
Generating sample、分数进度条 正在生成试听样本 不是主训练进度
返回码为零,且最终检查点已保存 程序正常结束并产生结果 可进入检查和试听

原对话中容易混淆的例子:

[train] step 860 ...

这是主训练步数;而下面这种是某条试听音频内部的进度:

29/142
Generating sample 1

不要看到试听进度百分比就重新计算主训练进度。训练最后可能先验证、生成样本,再保存最终模型;不要在这一阶段误点停止。

损失值上下波动不一定异常,学习率逐渐变小可能是正常调度。出现下列情况才需要进一步检查:

Traceback
CUDA out of memory
nan
inf
非零退出码

训练耗时应以最近多个主训练日志区间估算,并另加验证、试听和保存时间。旧案例耗时较长,不能把其小时数当作新一批数据或另一张显卡的承诺。

🌱 七、找到并检查模型

1. 直接打开已有最终检查点

F:\VoxCPM\lora\lora_20260822_211954\checkpoints\step_0001000

图2:已有 LoRA 检查点的五个文件

图2|最终检查点:核对任务名称、步数和配套文件。

说明:用户截图显示已有任务的最终目录和五个文件。文件存在是基础检查,并不能仅凭截图证明文件内容没有损坏或声音质量合格。

操作标注 图中位置 应当做什么
2-A 顶部地址栏 核对是指定任务、指定检查点,而不是其他工程
2-B 文件列表前两行 确认权重和配置都在同一目录
2-C 文件列表后三行 保留训练状态文件,便于完整归档和可能的续训

2. 五个文件各做什么

1. lora_config.json
2. lora_weights.safetensors
3. optimizer.pth
4. scheduler.pth
5. training_state.json
编号 作用 使用建议
1 记录基础模型、LoRA 结构和缩放等配置 与同一检查点的权重配套;不要拿别的任务配置替换
2 实际训练得到的适配器权重 推理核心文件;还需要匹配的基础模型
3 优化器状态 通常供断点续训,不是普通推理的必要输入
4 学习率调度器状态 通常供断点续训,建议保留
5 训练步数等状态 帮助检查进度;续训仍取决于程序是否支持正确恢复

本次只读核对,状态文件记录为:

{"step": 1000}

上一级通常还会看到:

checkpoints
├─ step_0000000
├─ step_0000500
├─ step_0000999
├─ step_0001000
└─ latest

中间检查点便于比较;最新检查点不等于最佳检查点。不要只凭名称认定最新目录与某一步完全相同,需要时核对状态或文件哈希。

完整备份应保留整个任务目录,包括配置与日志;不要只挑一个权重文件保存后就删除其余内容。

🌱 八、解决推理页面看不到 LoRA

1. 典型现象

图3|Inference 页面:先确认模型选择,再填写生成内容。

说明:用户截图显示推理页面已打开,但模型下拉框仍未选中 LoRA。这里的截图是当时状态,不是本次制作教程时重新运行的结果。

操作标注 图中位置 应当做什么
3-A 顶部 Inference 标签 确认进入推理页
3-B 中间列上方 LoRA 下拉框 打开列表,查看是否存在目标检查点
3-C 下拉框下方“刷新模型列表” 文件放好后点击它,再重新展开下拉框
3-D 左列“合成文本” 填要生成的新句子
3-E 左列下半部参考音频、参考文本 填示范录音及其实际原文
3-F 中列 CFG、推理步数、随机种子 第一轮按第九章固定设置
3-G 中列底部“生成音频” 选好模型后再生成
3-H 右列音频与状态信息 确认生成是否成功,并试听、保存
None = 未启用 LoRA,使用基础模型

没有选中模型和列表扫描不到模型是两种情况。先刷新、展开列表确认;只有仍找不到目标任务时才进入目录排查。

2. 根因:启动位置决定相对扫描目录

当前启动菜单第四项先进入源码目录,再运行 LoRA WebUI。扫描函数使用相对目录,因此实际查找的是:

启动后的工作目录:F:\VoxCPM\VoxCPM_src
相对扫描目录:lora
实际扫描目录:F:\VoxCPM\VoxCPM_src\lora

但素材整理工具此前把模型保存到了:

F:\VoxCPM\lora

模型没有丢,只是两处路径不同。本机启动文件和扫描代码已核对这一行为。

3. 可复现排障步骤:检查、复制整个任务、刷新

第一步:检查原模型。 在资源管理器打开第七章的最终检查点,确认配套文件存在。原路径不可用时先查真实训练输出,不要创建几个同名空文件冒充模型。

第二步:检查 WebUI 扫描位置。

F:\VoxCPM\VoxCPM_src\lora

图4|历史空目录:解释“模型在磁盘上,但页面看不到”。

说明:这是原对话用户提供的历史截图。它证明当时该位置为空,不代表今天依然为空。

操作标注 图中位置 应当做什么
4-A 顶部地址栏 确认经过了源码文件夹,再进入 LoRA 文件夹
4-B 下方空白文件列表 这里为空,而原训练目录有模型时,继续复制步骤

第三步:复制整个训练任务文件夹。 回到下面的原目录:

F:\VoxCPM\lora

选中以下整个文件夹,右键“复制”:

lora_20260822_211954

然后进入目标目录,右键“粘贴”:

F:\VoxCPM\VoxCPM_src\lora

复制,不是剪切。保留原训练输出。 不要只复制单个权重文件,也不要把整个任务再套进同名任务文件夹,导致多嵌套一层。

最终检查点应该位于:

F:\VoxCPM\VoxCPM_src\lora\lora_20260822_211954\checkpoints\step_0001000

对应结构:

F:\VoxCPM\VoxCPM_src\lora
└─ lora_20260822_211954
   ├─ train_config.yaml
   ├─ logs
   └─ checkpoints
      ├─ step_0000500
      ├─ step_0000999
      ├─ step_0001000
      │  ├─ lora_config.json
      │  ├─ lora_weights.safetensors
      │  ├─ optimizer.pth
      │  ├─ scheduler.pth
      │  └─ training_state.json
      └─ latest

第四步:刷新模型列表。 回到图3,点击标注 3-C 的按钮,打开 3-B 下拉框,选择:

lora_20260822_211954\checkpoints\step_0001000

部分显示可能附带基础模型名称。重点是任务名称与检查点正确。

第五步:短句生成验收。 列表出现只证明找到了文件;还要成功加载、生成并试听,才算推理流程通过。

4. 目标已经有同名文件夹时

不要直接覆盖,也不要反复复制。先检查现有副本的目录层级、权重与配置;必要时使用下面的只读 PowerShell 命令比较两个核心文件:

$sourceCheckpoint = 'F:\VoxCPM\lora\lora_20260822_211954\checkpoints\step_0001000'
$targetCheckpoint = 'F:\VoxCPM\VoxCPM_src\lora\lora_20260822_211954\checkpoints\step_0001000'
'lora_config.json','lora_weights.safetensors' | ForEach-Object {
    Get-FileHash -LiteralPath (Join-Path $sourceCheckpoint $_)
    Get-FileHash -LiteralPath (Join-Path $targetCheckpoint $_)
}

对应文件的哈希相同,说明对应内容一致;若不同,先保留两份并确认哪个任务版本正确。

2026-09-05 本次核对结果:目标目录已经存在该任务,原目录与目标目录中的上述两个核心文件 SHA-256 一致。本次只做读取和比较,没有替用户再次复制、改启动器或重新推理。

5. 可探索的长期方案

长期可以统一启动工作目录,或让代码始终使用明确的绝对模型目录,从而减少两份副本的维护。那属于程序维护,不是新手照着本教程必须做的动作。

本教程推荐当前菜单配合完整复制的办法来复现本次排障;不建议为了修复下拉框而重新训练、重装环境或把模型放进其他软件的普通 LoRA 目录。以后新训练出的模型不会自动同步到副本,要核对本轮输出和扫描位置。

🌱 九、第一次推理与效果对比

1. 先做最简单的连通测试

启动菜单第四项,进入 Inference,刷新并选择目标检查点。先只验证已有 LoRA 能正常使用:

LoRA:lora_20260822_211954\checkpoints\step_0001000
合成文本:今天天气不错,我想出去走一走。
参考音频:不上传
参考文本:留空
CFG Scale:2.0
推理步数:10
随机种子:42

原截图种子是随机值;这里固定种子是为了方便后面的对比。固定种子有助于同一环境对照,不保证跨硬件、跨版本逐字节一致。

点击“生成音频”。第一次可能需要加载基础模型和 LoRA。查看状态信息,播放结果,确认没有漏字、重复、异常噪声或音色明显不对。

Generation Success

状态成功与音频可以播放代表流程跑通;“像不像本人、自然不自然”还需要实际试听。生成后使用音频组件的下载功能保存,不要只依赖网页临时输出。

2. 加入中立参考音频

第一轮可用后,保留同一模型、同一句合成文本和参数,上传自己的中立录音:

参考音频:中立.wav
参考文本:这段录音里实际说出的全部文字

合成文本是想让模型新说的话;参考文本是上传录音原本说的话。两者不是同一个框,也不要求内容相同。

本机界面支持参考文本留空时自动识别,但首次稳定测试建议手动填写准确原文;自动识别失败时先补文本,不必重训 LoRA。

3. 感觉“差点意思”时怎样调

保持文本和参考音频不变,每次只调整一个变量。可按这个顺序测试:

A:step_0001000 / CFG 2.0 / steps 10 / seed 42
B:step_0001000 / CFG 2.0 / steps 20 / seed 42
C:step_0001000 / CFG 2.5 / steps 20 / seed 42
D:step_0000500 / CFG 2.5 / steps 20 / seed 42

比较时四组全部使用同一段参考音频,或者全部不使用,不要中途悄悄更换条件。

试听维度 检查问题
相似度 是否接近自己的声音
清晰度 字是否读全,有无含糊或错音
自然度 节奏是否僵硬,停顿是否奇怪
稳定性 是否重复、漏字、突然变声或尾部异常

推理步数增加通常会增加耗时,但不保证质量按比例提高;CFG 更大也不是一定更好。旧数据较少,最终模型可能不如中间检查点自然,但不能只凭“数据少、步数多”直接断定过拟合。

先比较推理设置和检查点,再决定是否重新整理数据、重新训练。不要一次改模型、参考音频、文本和所有参数,否则不知道改善来自哪里。

4. 长文怎样处理

先用短句验证,再逐渐测试自然段。长文章建议按句子或段落分段生成、逐段试听后再拼接;本文没有交付自动长文工作流,也不保证截图界面自带自动切段。没有一个适合所有文本和机器的“最长分钟数”。

🌱 十、建立情绪参考音频库

1. 为什么另录短参考

四组正式语料用于训练;短参考库用于生成时随时切换示范状态。可以从质量好的真人长录音中选取完整片段,也可以专门录制,优先使用同一个人的真实录音。

建议先准备五种:中立、高兴、惊喜、伤心、愤怒。有实际需求时,再补温柔、严肃、着急,不必为了数量一次做很多。

每条建议:约 8~12 秒
内容:完整的一两句或几句自然表达
录法:同一设备、固定距离、无音乐、无明显噪声与混响
配套:每条保存准确逐字文本

这是本案例的参考库设计建议,不是模型的强制时长限制。较短片段也可能可用,最终以试听结果为准。避免“愤怒就喊、伤心就把音量压到听不清”。

2. 原五段参考的历史反馈

以下数值来自原对话,未在本次重新测量:

高兴.wav:约 3.1 秒,峰值约 -9.7 dBFS
惊喜.wav:约 4.2 秒,峰值约 -5.8 dBFS
伤心.wav:约 4.5 秒,峰值约 -27.8 dBFS
中立.wav:约 3.2 秒,峰值约 -11.9 dBFS
愤怒.wav:约 3.4 秒,峰值约 -1.2 dBFS
原参考 当时建议 正式参考库如何处理
中立、高兴 状态可保留,内容较短 录得完整一点,作为稳定基准
惊喜 表达较明确 可保留比较,再补更完整版本
伤心 声音明显偏小 正常音量重录,以慢节奏和语气表达
愤怒 峰值接近满幅 不喊叫,用咬字和语气体现力度

接近满幅不等于已经削波;峰值偏小也不自动等于不可用。这里建议重录的目标,是减少不同参考之间过大的音量差和录法差异。

3. 可直接录制的示范台词

下面是本教程补充的参考稿,不是声称已经录好或验证过的音频。自然读完后看实际时长,太短就补一句完整表达,不要用静音凑秒数。

状态 台词 录法
中立 今天没有特别着急的安排。我准备先把手里的事情做完,再出去走一走。你不用等我,我处理好了就告诉你。 正常聊天,平稳自然
高兴 太好了,这件事终于做成了。我刚才又检查了一遍,确实没有问题。今天总算可以轻松一点,我们一起庆祝一下吧。 有笑意,不提高增益
惊喜 真的已经准备好了吗?我还以为要等到明天。你让我看一下,还真是这样,这个消息确实让我有点意外。 自然抬高语调,不尖叫
伤心 我原本以为今天能见到你,没想到计划又变了。现在确实有一点失落,不过没关系,等你方便的时候我们再约。 稍慢、低落,但说清楚
愤怒 这件事我们之前已经说清楚了,你为什么又这样处理?我现在确实有点生气,希望你认真解释一下,不要再敷衍过去。 坚定、有力度,不吼
温柔 没关系,你先慢慢说,我在这里听着。不用一下子把所有事情都解决,我们先把最难的部分一起想清楚。 柔和,不故意气声化
严肃 这一步需要重新检查。结果没有确认之前,请先不要继续操作。我们把原因查清楚,再决定接下来怎么处理。 稳定、有明确停顿
着急 时间快到了,我们得先把重要的东西带上。你看看手机和钥匙有没有拿好,我在门口等你,准备好了就出发。 稍快,仍保持清楚

保存名称示例:

参考音频库
├─ 中立.wav
├─ 中立.txt
├─ 高兴.wav
├─ 高兴.txt
└─ ……

文本文件写实际录制结果,不是未经校对的台词。换参考时比较相同合成文本的结果;参考主要提供示范,不保证精确复制情绪强度。不建议把模型生成的失真音频反复用作参考库基准。

🌱 十一、常见问题与排错表

现象 可能原因 优先检查和处理 怎样算解决
浏览器拒绝连接 后台未就绪、已退出或地址不对 看黑窗口最新日志,等实际服务地址;核对端口 正确页面能打开
普通克隆页没有 LoRA 选择 选了菜单第一项 结束对应后台,改用第四项的 Inference 能看到 LoRA 下拉框
下拉框只有 None 扫描位置与保存位置不同,或尚未刷新 按第八章核对两处目录,必要时复制整个任务 目标检查点可选
目标目录已经有模型 之前已经复制过 核对层级与文件,不直接覆盖 哈希一致后刷新、短句测试
模型可选但加载失败 基础模型路径无效、配套配置不匹配、文件损坏 看状态与后台报错,核对配置中的基础模型和核心文件 日志加载成功且能生成
参考音频自动识别失败 识别模型不可用或参考内容无法识别 手动填写准确参考文本,再试 正常生成
合成念的是参考文本 两个文本框混淆或生成异常 分清新文本与参考原文,用短句复测 输出新文本内容
显存不足 批量、切片长度、并行 GPU 程序等 关闭其他占显存任务;退出后评估降低批量 新测试无显存报错
训练显示 False 基础参数被冻结 查看后续训练日志 正常出现主训练步数
进度似乎退回百分之几 正在生成试听样本 区分主训练日志和样本进度 主训练或最终保存继续
Loss 偶尔上升 样本差异造成波动,也可能需要进一步检查 看较长趋势、验证和实际试听 不发散,试听可接受
训练到最后还没退出 仍在验证、试听或写文件 查看最新日志,等待最终保存 正常退出并有完整检查点
录音太小 增益偏低、距离变化等 先试听;必要时小幅调增益后复录测试 清楚、无失真、噪声可接受
喷麦、爆裂音 气流冲击或削波 调整相对位置、降低过高增益再录 测试无爆裂和削波
声音像但僵硬 数据、训练深度、参考或推理设置影响 固定条件比较中间和最终检查点 以清晰和自然度选版本
生成长文重复或漏字 单次文本过长或生成不稳定 拆成自然段,逐段检查 每段完整正确后再拼接
JSONL 存在却找不到音频 只搬清单、切片路径失效 保留切片目录并核对清单路径 清单中的音频均可读取
页面对不上教程 工程或版本不同 先核对目录、启动入口和源码 找到对应功能后再操作

端口占用报错示例:

OSError: Cannot find empty port in range: 7860-7860

先确认是否已打开另一个 VoxCPM 服务;只结束自己明确识别的那个旧服务,不要盲目结束全部 Python 进程。

🌱 十二、保存、迁移与完成检查

1. 新人最容易忽略的事项

  • 使用自己或已获授权的录音,保留原始素材。
  • 先做短测试再录长稿;读错一句重读该句即可。
  • 原始录音、处理后的切片和短参考分开管理。
  • 数据文字必须匹配实际声音,不是匹配“本来想读的稿子”。
  • 不把 IndexTTS、图像模型或其他架构的 LoRA 混进 VoxCPM2。
  • 模型权重与配置成套保存,基础模型也要保留。
  • 不把“文件存在”“列表出现”“生成成功”“听起来满意”当成同一级别的结论。
  • 新训练使用新任务名称,不覆盖唯一的可用版本。
  • 不把截图默认值当作历史训练配置或通用最佳参数。

2. 三个阶段的完成检查

素材完成:

  • ☐ 固定设备、场景和录法,通过短测试。
  • ☐ 四组录音内容各有用途,原始文件与稿子已保存。
  • ☐ 所有保留切片已试听,文字逐条校对。
  • ☐ 已导出清单,切片文件能读取,导出数量已核对。

训练完成:

  • ☐ 日志正常结束,没有把样本生成误认为总进度。
  • ☐ 最终检查点包含权重与配套配置。
  • ☐ 整个任务目录已备份,保留至少一个中间检查点比较。

推理完成:

  • ☐ 从第四项进入 Inference,目标 LoRA 可选。
  • ☐ 短句生成成功,输出可播放且已保存。
  • ☐ 中立参考与原文准确,试听没有明显漏字、重复、变声。
  • ☐ 已记录选用的检查点、参考、文本、CFG、步数和种子。

3. 保存与迁移声音工程

迁移声音工程时,应另行备份基础模型、完整训练任务、数据与所用环境,并重新核对机器路径。本文是使用教程,不是可直接启动的软件安装包。四组正式录音稿见文末附录。

🌱 十三、资料来源与证据边界

  1. 「声音克隆」原对话:读取至可用历史起点,整理录音设计、训练记录、路径排障与用户截图。删除重复试错、其他工程操作及已被后续事实纠正的建议。
  2. 本机只读核对:启动菜单、素材工具六页功能、JSONL 导出格式、相对路径扫描逻辑、推理参数默认值、参考文本自动识别逻辑。
  3. 已有模型只读核对:实际训练配置、LoRA 配置、训练状态;两处最终检查点的权重和配置内容一致。
  4. 版本补充核对:官方 VoxCPM2 LoRA 配置,用于确认采样率区分;页面与本地版本不同时,以对应版本实际代码和模型配置为准。

本次可取回并查看的用户相关图片共四张,已全部收录为图1至图4,采用原图加图下位置操作标注。其他历史图片在读取记录中仅有占位,未用重绘或其他来源图片冒充。

整理本文时没有重新训练、测量历史录音或重新生成语音。因此本文明确区分:原对话当时的结果、本次文件和代码核对、供新一轮使用的操作建议。四组新语料是否已完成新的 VoxCPM2 训练,以及当前页面最终试听是否满意,均不能由这份教程制作过程直接证明。


🌱 附录:四组正式录音稿

本文件从「声音克隆」原对话提取四组录音正文,去掉正文前后的临时对话和下一步提示。保留正文原有措辞及段落,未重新创作成另一套稿子。原稿里仍有少量字母,例如停车区编号;不会读时可自然说“甲区、乙区、丙区”,后续按实际录音标注,不必勉强。

只读正文,不读标题、编号、分隔线或本说明。 每组录完休息五至十分钟。读错一句停一下重新读,后续剔除错误片段。不要改变录音位置和增益。稿子中的计算与日期是语言素材;如自行修正文案,保留实际使用的稿子,最终标注以真实读音为准。

原对话四组实际录音合计约五十分钟;具体时长随语速而变,不用静音或重复朗读凑时间。

🌱 第一组|自然叙述

今天是一个很普通的日子。早上醒来的时候,我没有马上起床,而是在床上躺了一会儿。窗帘没有完全拉开,外面的光从缝隙里照进来,房间慢慢亮了起来。

我拿起手机看了一眼时间,发现比平时稍微晚了一点。不过今天没有特别着急的事情,所以也就没有催着自己马上起来。

洗漱之后,我给自己倒了一杯水,在桌边坐了一会儿。早上的这段时间通常比较安静,没有太多电话,也没有太多消息。很多事情反而可以在这个时候慢慢想清楚。

有时候我觉得,一个人的一天其实是从很多小事情开始的。打开窗户,整理桌面,喝一杯水,看一眼今天要做的事情。这些事情看起来没有什么特别,但它们会一点一点影响一天的状态。

今天我要处理的事情不少。有些比较重要,需要认真完成;有些只是顺手处理一下就可以。我习惯先把事情简单排一下顺序,看看哪些必须今天完成,哪些可以稍微往后放一放。

当然,计划并不一定总能按照原来的安排进行。

上午十点多的时候,我正在处理手头的事情,手机突然响了。原本以为只是一个普通电话,没想到对方告诉我,之前一直在等的事情终于有结果了。

听到这个消息,我第一反应是:“这么快吗?”

对方笑了一下,说:“其实也不算快,我们已经准备很长时间了。”

想想也是。有些事情在等待的时候,总觉得时间过得特别慢。等真正有结果以后,再回头看,好像也没有过去多久。

挂掉电话以后,我重新坐下来,把刚才做到一半的事情继续完成。

窗外偶尔能听到汽车经过的声音。楼下有人说话,还有一阵很轻的风吹过树叶。天气没有特别热,也没有特别冷,是一个让人觉得比较舒服的温度。

到了中午,我突然发现自己有点饿了。

“今天吃什么呢?”

这个问题看起来简单,但有时候还真不知道怎么回答。

打开冰箱看了一会儿,里面有鸡蛋、青菜、一些水果,还有昨天剩下的一点东西。我想了想,最后还是决定简单一点,不折腾了。

吃饭的时候,我没有看手机。

以前总觉得吃饭的时候顺便看看消息、看看视频,可以节省一点时间。后来才发现,真正安静地吃完一顿饭,其实也挺舒服。

很多时候,我们总想着同时做几件事情。

一边吃饭,一边看手机;一边走路,一边回复消息;一边听别人讲话,一边想着下一件事情。

看起来效率很高,但脑子好像从来没有真正停下来过。

下午,我出去走了一会儿。

路上的人不算多。经过一个路口的时候,我看到一个小孩子拉着爸爸的手,站在那里等红灯。

孩子一直在问:“什么时候可以走?”

爸爸说:“等绿灯亮了就可以。”

过了一会儿,孩子又问:“现在呢?”

爸爸还是回答:“再等一下。”

我从他们旁边走过去的时候,忍不住笑了一下。

小时候总觉得很多事情应该马上发生。想吃什么,就希望马上能吃到;想去哪里,就希望马上能出发。

长大以后才慢慢明白,有些事情确实需要等。

不是所有问题今天都必须得到答案,也不是所有事情努力以后马上就会有结果。

走到前面的商店,我买了一瓶水。

老板问我:“还需要别的吗?”

我说:“不用了,就这个,谢谢。”

从商店出来以后,我没有马上回去,而是继续往前走了一段。

太阳已经不像中午那么亮了,路边建筑的影子慢慢变长。远处有人骑着自行车经过,还有一辆公交车停在站台旁边。

我忽然想到,其实我们每天都会经过很多这样的场景。

只是大部分时候走得太快,没有认真注意。

如果稍微慢一点,就会发现生活里有很多声音。

汽车启动的声音,关门的声音,风吹树叶的声音,远处有人叫名字的声音,还有鞋子踩在地面上的声音。

这些声音平时并不会引起注意,可当周围真正安静下来的时候,它们反而会变得非常清楚。

回去以后,我重新打开电脑。

桌面上还有几个没有处理完的文件。我看了一遍,决定先把最麻烦的那个解决掉。

刚开始的时候确实有点困难。

试了第一种方法,没有成功。

换了第二种方法,还是不太对。

我停下来想了一会儿,又重新检查了一遍前面的步骤。

后来才发现,问题其实出在一个很小的地方。

改完以后,再运行一次。

这次成功了。

那一瞬间确实会觉得很舒服。

并不是因为解决了多大的问题,而是因为一个困扰了自己一段时间的事情,终于有了明确的答案。

很多事情其实都是这样。

没找到原因之前,会觉得特别复杂;真正找到问题以后,又会觉得:“原来就是这里。”

所以遇到问题的时候,我现在越来越愿意先把事情弄清楚。

哪里正常,哪里不正常;刚才做过什么;改变了什么;问题从什么时候开始出现。

一点一点往前找,通常比不停地重新尝试有效得多。

傍晚的时候,天慢慢暗下来。

房间里的光线也发生了变化。我把灯打开,坐回原来的位置。

一天到了这个时候,人的状态和早上已经不太一样。

早晨更容易想着:“今天我要完成什么?”

到了晚上,更多时候会想:“今天到底做了些什么?”

有些事情完成了,有些没有。

以前我会比较在意那些没有完成的事情。现在反而觉得,只要真正解决了几个重要问题,这一天就不算浪费。

毕竟时间不是一张必须全部填满的表格。

有时候快一点,有时候慢一点,都很正常。

重要的是,当自己决定做一件事情的时候,能够真正把注意力放进去。

晚上吃过饭以后,我把桌面简单收拾了一下。

有些东西放回原来的位置,有些文件重新整理,有些暂时用不到的东西就先收起来。

一个干净一点的桌面,会让我觉得脑子也清楚一点。

当然,这只是我自己的习惯。

有人喜欢桌面上什么都没有,有人喜欢把常用的东西全部放在手边。其实没有哪一种一定更好,只要自己用起来舒服就行。

我一直觉得,很多事情没有所谓唯一正确的方法。

别人觉得好的方法,不一定适合自己。

同样,一个现在很好用的方法,过一段时间以后,也可能需要改变。

人的习惯会变,环境会变,需要解决的问题也会变。

所以比找到一个完美的方法更重要的,是知道什么时候应该继续,什么时候应该调整。

今天差不多也是这样。

没有发生什么特别大的事情,但一天还是慢慢过去了。

现在回头想想,早上的阳光,中午的一顿饭,下午走过的那条路,还有刚刚解决掉的那个问题,好像都很普通。

可真正的生活,大概就是由这些普通的事情组成的。

不一定每天都有值得记住的大事,也不一定每天都必须发生改变。

有时候能够安安静静地完成自己的事情,和喜欢的人说几句话,吃一顿舒服的饭,晚上回来的时候觉得今天还不错,就已经很好。

明天会发生什么,现在还不知道。

也许计划会改变,也许会突然出现新的事情,也许一切和平时没有什么不同。

没关系。

等明天真正到来的时候,再去处理明天的问题。

今天,就先到这里。

🌱 第二组|日常对话与自然语气

早上刚坐下来,手机就响了。

“喂,你好。”

“你好,现在说话方便吗?”

“方便,你说吧。”

“昨天发给你的东西看了吗?”

“看了一部分,还没有全部看完。”

“感觉怎么样?”

“整体没什么问题,不过有几个地方我还想再确认一下。”

“哪里需要调整?”

“别着急,我整理好以后一起发给你。”

“行,那我等你消息。”

“好的,没问题。”

挂掉电话以后,我突然想起来,还有一件事情忘了问。

算了,等一会儿再说吧。

没过多久,对方又发来一条消息。

“对了,还有个问题。”

我看到以后笑了一下。

看来我们想到一起去了。

我回复:“正好,我刚才也想问你一件事情。”

有些时候,沟通就是这样。

电话已经挂了,才突然想起最重要的那句话没有说。


中午的时候,有人问我:

“你吃饭了吗?”

“还没有。”

“都这个时间了,怎么还没吃?”

“刚才有点事情,忙完就忘了。”

“那你准备吃什么?”

“不知道,还没想好。”

“要不要一起出去吃?”

“去哪儿?”

“附近随便找一家。”

“现在吗?”

“对啊,不然还等到晚上?”

我看了一眼时间。

“行吧,等我五分钟。”

“五分钟?你确定?”

“确定,很快。”

结果十分钟以后,我还没有出门。

对方问:“你不是说五分钟吗?”

我说:“马上,真的马上。”

“你每次说马上,我都不知道到底要等多久。”

“这次是真的。”

“行,我再相信你一次。”

这种对话,在生活里其实很常见。

有时候我们说“五分钟”,并不一定真的代表三百秒。

“马上”“等一下”“快了”,这些词在不同情况下,表达的时间可能完全不一样。


走到楼下,我突然发现外面比想象中热。

“今天怎么这么热?”

旁边的人说:“刚才不是还好吗?”

“刚才在屋里,没感觉。”

“要不我们开车?”

“这么近还开车?”

“那你刚才还说热。”

“热是热,但也没必要开车。”

“所以到底走还是开?”

“走吧。”

“确定?”

“确定。”

走了不到两分钟。

“要不……还是开车吧。”

“你看,我就知道。”

有时候改变主意并不需要多长时间。

尤其是在天气很热的时候。


吃饭的时候,服务员拿着菜单过来。

“您好,请问现在点餐吗?”

“可以。”

“有什么忌口吗?”

“没有特别忌口的,不过不要太辣。”

“微辣可以吗?”

“可以,稍微有一点就行。”

“这个需要吗?”

“这个是什么?”

“这是今天刚到的,比较新鲜。”

“那来一份吧。”

“还需要别的吗?”

我看了一遍菜单。

“这个是不是有点多了?”

“如果两个人吃的话,差不多。”

“那先这些,不够再加。”

“好的。”

过了一会儿,菜上来了。

我尝了一口。

“这个味道不错。”

“是吧?我就说可以。”

“不过好像有点辣。”

“这也叫辣?”

“对你来说当然不辣。”

“要不要给你拿点水?”

“不用,还能接受。”

吃东西这件事情很有意思。

同样一道菜,有人觉得咸,有人觉得淡;有人觉得刚刚好,还有人觉得完全吃不下。

很多感受,本来就没有统一标准。


下午有人给我发了一张照片。

我看了一会儿,问:

“这是哪里?”

“你猜。”

“我怎么猜?”

“你肯定去过。”

“我去过的地方多了。”

“再仔细看看。”

我把照片放大。

“等等,这个地方……我好像真的见过。”

“想起来了吗?”

“是不是上次我们去的那个地方?”

“哪个地方?”

“就是山下面有一条路,旁边还有一排树的那个。”

“对,就是那里。”

“变化这么大?”

“我刚看到的时候也吓了一跳。”

“什么时候拍的?”

“今天上午。”

“真的?”

“当然是真的,我骗你干什么?”

有时候一张照片就能把很久以前的记忆突然拉回来。

原本已经忘记的事情,因为一个熟悉的画面,又会一点一点想起来。


傍晚的时候,我准备把今天剩下的事情处理完。

刚坐下,就发现一个文件找不到了。

“奇怪,刚才明明还在这里。”

我把桌面找了一遍。

没有。

下载文件夹看了一遍。

还是没有。

“不会被我删了吧?”

我想了想。

“不对,我应该没有删。”

于是重新打开最近使用的文件。

还是没找到。

这时候我开始有点怀疑自己。

“我到底保存了吗?”

再想一遍。

应该保存了。

可是保存到哪里了?

我打开另外一个文件夹。

没有。

再打开一个。

还是没有。

正准备重新做的时候,我突然看到桌面的右下角。

文件就在那里。

我愣了一下。

“原来在这儿。”

找了半天,结果东西一直就在眼前。

这种事情发生的时候,往往让人又好气又好笑。


晚上接到一个电话。

“喂,到家了吗?”

“到了,刚回来。”

“今天怎么样?”

“还行,就是有点累。”

“事情处理完了吗?”

“大部分处理完了,还有一点明天再弄。”

“那就别弄了,早点休息。”

“我也是这么想的。”

“你每次都这么说。”

“什么意思?”

“嘴上说早点休息,最后还是很晚才睡。”

“今天不会。”

“真的?”

“真的。”

“几点睡?”

我停了一下。

“十一点半以前。”

“你确定?”

“……尽量。”

“看吧,我就知道。”

“十一点半确实有点早。”

“那你刚才还说确定?”

“人总要有个目标嘛。”

“行,那我明天问你。”

“别问了。”

“为什么?”

“因为我突然觉得这个目标可能有点难。”

说完,两个人都笑了。


生活里的很多对话,并没有什么重要内容。

“吃了吗?”

“去哪儿?”

“什么时候回来?”

“这个怎么样?”

“你确定吗?”

“真的?”

“为什么?”

“然后呢?”

“后来怎么样了?”

这些很短的问题,反而是我们每天说得最多的话。

有时候一句“知道了”,可以表示真的明白了。

也可以表示:

“行了,别说了,我已经知道了。”

一句“可以”,可能是非常肯定的:

“可以,就这么定。”

也可能只是勉强接受:

“嗯……也可以吧。”

同样是“没事”,语气不同,意思也完全不一样。

有人问:

“刚才没弄疼你吧?”

你回答:“没事。”

这是真的没关系。

可如果有人迟到了一个小时,然后问:

“你没生气吧?”

你停一下,再回答:

“没事。”

那可能就真的有事了。


再换几个不同的情况。

“准备好了吗?”

“准备好了,开始吧。”

“听清楚了吗?”

“听清楚了。”

“需要再说一遍吗?”

“不用了,我明白。”

“这个确定没有问题?”

“目前看没有问题。”

“什么时候能完成?”

“如果顺利的话,今天晚上。”

“如果不顺利呢?”

“那就明天。”

“有没有更快的方法?”

“有,但不一定更稳。”

“你建议哪个?”

“我建议先用稳妥的方法。”

“为什么?”

“因为这件事情没必要冒险。”

“好,就按你说的办。”


现在换一种情况。

“等一下。”

“怎么了?”

“好像不太对。”

“哪里不对?”

“我也说不上来,让我再看一下。”

“是不是这里?”

“不对,不是这个。”

“那会不会是前面的问题?”

“有可能。”

“要不要重新来一次?”

“先别动。”

“为什么?”

“我想先把原因找出来。”

“找到了吗?”

“等等……找到了。”

“什么问题?”

“很简单,一个地方设置错了。”

“就这个?”

“对,就这个。”

“折腾这么久?”

“所以说,问题越小,有时候越难发现。”


最后再读一组非常短的自然表达。

好的。

可以。

没问题。

知道了。

明白。

等一下。

稍等。

马上。

别着急。

慢一点。

再来一次。

先别动。

让我看看。

我想一下。

应该可以。

不一定。

有可能。

我不知道。

你确定吗?

真的吗?

为什么?

什么时候?

在哪里?

然后呢?

还有吗?

就这些?

这么快?

这么多?

不会吧?

原来如此。

我明白了。

差不多。

还可以。

挺好的。

非常好。

太好了!

终于好了!

这就对了。

不对。

还是不对。

有点奇怪。

怎么回事?

别担心。

没关系。

没什么。

不用了,谢谢。

麻烦你了。

辛苦了。

回头再说。

明天见。

晚点联系。

好的,就这样。


最后用最自然的状态读下面几句话:

今天的事情基本处理完了。

虽然中间出现了一点小问题,不过最后还是解决了。

有些事情第一次做的时候会觉得很复杂,熟悉以后就会简单很多。

遇到问题不用急着下结论,先看看发生了什么,再决定下一步怎么办。

如果今天没有完成,那就明天继续。

只要方向没有错,慢一点也没有关系。

好了,今天先到这里。

第二组录音结束。

🌱 第三组|数字、时间、日期与复杂中文表达

今天早上醒来的时候,我看了一眼时间。

七点二十三分。

本来打算七点起床,结果还是多睡了二十多分钟。

我想了一下,时间应该还来得及。

洗漱大概需要十五分钟,吃早饭十分钟,收拾东西再用五分钟。如果八点以前能够出门,基本不会耽误后面的安排。

结果真正出门的时候,已经八点零六分了。

有时候计划得很准确,真正做起来却完全是另外一回事。


走到楼下,我看了一眼手机。

今天是二〇二六年九月二日,星期三。

九月份刚刚开始,今年已经过去了大半。

仔细想想,一年其实没有想象中那么长。

一月份的时候还觉得新的一年刚刚开始,到了三月份,天气慢慢变暖;五月、六月过去以后,很快就到了七月和八月。

再往后就是九月、十月、十一月和十二月。

一年十二个月,三百六十五天。

如果遇到闰年,就是三百六十六天。

一天二十四小时,一小时六十分钟,一分钟六十秒。

这些数字平时都很熟悉,但真正认真去想的时候,会发现时间就是这样一点一点过去的。


上午九点半,我准备去买点东西。

到了商店以后,我先拿了一瓶水。

价格是三元五角。

又拿了一盒牛奶,十二元八角。

旁边还有一袋面包,标价九元九角。

我想了想,又拿了两袋。

结账的时候,店员说:

“一共三十六元一角。”

我问:

“可以手机付款吗?”

“可以。”

付款以后,我看了一眼余额,没有问题。

走出商店的时候,我突然想到,刚才是不是忘了买纸巾?

想了一下。

算了,下次再买。


中午吃饭的时候,菜单上有一道菜,价格四十八元。

另外一道三十二元。

米饭每份三元。

饮料八元一瓶。

如果两个人吃饭,点两个菜、两份米饭,再加两瓶饮料,总价大概是一百零二元。

如果再加一道二十六元的菜,就是一百二十八元。

当然,真正结账的时候,还要看有没有优惠。

有时候满一百减十元,有时候可以打九折,也有时候第二件半价。

九折,就是原价的一百分之九十。

八五折,就是原价的一百分之八十五。

如果一件商品原价二百元,打九折以后是一百八十元。

如果原价八百元,打八折以后就是六百四十元。

这些计算并不复杂,但买东西的时候,我们经常会遇到。


下午,我准备开车去一个地方。

导航显示,全程十二点八公里。

预计需要二十七分钟。

其中前面三点五公里比较拥堵,大约需要十二分钟。

后面的道路比较顺畅。

导航提醒我:

“前方五百米右转。”

继续往前。

“前方二百米进入左侧车道。”

到了路口以后,我看了一眼路牌。

左边是人民路,右边是建设路。

我要去的地方在建设路北侧,大概再往前一公里。

经过第二个红绿灯以后右转,再走三百米,就能看到入口。

停车场在建筑物的地下二层。

入口限高两米。

我的车没有问题,可以正常进入。


停好车以后,我看了一眼车位。

负二层,三排,一百二十六号。

我在手机里简单记了一下:

地下二层,三排,一二六。

因为有时候进去的时候觉得自己肯定能记住,几个小时以后出来,就完全不知道车停在哪里了。

尤其是比较大的停车场。

A区、B区、C区,再加上一层、二层、三层,如果没有记下来,找车确实很麻烦。

所以现在我一般都会顺手拍张照片。

这样最简单。


到了楼上,对方问我:

“你几点到的?”

我说:

“大概两点四十分。”

“路上堵吗?”

“前面有一点,后面还好。”

“开了多长时间?”

“差不多半个小时。”

“你从家里几点出来的?”

“两点十分左右。”

“那还挺快。”

“今天路上车不算多。”

我们约的时间原本是下午三点。

我提前了大约二十分钟到。

如果是比较重要的事情,我一般不太喜欢踩着时间到。

提前十分钟或者十五分钟,会更从容一些。


处理事情的时候,对方给了我一份数据。

第一个数字是百分之六十二点五。

第二个是百分之七十八。

第三个是百分之八十三点六。

第四个接近百分之九十。

我看了一下,说:

“第二个和第三个差了五点六个百分点。”

对方说:

“对,最近提高得比较明显。”

如果从百分之六十提高到百分之八十,看起来只增加了二十个百分点,但实际变化已经很大。

数据有时候很直观。

不过单独看一个数字,也不一定能说明全部问题。

最好还是把前后的情况放在一起比较。


再看另外一组数字。

一百二十八。

二百五十六。

五百一十二。

一千零二十四。

两千零四十八。

四千零九十六。

这些数字越来越大。

再换一些不规则的数字。

十七。

四十三。

六十八。

九十五。

一百零七。

三百零六。

五百八十九。

一千二百零三。

三千零八十五。

一万零六十。

三万五千二百八十一。

十二万零六百四十。

一百零八万三千二百五十六。

读比较大的数字时,不用故意放慢,按照平时说话的速度就可以。


下面再说几个小数。

零点五。

一点二。

三点一四。

十二点五。

二十八点六。

一百零三点八。

零点零五。

零点零八。

一点零六。

二十点零三。

一百二十八点五七。

同一个数字放在不同场景里,意思可能完全不同。

三点五,可以表示三点五元。

也可以表示三点五公里。

还可以表示三点五公斤。

如果说现在是三点五分,那又是另外一种表达。

所以真正说话的时候,数字通常都会和前后的内容连在一起。


我买了一袋大米,重量是五公斤。

一瓶饮料五百毫升。

一盒牛奶二百五十毫升。

房间面积大约九十平方米。

桌子长度一米二。

门的高度大约两米。

今天最高温度三十二摄氏度。

最低温度二十四摄氏度。

车速六十公里每小时。

前方距离目的地还有八点三公里。

手机电量剩余百分之四十七。

文件大小大约二百八十兆。

下载已经完成百分之七十五。

剩余时间大约六分钟。

这些都是日常生活里经常会出现的数字表达。


再说说年龄和年份。

一个孩子今年七岁,明年就是八岁。

一个人一九九〇年出生,到二〇二六年是三十六岁左右。

当然,具体年龄还要看生日有没有过。

一九八〇年到一九八九年出生的人,我们平时经常称为八零后。

一九九〇年到一九九九年出生的人,通常叫九零后。

进入二十一世纪以后,二〇〇〇年、二〇〇一年、二〇〇二年,这些年份听起来离现在好像也没有那么远了。

时间往往就是这样。

当时觉得很久,回头一看,已经过去很多年。


下面读几个日期。

一月一日。

二月十四日。

三月十二日。

五月一日。

六月一日。

七月一日。

八月十五日。

九月十日。

十月一日。

十一月十一日。

十二月三十一日。

二〇二四年五月二十八日。

二〇二五年十二月十六日。

二〇二六年九月二日。

二〇二七年一月十八日。

日期也可以换一种自然说法。

五月二十八号。

九月二号。

十二月十六号。

下个月十五号。

这个星期五。

下个星期三。

明天下午。

后天上午。

三天以后。

两个星期以后。

半年以后。

明年这个时候。


下面是时间。

早上六点。

上午八点半。

上午十一点二十分。

中午十二点整。

下午一点十五分。

下午三点四十五分。

傍晚六点十分。

晚上八点半。

晚上十点五十五分。

凌晨零点。

凌晨一点零五分。

凌晨三点二十分。

还有一些更自然的说法。

六点左右。

八点多。

差十分九点。

十二点刚过。

一点半左右。

三点不到。

五点多一点。

七点半以前。

九点以后。

大概十点钟。

十一点左右应该可以结束。


有时候时间不用说得特别准确。

别人问:

“你什么时候回来?”

我可能会回答:

“七八点吧。”

别人问:

“还要多久?”

我会说:

“十几分钟。”

如果对方继续问:

“到底十分钟还是二十分钟?”

我可能会回答:

“差不多十五分钟,你别着急。”

这才是生活里更常见的数字表达。


下面换成数量。

一个人。

两个人。

三个人。

十个人。

二十多人。

一百多人。

几百个人。

一千多人。

一万多人。

一辆车。

两辆车。

十几辆车。

几十辆车。

一百多辆车。

一本书。

两本书。

十二本书。

三十多本书。

一百零五本书。

一杯水。

半杯水。

两杯水。

三瓶水。

六盒牛奶。

八个苹果。

十五个橘子。

二十八张照片。

一百二十六个文件。


有些数量并不需要特别精确。

比如:

“大概有二十个人。”

“差不多三十公里。”

“估计还要一个小时。”

“可能需要两三天。”

“至少要一个星期。”

“最多半个月。”

“差不多一半。”

“只有三分之一。”

“大约四分之三。”

“超过百分之八十。”

“不到百分之十。”

这些表达,在真正说话的时候比精确数字使用得更多。


晚上回家的时候,我看了一眼今天走的步数。

八千六百三十二步。

距离大约六点三公里。

手机显示今天活动时间一小时二十八分钟。

我想了一下,今天好像确实走了不少路。

不过这些数字只是一个记录。

八千步不代表今天一定比七千步更好。

有时候走得少一点,是因为一直在认真做一件事情。

有时候走得多,只是因为出去办了很多事情。

数字可以帮助我们了解情况,但没有必要让所有事情都变成数字。


最后再读一组比较完整的句子。

会议原计划上午九点开始,后来推迟到了九点二十分。

从这里到目的地大约十八公里,正常情况下需要三十五分钟。

这个房间大约二十五平方米,可以坐十二到十五个人。

今天一共收到二十八条消息,其中十六条已经回复,还有十二条没有处理。

这份文件一共有一百二十页,我已经看到了第八十六页。

整个任务大概完成了百分之七十二,剩下的部分预计明天下午完成。

第一种方案需要三天,第二种方案需要五天,第三种方案虽然只需要两天,但风险相对更高。

如果预算从五千元增加到八千元,可以选择的范围会大很多。

这个东西原价一千二百九十九元,现在优惠以后是九百九十九元。

从上午八点四十分开始,到下午四点二十分结束,中间一共用了七个小时四十分钟。


数字本身并不复杂。

真正复杂的是,我们每天都会在不同的场景里使用它们。

时间、价格、距离、重量、数量、日期、年龄、温度、比例,每一种表达都有自己的习惯。

所以这一组并不是为了把数字念得特别标准。

还是和前面一样,用平时说话的方式,自然地把它说出来就可以。

不用追求速度,也不用刻意放慢。

读错了,停一下。

重新把这一句话读一遍。

然后继续往下。

第三组录音到这里结束。

🌱 第四组|自然情绪与真实表达

🌱 一、平静

今天没有什么特别的安排。

上午把手头的事情处理一下,下午如果有时间,我准备出去走走。

天气看起来还不错,外面有一点风。

其实这样的日子也挺舒服。

不用赶时间,也没有什么事情催着自己。

想做什么,就慢慢做。

累了就休息一会儿。

有些事情今天做不完,明天继续也可以。

生活不可能每天都特别精彩。

大部分时间,其实就是这样平平常常地过去。


🌱 二、轻松

今天事情不算多。

本来以为要忙一整天,结果上午就解决得差不多了。

剩下的事情不着急。

我给自己倒了一杯水,坐下来看看还有没有遗漏。

没有。

挺好。

难得今天这么顺利。

那下午就不用一直坐在这里了。

出去走走,或者找个地方吃点东西。

偶尔给自己放松一下,也没什么不好。


🌱 三、高兴

刚才收到一个消息。

我看了两遍才确定自己没有看错。

真的通过了!

太好了。

这个事情已经等了挺长时间。

之前一直不知道什么时候能有结果。

今天突然看到消息的时候,我第一反应还有点不敢相信。

我又确认了一遍。

没错。

就是这个。

终于等到了。

说实话,这一刻确实挺高兴。

之前花的时间,总算没有白费。


🌱 四、惊喜

等一下。

这是真的吗?

你什么时候准备的?

我完全不知道。

难怪你这两天一直神神秘秘的。

我还以为发生什么事情了。

原来是在准备这个。

真的没有想到。

你居然一直没告诉我。

让我再看看。

这个确实挺不错。

谢谢。

这个惊喜我收到了。


🌱 五、期待

还有三天。

想想还真有点期待。

之前计划了那么久,现在终于快到了。

东西基本都准备好了。

该带的也检查了一遍。

应该没有遗漏什么。

不过每次到这种时候,我还是会忍不住再检查一次。

证件带了吗?

带了。

手机、充电器,都有。

其他东西就算忘了,应该也不是什么大问题。

现在就等出发了。


🌱 六、疑惑

奇怪。

这个地方好像不太对。

刚才明明还是正常的。

怎么突然变成这样了?

我先看看。

不是这里。

这里也没问题。

那问题到底出在哪儿?

等等。

是不是刚才改过一个设置?

让我想一下。

对,我刚才确实动过这里。

难道是这个原因?

先改回来试试。


🌱 七、发现问题后的恍然大悟

哦。

原来是这样。

我知道问题在哪儿了。

怪不得刚才怎么试都不对。

前面的步骤没有问题,最后这个地方弄反了。

改过来就行。

再试一次。

好了。

这次正常了。

折腾这么长时间,原来就是这么一个小问题。

早发现就好了。

不过至少现在解决了。


🌱 八、轻微着急

等一下,先别关。

我这里还没有保存。

等我一下。

好了没有?

再等几秒钟。

马上。

好了,现在可以了。

刚才差一点。

如果直接关掉,前面做的东西可能就没了。

以后这种情况还是先确认一下比较好。

别急着点。

先看看有没有保存成功。


🌱 九、真正着急,但不要喊

电话怎么一直没人接?

再打一次。

还是没人接。

怎么回事?

刚才不是还说马上回来吗?

已经过去半个多小时了。

消息也没有回。

是不是手机没电了?

还是在开车?

算了,再等五分钟。

如果还是没有消息,我再打一次。

应该没什么事。

先等等。


🌱 十、松一口气

回消息了。

原来刚才一直在开车。

我就说怎么电话也不接,消息也不回。

没事就好。

刚才确实有点担心。

现在知道情况就行了。

慢慢回来,不用着急。

路上注意安全。

到了以后告诉我一声。


🌱 十一、无奈

又来了。

这个问题昨天不是刚解决吗?

怎么今天又出现了?

我真的有点想不明白。

每次以为已经彻底弄好了,过一会儿又出问题。

算了。

抱怨也没用。

还是重新检查吧。

先看看是不是和昨天一样。

如果是同一个原因,应该很快就能解决。

如果不是,那就只能继续找。


🌱 十二、轻微不满

我觉得这件事情还是应该提前说一声。

不是说不能改。

可以改。

但至少应该让我知道。

现在东西都已经准备好了,突然告诉我整个方案变了,我这边很多事情都要重新做。

如果昨天告诉我,其实完全来得及。

现在再改,就比较麻烦了。

下次如果有这种情况,麻烦早点告诉我。

这样大家都方便。


🌱 十三、轻微生气

我刚才已经说过了。

这个东西先不要动。

为什么还是改了?

如果不确定,可以先问我。

现在的问题不是改错了多少,而是我们根本不知道刚才到底改了哪些地方。

这样排查起来会非常麻烦。

先别继续操作。

把现在的状态保留下来。

我们一项一项检查。


🌱 十四、控制住情绪后的严肃

这件事情我还是想认真说一下。

问题出现并不可怕。

谁都有可能出错。

但出了问题以后,至少应该把情况说明白。

哪里出了问题,什么时候发现的,之前做过哪些操作,这些都应该讲清楚。

如果什么都不知道,只告诉我一句“不能用了”,那谁也没办法判断原因。

以后遇到类似情况,先把信息留下来。

不要急着乱改。

这是最基本的。


🌱 十五、失望

结果出来了。

还是没有通过。

说完全不失望,那肯定不是真的。

毕竟准备了这么长时间。

之前也觉得这次应该差不多了。

没想到最后还是这个结果。

不过事情已经这样了。

先看看具体是什么原因吧。

如果还有机会修改,那就重新调整。

如果确实没有办法,也只能接受。

至少这次知道问题在哪里。


🌱 十六、低落但克制

今天状态不太好。

也说不上来到底因为什么。

就是觉得有点累。

不太想说话,也不太想做事情。

可能只是这几天没有休息好。

没关系。

今天早点结束。

该放下的事情先放一放。

睡一觉。

明天起来以后再看。

很多事情到了第二天,感觉可能就不一样了。


🌱 十七、安慰别人

没关系。

一次没做好,不代表以后也做不好。

你已经准备很长时间了,这些努力不会因为一次结果就全部没有意义。

先别急着想下一步。

今天就好好休息。

等情绪过去以后,我们再看看究竟哪里需要调整。

能解决的就解决。

解决不了的,再想其他办法。

事情总会有办法的。


🌱 十八、温柔

慢一点。

不用着急。

我在这里等你。

东西忘了也没关系,我们可以回去拿。

时间还来得及。

你先看看是不是还有什么没有带。

想好了我们再走。

不用怕耽误时间。

今天本来也没有那么赶。

准备好了告诉我。


🌱 十九、对孩子说话的自然状态

你先过来。

我看看怎么回事。

哪里弄疼了?

这里吗?

没关系,让我看一下。

好了,没有什么大问题。

下次跑的时候慢一点。

我知道你着急,但着急也不能不看路。

好了,不说你了。

起来试试看。

还能走吗?

可以?

那就好。


🌱 二十、鼓励

再试一次。

刚才已经比第一次好多了。

不要总想着一定要一次成功。

先把最简单的部分做好。

然后一点一点往后加。

你现在已经知道前面哪里有问题了。

下一次肯定会更快。

来。

再试一次。

这次慢一点。

对。

就是这样。


🌱 二十一、肯定

这个做得不错。

比上一次明显好很多。

尤其是前面这一部分,基本没有问题了。

后面还有几个小地方需要调整,但都不是什么大问题。

不用全部重新来。

把这几个地方改一下就可以。

整体方向是对的。

继续按照这个方法做。


🌱 二十二、犹豫

这个……

让我想一下。

现在让我马上决定,我还真有点拿不准。

第一种方法比较稳,但是时间长。

第二种方法快一些,不过风险也更高。

如果只是我自己的事情,我可能会选第二种。

但这次涉及的东西比较多。

还是稳一点吧。

对。

就选第一种。


🌱 二十三、拒绝

不用了。

这个我暂时不需要。

不是东西不好,是现在确实用不上。

如果以后有需要,我会再考虑。

今天就先这样。

谢谢。

不用再介绍了。

我已经了解得差不多了。


🌱 二十四、礼貌请求

麻烦你帮我看一下这个。

不用现在马上处理。

你有时间的时候看就可以。

主要是帮我确认一下这里有没有问题。

如果没有问题,我就继续往下做。

如果需要调整,你直接告诉我哪里需要改。

谢谢。


🌱 二十五、解释

不是这个意思。

我重新说一下。

我想表达的是,我们现在不用急着把所有东西全部做完。

先把最关键的部分跑通。

确定整个流程没有问题以后,再慢慢增加其他功能。

这样即使中间出现问题,也比较容易找到原因。

如果一开始把所有东西都加进去,出了问题以后反而不知道从哪里查。

这样解释应该比较清楚了。


🌱 二十六、不同程度的确认

嗯。

知道了。

好。

好的。

可以。

没问题。

确定。

我确定。

对,就是这个。

没错。

应该是这样。

我觉得可以。

目前看没有问题。

那就这么定。

好,就按照这个方案来。


🌱 二十七、不同程度的否定

不是。

不对。

不是这个。

应该不是。

我觉得不太对。

这里肯定有问题。

先不要这样做。

这个方法可能不行。

我不建议现在改。

暂时不要动。

等确认以后再说。

不行,这个必须重新处理。


🌱 二十八、不同程度的惊讶

嗯?

什么?

真的?

这么快?

已经好了?

不会吧?

你确定?

真的假的?

怎么可能?

等一下,让我看看。

还真是。

我完全没想到。

这确实有点意外。


🌱 二十九、不同程度的高兴

不错。

挺好的。

很好。

真的挺不错。

这次可以。

终于正常了。

这就对了。

太好了。

终于解决了!

真的成功了!

不错,今天总算没有白忙。


🌱 三十、自然收尾

今天录了不少内容。

说到现在,确实有一点累了。

不过整体状态还可以。

前面有比较平静的内容,也有高兴、着急、失望和严肃的时候。

这些情绪在生活里都很正常。

一个人说话也不会永远保持同一种状态。

有时候声音轻一点。

有时候会快一点。

有时候因为高兴,声音自然会提高。

有时候心情不好,说话又会慢下来。

真正自然的声音,本来就应该有这些变化。

现在这一组已经接近结束。

我不用刻意调整自己的声音。

也不用为了录音,把每一个字都说得特别标准。

保持平时说话的状态就可以。

好了。

今天的第四组录音,到这里结束。

🌱 优禾笔记
让每一次学习,都留下一点东西。

扫码访问小程序中的本文

微信小程序二维码
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。