SparkAudio 1.0 换音色做对比、文本和语速先固定住

文章导读
换音色做主观对比时,最容易出问题的不是音色本身,而是对照条件在两次生成之间变了:文本换了、语速调了、导出采样率不一致,听感差异就无法归因。要判断 SparkAudio 1.0 里哪个音色更合适,先把对照文本、语速、音量、采样率写死成一份配置,只让音色这一项变化,再用统一命名把音频文件与记录表对齐,最后盲听打分。整个过程不追求“测出最优音色”,只追求“差异来自音色而不是参数”这个前提站得住。
📋 目录
  1. A 选一段包含数字、英文和长句的对照文本
  2. B 把语速、音高等参数写成同一份对照表
  3. C 每个音色生成同一段文本并统一命名
  4. D 盲听打分并写下判断依据
A A

换音色做主观对比时,最容易出问题的不是音色本身,而是对照条件在两次生成之间变了:文本换了、语速调了、导出采样率不一致,听感差异就无法归因。要判断 SparkAudio 1.0 里哪个音色更合适,先把对照文本、语速、音量、采样率写死成一份配置,只让音色这一项变化,再用统一命名把音频文件与记录表对齐,最后盲听打分。整个过程不追求“测出最优音色”,只追求“差异来自音色而不是参数”这个前提站得住。

做音色对比时,建议把文本、语速、音量、采样率和导出设置固定成一份可复用的配置文件,只把音色作为唯一变量,并用「音色_参数_序号」命名文件和记录表逐行对应。判断是否可信的标准很朴素:同一批音频隔一段时间盲听复听,结论方向基本不变,才算初步可用。如果复听后结论反复横跳,先检查是不是参数或文本在两次生成之间被改过,不要急着下“某个音色更自然”的结论。适用前提是生成环境一致,跨机器或跨版本生成的样本不建议放进同一组对比。

选一段包含数字、英文和长句的对照文本

对照文本的作用是让不同音色在同一批难点上暴露差异,所以不要把文本写成一句顺口的日常话。下面这段可以直接抄进 prompt 文件,也可以按你的业务场景替换主语和名词,但数字、英文缩写、疑问句这三类结构建议保留。

第 3 批样品在 14:20 送到仓库,质检同事确认外箱完好后,
把温度记录仪取出来核对了 2 次,数据与系统里的批次编号能对上吗?
如果对不上,请把 MES 里的导出记录和纸质单据一起拍照发我,
我们按流程补录,再决定要不要重跑这一段。

上面这段约 100 字出头、4 个句子,建议你把实际长度控制在 60 到 150 字之间:太短听不出长句的停顿习惯,太长单次试听就很累,盲听时注意力会掉。写完之后自己数一遍字数和句数,把这两个数字记在记录表表头,后面复听换文本时会用到。

  • 数字出现一次的理由:个位数、时间点、序数的读法规则并不一样,尤其“3 批”和“2 次”这种量词搭配,有的音色读得干脆,有的会拖尾。
  • 英文缩写出现一次的理由:MES 这类词存在“逐字母读”和“按词读”两种处理,放到句中还能顺带听出中英切换处有没有明显的接缝感。
  • 疑问句出现一次的理由:句末语调是主观听感里差异最明显的位置,有的音色在反问处会塌下去,听起来像陈述句,这一处最容易拉开差距。

长句本身也要留一处,因为断句位置是否自然,只有在从句多、修饰语长的句子里才听得出来。短句全部读得通顺,不代表长句也能处理得住。

把语速、音高等参数写成同一份对照表

对照表的作用是让“这次到底比的是什么”一眼可见。字段建议固定为这几列:音色、语速、音量(或增益)、采样率、生成时间。其中语速、音量、采样率、生成时间属于固定项,只记录不改动;变量项只保留音色一列。下表用灰色标出固定项,实际填写时把灰列复制到每一行即可。

SparkAudio 1.0 换音色做对比、文本和语速先固定住
音色语速音量采样率生成时间备注
voiceA1.0默认44100记录到分钟变量列
voiceB1.0默认44100记录到分钟变量列
voiceC1.0默认44100记录到分钟变量列

