音频采集和播放说明

本文主要介绍多模交互开发套件中的输入输出语音格式,以及格式不符合要求时的常见问题及解决方法。

音频格式说明

类型

可选参数设置

语音格式说明

语音识别

  • upstream.audio_format

  • 支持的输入格式:PCM编码(无压缩的PCMWAV文件)、OPUS格式单声道(mono)音频文件,16 bit采样位数。

  • 音频采样率:16000 Hz。

注意:opus格式的每一包数据都需要单独ogg封装

语音合成

  • downstream.audio_format

  • downstream.sample_rate

  • 支持的输出格式:PCM、OPUS、MP3 格式 16 bit采样位数、单声道(mono)。

  • 支持的音频采样率:8000 Hz、16000 Hz、24000Hz、48000Hz。默认采样率为 24000Hz。

注意:opus格式的每一包数据都包含单独ogg封装

查看语音格式

基本说明

常见语音格式名词说明:

  • 采样率:比如 8000 Hz(8K Hz)、16000 Hz (16K Hz) 代表每秒8000个或16000个采样点。

  • 采样位数:比如 16 bit 代表每个采样点的音频信息用16 bit(2个字节)保存。

  • 声道:有两种声道:Mono单声道、Stereo立体声。

语音时长与文件大小转换:

  • 语音文件Size大小(单位MiB)=(采样率×采样位数×声道数×语音时长(单位s))/(8*1024*1024)

    • 例如:16000(Hz)*16(bit)*1(声道)*60(s)/(8*1024*1024)=1.83 MiB(近似值)

Linux操作系统下查看语音格式

  1. 使用如下命令查看

file input.wav
  1. 预期结果

    • 16000 Hz采样率、16 bit采样位数、单声道(mono)的无压缩WAV格式如下图所示:11232

Windows操作系统下查看语音格式

  1. Windows操作系统中,您可以选中目标语音,单击鼠标右键,选择属性,可以查看更多信息。

  2. 预期结果

    • 16000 Hz采样率、16 bit采样位数、单声道(mono)的无压缩WAV格式如下图所示:11234

如何进行语音格式转换

若输入语音采样率、采样位数、声道、编码等不符合语音识别格式要求时会报错,测试语音可先进行语音格式转换。

Linux操作系统下转换语音格式

使用如下常见的FFmpeg命令进行转换。更多操作,请参见下载FFmpeg

#查询语音格式如采样率、声道、编码等
ffmpeg -i input.mp3

#将某个wav文件转化为8K、16bit、单声道的wav文件
ffmpeg -i input.wav  -ar 8000 -ac 1 -acodec pcm_s16le -f s16le output.wav

#将某个wav文件转化为16K、16bit、单声道的wav文件
ffmpeg -i input.wav  -ar 16000 -ac 1 -acodec pcm_s16le -f s16le output.wav

#将某个pcm文件转化为16K、16bit、单声道的wav文件
ffmpeg -i input.pcm -f s16le -ar 16000 -ac 1 -acodec pcm_s16le  output.wav

#将某个wav文件转化为16K、16bit、单声道的pcm文件
ffmpeg -y -i input.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 output.pcm

#将某个Mp3文件转换为转化为16K、16bit、单声道的wav文件
ffmpeg -y -i input.mp3 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 output.wav

#将某个44.1KHz、16bit的wav文件转化为16K、16bit、单声道的wav文件
ffmpeg -y -f s16le -ar 44100 -ac 1 -i input.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 output.wav

#将某个8K的alaw文件转化为8K、16bit、单声道的wav文件
ffmpeg -f alaw -ar 8000 -i input.wav -ar 8000 -ac 1 -acodec pcm_s16le -f s16le output.wav

#将某个8K的mulaw文件转化为8K、16bit、单声道的wav文件
ffmpeg -f mulaw -ar 8000 -i input.wav -ar 8000 -ac 1 -acodec pcm_s16le -f s16le output.wav

#将某个amr文件转化为16K、16bit、单声道的wav文件
ffmpeg -i input.wav -ar 16000 -ac 1 -acodec pcm_s16le -f s16le output.wav

Windows操作系统下转换语音格式

Windows系统下语音转换格式可使用转换工具,常见工具Adobe Audition、CoolEdit或其他在线、离线语音转换工具。

使用转换工具,优先打开语音,修改导出设置的格式后运行即可,以下是以输出16K数据为例。11235

常见问题及解决方法

官网示例语音正常,换成自己待测试的语音就获取不到识别结果?

  • 检查音频文件格式

    • 建议您检查待测试的语音格式是否符合语音识别输入格式要求。更多内容,请参见上文音频格式说明。

    • 将待测试语音转换成16K、16 bit采样位数、单声道(mono)无压缩的WAV文件。

Tap2Talk/Duplex 模式下,发送音频没有最终结果返回?

  • Tap2Talk/Duplex 模式使用云端 vad 检测音频尾点。 如果是使用音频文件调用,需要音频文件后面至少包含 800-1000ms 静音,否则识别无法结束。

语音合成的语速和我预期的不一致?

  • 检查您的播放参数设置

    • 请检查您播放的参数,尤其是采样率、采样位数、以及通道数。通常在播放 PCM 数据的时候,错误的设置会造成声音异常。

    • 以 Android 为例。通常客户端使用AudioTrack播放,通常的配置如下:

image