赛博马工作室
Google

定制《更夫》报时语音

2012 年 10 月 31 日 修订

一、如何 定制 报时语音
(1) 概要

语音系统 由 两部份 组成: 若干 语音文件 和 一份 决定各种语音播报顺序的 格式文件。

  1. 语音文件: 就是 组成 报时语句的 各种语音片段,可以 是 mp3、 wav 或 ogg 格式。 语音文件 又 可 分为 两大类:

    • 数字语音——即 每种 数字的 发音片段,用于 组合成 各种 时间数字的 读数。 数字语音的 文件名 必须 按 以下 要求 命名:
      语种符号 + 数字
      注:“语种符号”不必 和 实际的 语种 相符, 但 必须 和 “公共选项”中 所选的 语种 一致;“数字”必须 是 两位数, 小于 10 的数, 十位数 以 零 填充。 比如 : 利用“公共选项”中 不可能 用到的 捷克语种 定制 一套 上海方言的 语音播报系统, 则 数字 8 的 mp3 语音文件名 必须为 cz08.mp3。 八个 语种的 代表符号 分别是:
      捷克语——cz
      德语——G
      英语——E
      西班牙语——S
      法语——F
      意大利语——I
      俄语——R
      汉语——C

    • 非 数字语音——数字 以外的 其它语音片段,文件名 可以 自由命名。

  2. 格式文件:一份 用于 决定 各种播报顺序的 文件, 文件类型 是 文本文件, 扩展名 为 “.brf”。 书写规则 详见2.。

  3. 同一套 语音系统, 语音文件 和 格式文件 必须 放在 同一目录 中。 这个目录 可以 是 SD卡上的 任意目录。 语音文件 可以 部份或全部 缺省, 缺省 情况下 将 自动调用 应用内部 相应的 语音元素。

(2) 书写 格式文件 规则
  1. 格式文件 必须 是 纯文本文件, 扩展名 是 .brf。

  2. 整个文件 从上到下 由 若干 播报序列 组成。

  3. 每一个 播报序列 由 两行组成: 第一行 是 按 播报顺序 书写的 语音序列; 第二行 是 该 播报序列 必须满足的 条件。

  4. 语音序列 书写规则: 按照 拟定的 播报先后顺序, 从左至右 排列 语音元素。 元素之间 以 逗号“,”分割, 不能 有 空格。 语音元素 分为 两大类:

    • 数字语音:

      • 用 大写字母 H 代表(24小时时间格式)小时 数字;用 大写字母 M 代表 分钟 数字。

      • 数字语音 也可以 用 简单 计算式 表示。 比如 将 24小时 时间格式 转化为 12小时 时间格式, 用 如下 公式 表示:
        ……,( H % 12 ),……
        又 比如 将 大于 10 的 分钟数字 分离 为 x0 和 y 两个 语音元素, 可以 表示为:
        ……,( M / 10 ),( M % 10 ),……
        公式 书写规则

        • 公式 必须 在 园括号 中, 且 每个符号之间 必须 有 一个 空格符号:(空格H空格%空格12空格);

        • 可用的 运算符:+、-、*(乘)、/(除)、%(余);

        • 允许 简单 四则运算公式。

    • 非 数字语音:以 感叹号“!”为 前导, 直接 引用 语音文件名, 分 两种 表示方法:

      • 如果 所引 语音文件 和 格式文件 存放在 同一目录, 则 可表示为:!文件名。 比如:afternoon.mp3 是“下午”的 语音文件, 与 格式文件 存放在 同一目录下, 则 可 在 语音序列 中 表示为:
        ……,!afternoon,……
        扩展名 可以 省略。

      • 引用 原有的 内建于 应用中的 语音片段,则 按照 原来的 符号 书写。内建 语音片段 符号 参见 后面的 内建格式文件 下载。

  5. 语音调用 规则: 对于 每一个 语音元素, 应用程序 首先 在 格式文件 所在的 目录中 匹配 文件名, 如果 有 相同的 文件名, 则 调用 该目录下的 这个语音文件 播放;否则 转到 应用内部 继续匹配。 如果 能够 在 应用内部 找到 同名资源, 则 调用 这个内部资源 进行播放; 否则 匹配失败, 该 语音元素 不能 发声。 利用 这条规则, 我们 可以 用 外部语音文件 部分 或 全部 替换 应用内部的 语音片段。

  6. 条件行的 书写规则:

    • 条件行 用于 描述 符合 特定时间的 条件, 也就是 分钟数 和 小时数 与 特定 常数之间的 比较。 分钟数 用 大写字母 M 表示; 小时数 用 大写字母 H 表示。

    • 可用 比较符号 为:<(小于)、 =(等于)、 >(大于);

    • 可用 逻辑符号 为:|(或)、 &(与);

    • 可以 用 中括号“[”、“]”表示 复合条件;

    • 可以 用 圆括号“(”、“)”书写 分钟、小时的 代数运算公式。(参见

    • 条件行中的 所有符号(M、H、常数、比较符、逻辑符、中括号、圆括号)之间 必须 用 一个空格符间隔。

  7. 条件匹配 规则:

    整个 格式文件 从上到下 逐条 匹配 每一个 条件行, 一旦 遇到 满足条件的 行, 即 终止匹配, 并 将 该 条件行上 一条的 语音序列 作为 当时的 播报序列 格式。 据此, 格式文件的 书写原则 是:

    特殊的 条件 靠前,一般的 条件 靠后。

  8. 整个 文件 以 井号“#” 表示 结束, 同时 这个井号“#” 也是 最后 一组 语音序列的 条件行,因为 最后 一组 应该是 无条件 匹配的。

(3) 下载: 内建 中文语音报时 格式文件
Copyright © 2004~2012 Cyberhorse Workshop. All Rights Reserved