如果你的接口还暴露音高、情感强度、随机种子这类参数,处理方式一样:全部写进固定列并记下取值,不要因为“想听听不同效果”顺手改一项。种子能固定就固定,很多听感差异其实来自采样随机性,而不是音色。

# 通用配置骨架,字段名以本地实际接口或页面参数为准
text_file:  prompt/cmp_text_01.txt
voice:      voiceA      # 本次唯一变量
speed:      1.0         # 固定
volume:     default     # 固定
sample_rate: 44100      # 固定,导出与试听保持一致
seed:       keep        # 接口支持时固定
output:     out/voiceA/voiceA_speed1.0_01.wav

把这份配置放在 cfg/ 目录下,每换一次音色只改 voice 一行,其余原样复制。生成完一批后,回头核对配置文件的修改记录:如果固定项在两次生成之间被动过,这批样本就要作废重来。

每个音色生成同一段文本并统一命名

文件混在一起是听错样本的主要原因:试听到第三四个时,往往已经记不清哪个文件对应哪个音色了。建议命名规则统一为「音色_参数_序号」,参数段只写真正影响听感的固定项,比如 voiceA_speed1.0_01.wav。序号从 01 开始递增,一个音色生成几条就排到几号,不要用中文、空格或括号。

SparkAudio 1.0 换音色做对比、文本和语速先固定住
tts_compare/
├── prompt/
│   └── cmp_text_01.txt      # 对照文本,只读
├── cfg/
│   └── fixed_params.yaml    # 固定项配置,变量只有 voice
├── out/
│   ├── voiceA/voiceA_speed1.0_01.wav
│   ├── voiceB/voiceB_speed1.0_01.wav
│   └── voiceC/voiceC_speed1.0_01.wav
└── record/
    └── scores.csv

目录上按音色分文件夹,是为了批量试听时能整段播放、不用来回跳;但打分记录要落在一张表里,表的第一列就是完整文件名。生成顺序建议按音色字母序依次跑,跑完一个音色立刻在 scores.csv 里补一行占位,把文件名、音色、生成时间填好,理由列先空着。生成与填表同步进行,是避免“文件有了、记录丢了”的最省事办法。

file,voice,speed,sample_rate,generated_at,clarity,naturalness,pause,reason,recheck
voiceA_speed1.0_01.wav,voiceA,1.0,44100,,4,4,3,,same
voiceB_speed1.0_01.wav,voiceB,1.0,44100,,3,5,4,,same

盲听打分并写下判断依据

打分的目的不是排出一个名次,而是把“我感觉这个更清楚”变成别人能复述的句子。建议每条音频至少看三个维度:清晰度、自然度、断句位置,用 1 到 5 分即可,不需要更细的刻度。清晰度看数字和英文缩写能否一次听清、需不需要回放;自然度看整句的呼吸感和语调起伏;断句位置看长句中间的停顿是不是落在语义边界上,而不是切在词中间。

关键在于每条分数后面必须写理由,哪怕只有半句话。比如「voiceB 在 14:20 这处读得偏慢,前后的停顿比另两个长,所以断句给了 4 分」;又如「voiceC 的 MES 逐字母读,接下一句时衔接有点硬,自然度给 3 分」。理由里尽量写清时间点或词,不要写“整体感觉好一点”,那种描述复听时自己都对不上。

  • 第一轮按文件名顺序正序播放,边听边填分。
  • 第二轮把顺序打乱,隐藏文件名只留序号,复听同一批音频。
  • 两轮之间隔开一段时间,换一副耳机或换一台设备再听,看结论是否漂移。

复听后如果某个音色的分数方向保持一致,可以把结论记为稳定;如果两轮差异较大,先别下判断,回头检查对照文本、语速、音量、采样率是否为同一份配置,以及试听设备音量是否一致。这些前提没有对齐时,分数波动本身说明不了音色好坏。样本量也不必求多,三到五个音色、每个音色一到两条,就足够支撑一次选型判断了。