支持的音频格式
IBM Watson® Speech to Text 服务可从多种格式的音频中抽取语音。 本专题后面的章节可以帮助您充分利用服务。 如果您不熟悉音频处理,请从音频 术语和特性 开始,了解有关音频概念的信息。
音频格式
表 1 提供了服务支持的音频格式的摘要。
- 音频格式通过其
Content-Type
规范来识别每种支持的格式。 - 压缩表示格式支持压缩。 通过使用支持压缩的格式,可以减小音频的大小,以最大限度提高可以传递给服务的数据量。 但您需要考虑压缩可能对音频质量造成的影响。 有关更多信息,请参阅数据限制和压缩。
- 内容类型规范指示是否必须使用
Content-Type
头或等效参数来指定发送给服务的音频的格式(MIME 类型)。 有关更多信息,请参阅指定音频格式。
最后几列标识每种格式的其他必需参数和可选参数。 以下各部分提供了有关这些参数的更多信息。
音频格式 | 压缩 | 内容类型规范 | 必需参数 | 可选参数 |
---|---|---|---|---|
audio/alaw | 有损 | 必需 | rate={integer} |
无 |
audio/basic | 有损 | 必需 | 无 | 无 |
audio/flac | 无损 | 可选 | 无 | 无 |
audio/g729 | 有损 | 可选 | 无 | 无 |
audio/l16 | 无 | 必需 | rate={integer} |
channels={integer} endianness=big-endian endianness=little-endian |
audio/mp3 音频/mpeg |
有损 | 可选 | 无 | 无 |
audio/mulaw | 有损 | 必需 | rate={integer} |
无 |
audio/ogg | 有损 | 可选 | 无 | codecs=opus codecs=vorbis |
audio/wav | 无、无损或有损 | 可选 | 无 | 无 |
audio/webm | 有损 | 可选 | 无 | codecs=opus codecs=vorbis |
audio/alaw 格式
A-law (audio/alaw
) 是一种单声道有损音频格式。 它使用的算法类似于 audio/basic
和 audio/mulaw
格式应用的 u-law 算法,但 A-law 算法会生成不同的信号特征。 使用此格式时,服务需要有关格式规范的额外参数。
参数 | 描述 |
---|---|
rate 需要 |
一个整数,用于指定捕获音频的采样率。 例如,为采集频率为 8kHz:的音频数据指定以下参数:
|
audio/basic 格式
基本音频 (audio/basic
) 是一种单声道有损音频格式,使用采样率为 8 千赫兹的 8 位 u-law(或 mu-law)数据进行编码。 此格式提供了用于指示音频媒体类型的最基础格式。 服务仅支持将 audio/basic
格式的文件用于窄带模型。
更多信息,请参见互联网工程任务组 (IETF) 的“征求意见(RFC)2046和”iana.org/assignments/media-types/audio/basic。
audio/flac 格式
自由无损音频编码解码器 (FLAC) (audio/flac
) 是一种无损音频格式。
audio/g729 格式
G.729 (audio/g729
) 是一种有损音频格式,支持以 8 千赫兹编码的数据。 服务仅支持 G.729 附录 D,不支持附录 J。服务仅支持将 audio/g729
格式的文件用于窄带模型。
audio/l16 格式
线性 16 位脉冲编码调制 (PCM) (audio/l16
) 是一种未压缩的音频格式。 使用此格式可传递原始 PCM 文件。 线性 PCM 音频还可以在容器波形音频文件格式 (WAV) 文件内传送。 使用 audio/l16
格式时,服务会接受有关格式规范的额外必需参数和可选参数。
参数 | 描述 |
---|---|
rate 需要 |
一个整数,用于指定捕获音频的采样率。 例如,为采集频率为 16kHz:的音频数据指定以下参数:
|
channels 可选 |
缺省情况下,服务会将音频视为具有单个声道。 如果音频有多个声道,必须指定一个整数来标识声道数。 例如,为以 16 分贝采集的双声道音频数据指定以下参数 'kHz:'
' 服务最多可接受 16 个声道。 在代码转换期间,会将音频缩混为一个声道。 |
endianness 可选 |
缺省情况下,服务会自动检测传入音频的字节序。 但是,服务的自动检测功能有时会失败,并断开 audio/l16 格式短音频的连接。 指定 endianness 可禁用自动检测。 请指定 big-endian 或 little-endian 。 例如,为以 16kHz小端格式采集的音频数据指定以下参数
Request for Comment (RFC) 2045第5.1节为 |
欲了解更多信息,请参阅 IETF Request for Comment(RFC)2586。
audio/mp3 和 audio/mpeg 格式
MP3 (audio/mp3
) 或运动图像专家组 (MPEG) (audio/mpeg
) 是一种有损音频格式。 (MP3和 MPEG 指的是同一格式)。
audio/mulaw 格式
Mu-law (audio/mulaw
) 是一种单声道有损音频格式。 数据使用 u-law(或 mu-law)算法进行编码。 audio/basic
格式相当于采样率始终为 8 千赫兹的格式。 使用此格式时,服务需要有关格式规范的额外参数。
参数 | 描述 |
---|---|
rate 需要 |
一个整数,用于指定捕获音频的采样率。 例如,为采集频率为 8kHz:的音频数据指定以下参数:
|
audio/ogg 格式
Ogg(audio/ogg
)是一种开放式容器格式,由Xiph.org基金会 xiph.org/ogg)负责维护。 可以使用通过以下有损编码解码器压缩的音频流:
- Opus(
audio/ogg;codecs=opus
)。更多信息,请参见 opus-codec.org。 - Vorbis(
audio/ogg;codecs=vorbis
)。更多信息,请参阅 xiph.org/vorbis。
OGG Opus 是首选的编解码器。 它是 OGG Vorbis 的合理继承者,因为其延迟低、音频质量高、体积小。 互联网工程任务组(IETF)将其标准化为 RFC 6716。
如果您在内容类型中省略了编解码器,服务会自动从输入音频中检测编解码器。
audio/wav 格式
波形音频文件格式 (WAV) (audio/wav
) 是一种容器格式,通常用于未压缩的音频流,但也可以包含压缩音频。 服务支持使用任何编码的 WAV 音频。 服务接受最多有 9 个声道(由于 FFmpeg 限制)的 WAV 音频。
有关通过将 WAV 音频转换为 Opus 编码解码器来减小 WAV 音频大小的更多信息,请参阅使用 Opus 编码解码器转换为 audio/ogg。
audio/webm 格式
网络媒体(WebM)(audio/webm
)是一种开放式容器格式,由WebM项目 webmproject.org)维护。 可以使用通过以下有损编码解码器压缩的音频流:
- Opus(
audio/webm;codecs=opus
)。更多信息,请参见 opus-codec.org。 - Vorbis(
audio/webm;codecs=vorbis
)。更多信息,请参阅 xiph.org/vorbis。
如果省略编码解码器,那么服务会自动在输入音频中检测编码解码器。
有关如何在 Chrome 浏览器中从麦克风捕获音频并将其编码为WebM数据流的JavaScript代码,请参阅 jsbin.com/hedujihuqo/edit?js,console。 该代码不会将捕获到的音频提交给服务。
指定音频格式
您可以使用 "Content-Type
请求标头或类似参数来指定发送到服务的音频格式(MIME 类型)。 可以为任何请求指定音频格式,但这并不总是必要的:
- 对于大多数格式,内容类型是可选的。 可以省略内容类型或指定
application/octet-stream
让服务自动检测格式。 - 对于其他格式,内容类型是必填项。 这些格式不提供服务需要自动检测其格式的信息,例如采样率。 您必须为
audio/alaw
、audio/basic
、audio/l16
和audio/mulaw
格式指定内容类型。
有关需要内容类型规范的格式的更多信息,请参阅 音频格式 中的表 1。 该表的内容类型规范列表示是否必须指定内容类型。
有关使用每个服务接口指定内容类型的示例,请参阅 提出语音识别请求。 该主题中的所有示例都指定了一种内容类型。
使用“curl
命令通过 HTTP 接口发出语音识别请求时,必须使用”Content-Type
标头指定音频格式,或指定“"Content-Type: application/octet-stream"
,或只指定”"Content-Type:"
。 如果完全省略该头,curl
将使用缺省值 application/x-www-form-urlencoded
。
数据限制和压缩
通过同步 HTTP 或WebSocket请求,该服务最多可接受 100 MB 音频数据的转录,通过异步 HTTP 请求,最多可接受 1 GB 音频数据的转录。 在识别连续的长音频流或大型音频文件时,需要考虑并适应这些数据限制。
最大限度地提高语音识别请求所能传递的音频数据量的一种方法是使用可提供 压缩 功能的格式。 压缩有两种基本类型:有损压缩和无损压缩。 您选择的音频格式和压缩算法会直接影响语音识别的准确性。
使用有损压缩的音频格式会大大减小音频流的大小。 但是,如果压缩音频的程度过大,就会降低转录的准确性。 虽然听不到区别,但服务对此类数据丢失的敏感度要高得多。
比较近似的音频大小
考虑使用 16 千赫兹采样率和 16 比特/样本的 2 小时持续语音传输所生成数据流的近似大小:
- 如果数据的编码格式为
audio/wav
,那么 2 小时的流的大小为 230 MB,远远超过服务的 100 MB 限制。 - 如果数据的编码格式为
audio/ogg
,那么 2 小时的流的大小只有 23 MB,远远低于服务的限制。
下表近似估计了可以通过一个同步 HTTP 或 WebSocket 请求发送用于语音识别的不同格式音频的最长持续时间。 持续时间考虑了 100 MB 服务限制。 根据音频的复杂性和实现的压缩率,实际值可能会有所不同。
音频格式 | 音频最长持续时间(近似值) |
---|---|
audio/wav |
55 分钟 |
audio/flac |
1 小时 40 分钟 |
audio/mp3 |
3 小时 20 分钟 |
audio/ogg |
8 小时 40 分钟 |
在比较不同音频格式的测试中,IBM®发现 WAV 和 FLAC 格式的字错误率 (WER) 最好。 这些格式可以作为转录准确性的基准,因为它们可以保持音频的完整性而不会丢失数据。 与基线相比,使用 Opus 编码的 Ogg 格式的 WER 略微降低了 2%。 MP3格式的结果最差,与基线相比,WER 下降了 10%。
audio/ogg;codecs=opus
和 audio/webm;codecs=opus
格式基本等效,而且其大小也几乎相同。 这两种格式在内部使用相同的编码解码器;不同的只是容器格式。
最大限度地提高转录准确性
在选择音频格式和压缩算法时,请考虑以下建议,以最大限度地提高转录准确性:
- 使用未压缩的无损音频格式。 如果音频时长少于 55 分钟(少于 100 MB),请考虑使用
audio/wav
格式。 虽然 WAV 格式只能容纳 55 分钟的音频,但对于大多数转录应用(如客户支持电话)来说,这通常已经足够。 而未经压缩的 WAV 音频可以产生更准确的转录。 - 使用异步 HTTP 接口。 如果您选择使用 WAV 格式,但音频超出了 100 MB 的限制,异步接口允许您发送多达 1 GB 的数据。
- 使用压缩但无损的音频格式。 如果必须压缩音频文件,请使用
audio/flac
格式,该格式采用无损压缩。 无损压缩能减小音频的大小,但能保持音频的质量。 FLAC 格式是最大限度提高转录准确性的理想选择。 - 在万不得已的情况下使用有损压缩。 如果需要更高的压缩率,可使用
audio/ogg
格式和 Opus 编解码器。 虽然 Ogg 格式使用的是有损压缩,但在有损压缩算法中,Ogg 格式与 Opus 编解码器的组合在语音准确性方面的下降幅度最小。
使用压缩程度更高的其他格式可能会影响转录的准确性。 尝试使用该服务,以确定哪种格式最适合您的音频和应用。 有关提高语音识别率的更多方法,请参阅 提高语音识别率的技巧。
音频转换
可以使用各种工具将音频转换为不同的格式。 音频是服务不支持的格式,或者是未压缩或无损格式时,这些工具会非常有用。 在后一种情况下,可以将音频转换为有损格式以减小其大小。
以下免费软件工具可用于将音频从一种格式转换为另一种格式:
- SoundeXchangeSoX)sox.sourceforge.net)。
- FFmpeg ffmpeg.org)。 您还可以使用 FFmpeg 从同时包含音频和视频数据的多媒体文件中分离出音频。 有关更多信息,请参阅转录视频文件中的语音。
- Audacity® audacityteam.org).
- 对于使用 Opus 编解码器的 Ogg 格式,请使用 opus-tools。
这些工具为多种音频格式提供跨平台支持。 此外,还可以使用许多工具来播放音频。 请勿使用这些工具来违反适用的版权法。
转换为使用 Opus 编码解码器的 audio/ogg
opus-tools包括三个命令行实用程序,用于在 Opus 编解码器中处理 Ogg 音频:
- opusenc实用程序使用 Opus 编解码器将 WAV、FLAC 和其他格式的音频编码为 Ogg 格式。 此页面说明了如何压缩音频流。 压缩对于将实时音频传递到服务非常有用。
- opusdec实用程序可将 Opus 编解码器中的音频解码为未压缩的 PCM WAV 文件。
- opusinfo实用程序提供有关 Opus 文件的信息和有效性检查。
许多用户会发送 WAV 文件进行语音识别。 由于服务为同步 HTTP 和 WebSocket 请求设定了 100 MB 数据限制,WAV 格式会减少可以通过单个请求识别的音频量。 使用 opusenc 命令将音频转换为首选的 audio/ogg:codecs=opus
格式后,会大大增加可以通过一个识别请求发送的音频量。
例如,假设未压缩宽带(16 千赫兹)WAV 文件 (input.wav) 使用 16 比特/样本,比特率为 256 千位/秒。 以下命令可将该音频转换为使用 Opus 编码解码器的文件 (output.opus):
opusenc input.wav output.opus
该转换使音频压缩为原来的 1/4,并生成比特率为 64 千位/秒的输出文件。 不过,根据 Opus 建议的设置,您可以放心地将比特率降低到 24 kbps,并仍然保留一个完整的语音音频频段。 此比特率降低将使音频压缩为原来的 1/10。 以下命令使用 --bitrate
选项来生成比特率为 24 千位/秒的输出文件:
opusenc --bitrate 24 input.wav output.opus
opusenc 实用程序的压缩速度很快。 压缩速度约比实际时间快 100 倍。 此命令完成后,会将输出写入控制台,其中提供有关命令运行时间和生成的音频数据的完整详细信息。
转录视频文件中的语音
您无法转录同时包含音频和视频的多媒体文件中的语音。 服务仅接受音频数据用于语音识别。
要转录包含音频和视频的多媒体文件中的语音,必须使音频数据与视频数据相分离。 可以使用 FFmpeg 实用程序从视频源中分离出音频。 更多信息,请访问 ffmpeg.org。
关于改进语音识别的提示
以下提示可以帮助您改进语音识别的质量:
-
音频录制方式对服务的结果会有很大的影响。 语音识别对输入音频质量非常敏感。 为了获得尽可能最高的准确性,请确保输入音频质量尽量高。
- 尽量使用近讲语音型麦克风(例如,头戴式受话器),并根据需要调整麦克风设置。 使用专业麦克风来捕获音频时,服务表现最佳。
- 避免使用系统的内置麦克风。 移动设备和平板电脑上通常安装的麦克风往往不够好。
- 确保说话者靠近麦克风。 说话者离麦克风越远,准确性越低。 例如,如果离麦克风 10 英尺,服务很难生成足够好的结果。
-
使用不大于 16 千赫兹(宽带模型)或 8 千赫兹(窄带模型)的采样率,并且使用 16 比特/样本。 服务会将以高于目标模型(16 千赫兹或 8 千赫兹)的采样率录制的音频转换为模型的采样率。 因此,增大频率并不会提高识别准确性,但确实会增加音频流的大小。
-
通过提供数据压缩的格式对音频进行编码。 通过更高效地对数据编码,可以在不超过 100 MB 限制的情况下发送多得多的音频。 由于人声的动态范围比音乐等更有限,因此语音可容纳的比特率比其他类型的音频低。 不过,IBM®建议您谨慎选择音频格式和压缩算法。 有关详细信息,请参阅 最大限度提高转录准确性。
-
语音识别对背景噪声和人声的细微差别非常敏感。
- 发动机噪声、运转的设备、街道噪声和背景会话都会大幅降低识别准确性。
- 地方口音和发音差异也会降低准确性。
如果音频具有上述这些特征,请考虑使用声学模型定制来提高语音识别的准确性。 有关更多信息,请参阅了解定制。
-
要进一步了解音频的特性,可以考虑在语音识别请求中使用音频指标。 如果您对音频信号处理有一定的了解,这些指标可以为您提供有意义的、详细的音频特征信息。 有关更多信息,请参阅音频度量值。