产品介绍、软件教程和企业培训视频,常常需要一份清楚、稳定、能反复修改的旁白。对个人服务者而言,可交付的工作包括脚本整理、音色试样、术语校音、音频制作和逐句质检,而不是把文字扔进工具后立即收款。

本文以 Azure AI Speech 的标准预置语音为例,完成“为一段产品操作说明制作中文 WAV 旁白”的流程。它是云端服务:本地安装的是调用 SDK,不是在电脑上部署微软语音模型。文中脚本与成品要求均为示例,没有实际客户订单,也不承诺收入。

一、先把需求收窄为可验收的交付

第一次不要接包含多人角色、仿真人声、复杂情绪或实时直播的项目。可以从一段简短操作说明开始,例如“如何导出一份月度报表”。成品包含音频文件、确认过的台词、发音表和交付说明。

  1. 内容权利:需要向委托方确认:文稿与素材是否有权使用;本文练习约定:自写虚构教程。
  2. 语音类型:需要向委托方确认:语言、音色、语速、使用场景;本文练习约定:普通话预置女声。
  3. 成品格式:需要向委托方确认:容器格式、采样率、是否需要分段;本文练习约定:WAV,先检查实际参数。
  4. 修改边界:需要向委托方确认:文案修改和发音修正分别几轮;本文练习约定:先确认短试样,再处理全文。
  5. 文件交付:需要向委托方确认:文件命名、台词版本、渠道;本文练习约定:音频与台词一一对应。

不要只问“要多少字”。最终时长、停顿、数字读法、品牌名和配乐需求,都会改变工作量。先确认脚本,再制作全文,能减少无效的重复调用与人工返工。

AI 配音服务从需求确认、短试样到校音和交付的流程示意

上图为原创服务流程示意,不是软件截图或实际订单记录。

二、开通资源与准备本地环境

  1. 准备可用 Azure 账号,在门户创建 Speech 资源,选择账号支持且适合业务的区域与定价层。不要把免费试用资格当作所有账号永久可得的承诺。
  2. 在资源页面找到密钥与终结点。密钥和终结点必须来自同一个 Speech 资源;不要把其他 AI 服务的密钥混用。
  3. 准备官方 Python SDK 支持的 Python 与系统环境。遇到包不可安装时,先查官方支持矩阵,避免用不受支持的 Python 版本盲目尝试。本例使用独立虚拟环境,在 Windows PowerShell 中操作。
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install azure-cognitiveservices-speech

安装后记录实际依赖版本,方便以后复现:

.\.venv\Scripts\python.exe -m pip freeze > requirements.txt

这里使用虚拟环境内 Python 的完整路径,不依赖激活脚本。创建一个工作目录放置台词、代码和输出文件;不要将客户资料与密钥一起提交到公开仓库。

三、先用最短台词生成 WAV

在当前 PowerShell 会话设置环境变量,把占位内容换成资源页面中的真实值。它们只用于当前终端,结束后不用把密钥写进文章或代码。

$env:SPEECH_KEY = "你的资源密钥"
$env:ENDPOINT = "你的资源终结点"

新建 UTF-8 编码的 script.txt,写入一小段试样:

打开月度报表,选择需要导出的月份。
确认统计范围后,点击导出,并检查文件中的日期与金额。

新建 make_voice.py:

import os
from pathlib import Path
import azure.cognitiveservices.speech as speechsdk

text = Path("script.txt").read_text(encoding="utf-8").strip()
if not text:
    raise SystemExit("台词为空,请先填写 script.txt")

config = speechsdk.SpeechConfig(
    subscription=os.environ["SPEECH_KEY"],
    endpoint=os.environ["ENDPOINT"],
)
config.speech_synthesis_voice_name = "zh-CN-XiaoxiaoNeural"
output = speechsdk.audio.AudioOutputConfig(filename="sample.wav")
synth = speechsdk.SpeechSynthesizer(
    speech_config=config, audio_config=output
)
result = synth.speak_text_async(text).get()
if result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted:
    print("已生成 sample.wav,请逐句试听")
else:
    raise SystemExit("合成未完成;请检查资源配置、权限和服务状态")

在台词和代码所在目录运行:

.\.venv\Scripts\python.exe make_voice.py

官方语音表列有 zh-CN-XiaoxiaoNeural;也可根据场景试听其他受支持的预置声音。某音色在语言列表中存在,不代表每个区域、部署方式或账号都一定可调用,应以当前资源测试与官方区域说明为准。

预期是获得可以播放、内容与台词一致的 sample.wav。上面的代码不是本站已生成音频的凭证;只有实际执行并听完文件,才能给出通过结论。指定子目录输出时,先创建父目录,SDK 不会代你保证目录存在。

四、把“能读”调整成“适合听”

配音修改先改台词,再调声音。书面语中的长句、括号和斜杠,直接朗读往往难懂。例如“于设置/权限中开启”可改为“先打开设置,再进入权限页面”。数字、缩写、品牌名先整理到发音表,避免全篇出现三种读法。

  1. 2026 年:需要确认的读法:按年份逐位读,还是完整数字;检查方式:与视频文案确认。
  2. API:需要确认的读法:字母读音,还是解释为接口;检查方式:按观众背景选择。
  3. 产品专名:需要确认的读法:品牌方认可的发音;检查方式:先单独做一句试样。
  4. 金额与单位:需要确认的读法:小数、币种、百分号是否完整;检查方式:对照原稿人工核验。

需要明确停顿或替代读法时,可以使用 SSML。下面是示例结构,sub alias 用于指定替代朗读文本,break 设置停顿;避免把不支持的情绪标签硬套在所有音色上。

<speak version="1.0"
       xmlns="http://www.w3.org/2001/10/synthesis"
       xml:lang="zh-CN">
  <voice name="zh-CN-XiaoxiaoNeural">
    <sub alias="接口">API</sub>配置完成。
    <break time="400ms"/>
    请先检查日期,再导出报表。
  </voice>
</speak>

保存为 script.ssml,将代码中的 speak_text_async(text) 改为 speak_ssml_async(Path("script.ssml").read_text(encoding="utf-8"))。SSML 文件必须是合法 XML;动态拼接客户文字时要处理 &、< 等字符的转义,不能把原文不加处理地插入 XML。

SSML 控制和模型能力存在差异。先用一小段确认当前声音支持,再推广到全文;若要求夸张表演、角色一致性或独特个人风格,应先做能力边界说明。

五、逐句质检,而不是看生成成功提示

配音交付的文本、发音、声音参数及文件四项验收示意

上图是交付检查示意。至少完成以下四类核验:

  1. 文本核对:一边听一边标记台词,检查漏句、重复、数字、单位以及是否读出不该朗读的符号。自动合成成功不表示文字正确。
  2. 发音核对:重点听产品名、英文缩写和多音字。修改后只替换相关片段,也要听衔接处是否突兀。
  3. 声音核对:检查语速是否适合画面、句间停顿是否自然、开头结尾是否被截断。若还要剪辑或加配乐,先保留未混音的原始 WAV。
  4. 格式核对:不要仅把扩展名改成客户要求的格式。WAV 是容器名称,还需检查采样率、声道和样本位宽;明确要求其他格式时,应使用正确的输出配置或正规的转码流程。

可用下面的本地命令读取示例 WAV 参数,不涉及上传音频:

.\.venv\Scripts\python.exe -c "import wave; w=wave.open('sample.wav'); print(w.getparams()); w.close()"

如客户没有提出技术参数,交付说明中记录实际参数,而不是虚构“广播级”“无损母带”等宣传词。交付目录可包含 旁白_v1.wav、确认台词_v1.txt、发音表_v1.csv 和 交付说明.txt,每次修改同步更新版本,避免音频与文稿错配。

六、成本、服务范围与获客

Azure Speech 的预置神经语音按官方计费口径核算,通常涉及处理字符数量;具体价格、免费额度和适用区域以账号门户与价目表为准。试样、返工和重复合成都要计入成本,不能只计算客户最后收到的那一遍。

制作成本还包括脚本清理、术语确认、人工试听、剪辑、文件整理和沟通时间。报价可以按“确认字数或时长+服务范围+修改轮次”拆开说明,但没有通用保赚价格。先用自己的非敏感稿件计时完成一套流程,再判断是否值得接单。

展示服务时可提供“原稿—修改后的口播稿—短音频—质检表”的样例。适合询问需求的人群包括做产品教程的团队、需要维护内部培训资料的小企业和独立内容作者。是否有订单取决于需求和交付质量,本文不虚构客户来源或转化率。

使用标准音色也要遵守当前 Azure 服务条款和用途规则;客户提供的文案、品牌素材及成品用途同样需要确认。声音克隆、模仿真人和定制语音不属于本篇服务范围,不能因为工具存在就承诺可以任意复制他人声音。

七、常见问题

  1. 提示缺少环境变量:确认设置变量与运行程序在同一个 PowerShell 会话。不要把密钥直接粘贴到报错截图中求助。
  2. 认证失败或无法合成:核对资源密钥与终结点是否匹配、资源状态和网络;音色问题先查当前支持列表,再换一个已确认可用的标准声音排查。
  3. 输出文件不存在或无法播放:检查当前工作目录、写权限和父目录,以及程序是否进入完成分支。失败时可能留下不完整文件,不要直接交付。
  4. SSML 报错:先用最小 speak/voice 结构测试,再逐项加入标签;检查 XML 转义和音色对标签的支持。大批量制作前,应让小试样通过完整验收。

官方资料