录音工具

资源

概述

录音工具由瑞昱(Realtek)设计,用于配置 Ameba 芯片的音频参数、从 Ameba 芯片捕获音频数据并将其录制为 PCM/WAV 文件。

录音工具的图形用户界面(GUI)如下图所示。

../../_images/audio_recorder_gui.png

运行环境

硬件环境

如下图所示,通过 USB 转 UART 适配器将 Ameba 芯片上的 UART 端口连接到 PC 的 USB 端口。

../../_images/hardware_setup.svg

备注

  • 用于音频录制的 UART 端口与具体实现相关,请根据您的硬件和软件设计进行调整。

  • 请选择合适的 USB 转 UART 适配器,以满足所需音频数据速率的要求。

软件环境

  • PC 环境:Win 7 或更高版本,Microsoft .NET Framework 4.0

  • Ameba 环境:烧录了音频录制示例的固件

芯片设置

编辑录音工具可执行文件所在目录下的 Chip.json 文件来配置芯片参数。

[
    {
        "ChipID": "RTL872XD",
        "BaudRate": 3000000,
        "AmicNum": 2,
        "DmicNum": 3,
        "MinRefNum": 1,
        "MaxRefNum": 1
    },
    {
        "ChipID": "RTL8720E",
        "BaudRate": 3000000,
        "AmicNum": 3,
        "DmicNum": 4,
        "MinRefNum": 1,
        "MaxRefNum": 2
    },
    {
        "ChipID": "RTL8730A",
        "BaudRate": 3000000,
        "AmicNum": 5,
        "DmicNum": 8,
        "MinRefNum": 1,
        "MaxRefNum": 2
    }
]

芯片配置以芯片信息列表的形式组织,其描述如下:

配置项

类型

描述

ChipID

string

用于识别芯片的 ID,可根据需要自由更改。

BaudRate

int

用于音频录制的串口波特率,与软硬件实现相关。

AmicNum

int

AMIC 接口的数量,与硬件实现相关。

DmicNum

int

DMIC 接口的数量,与硬件实现相关。

MinRefNum

int

REF 通道的最小数量,与软硬件实现相关。

MaxRefNum

int

REF 通道的最大数量,与软硬件实现相关。

音频设置

通过 GUI 设置

录音工具允许用户通过 GUI 设置最常用的音频配置:

../../_images/setup_with_gui.png

GUI 上的配置项描述如下:

配置项

描述

Serial Port

串口,选择用于音频录制的正确串口。

Baud Rate

串口的波特率。

Sample Rate

音频采样率。

Format

音频格式,有效值与 Ameba 软件实现对应。

Channels

音频通道数,有效值范围为 3 到 9。其中一个通道保留给 OUT 源,因此可配置的通道数为(Channels - 1)。

Source

音频源,包括 AMIC 和 DMIC。可用音源受 Chip.json 文件中 AmicNumDmicNum 的限制。

REF

参考通道,参考通道的数量受 Chip.json 文件中 MinRefNumMaxRefNum 的限制。

工具会根据 ChannelsSourceREF 的配置提供实时预览。

通过配置文件设置

首次启动后,录音工具的可执行文件目录下会生成一个名为 Settings.json 的文件,用于保存运行时的录制配置。每次关闭工具后,该文件都会被更新。

Settings.json 包含比 GUI 更多的配置项,其格式如下:

{
    "Config": {
        "Channels": [
            65281,
            130818,
            65535,
            65535,
            65535,
            65535,
            65535,
            65535
        ],
        "SampleRate": 32000,
        "Format": "PCM_16_BIT",
        "DeviceType": "RTPIN_IN_MIC",
        "ChannelCount": 3
    },
    "ChipID": "RTL8720E",
    "SerialPort": "USB Serial Port (COM74)",
    "SerialBaudRate": 3000000,
    "SerialDataBits": 8,
    "SerialStopBits": "One",
    "SerialParity": "None",
    "SerialRxBufferLength": 32768,
    "DataRateThreshold": 90,
    "DataPayloadLength": 1440,
    "DataBufferLength": 4194304,
    "MaxRxDataLength": 4294967295,
    "GenWavFile": false
}

用户可以编辑此文件以调整录制配置:

配置项

类型

描述

UI 对应配置项

ChipID

string

用于识别芯片的 ID,应与 Chip.json 中的 ChipID 对应。

N/A

SerialPort

string

串口名称。

Serial Port

SerialBaudRate

int

串口波特率。

Baud Rate

SerialDataBits

int

串口数据位,与 Ameba 软件实现相关。

N/A

SerialStopBits

enum

串口停止位,有效值与 Ameba 软件实现对应:

  • "None"

  • "One"

  • "Two"

  • "OnePointFive"

N/A

SerialParity

enum

串口校验位,有效值与 Ameba 软件实现对应:

  • "None"

  • "Odd"

  • "Even"

  • "Mark"

  • "Space"

N/A

SerialRxBufferLength

int

串口接收缓冲区长度。

N/A

DataRateThreshold

int

用于限制音频数据速率相对于串口波特率的百分比阈值。音频数据速率不得超过:

(baud rate * SerialDataBits / (1 + SerialDataBits + SerialStopBits) / 1000) * DataRateThreshold / 100 KB/s

否则,当用户点击录制按钮时,工具会弹出警告并拒绝开始录制。

N/A

DataPayloadLength

int

从 Ameba 发送到 PC 端录音工具的数据包的有效载荷长度(字节),与 Ameba 软件实现相关。

N/A

DataBufferLength

int

录音工具在运行时用于保存接收到的音频数据的缓冲区长度(字节)。

N/A

MaxRxDataLength

u64

工具录制音频数据到文件的最大接收数据长度(字节)。

对于 WAV 文件,受其规范限制,MaxRxDataLength 应小于 4GB (0x100000000)。

对于 PCM 文件,则没有限制。

N/A

GenWavFile

bool

指示是否将录制数据保存为 WAV 文件:

true: WAV 文件 (.wav) false: 原始 PCM 文件 (.pcm)

N/A

Config -> Channels

list<u32>

最多支持 9 个通道,包括最多 8 个可配置通道和 1 个 OUT 通道。可配置通道定义如下:

bit 0: AMIC 1 bit 1: AMIC 2 bit 2: AMIC 3 … bit 7: AMIC 8 bit 8: DMIC 1 bit 9: DMIC 2 bit 10: DMIC 3 … bit 15: DMIC 8 bit 16: REF bit 17~bit 31: 保留

特别地,bit 0~7 = 0b11111111 表示 AMIC 未使用,bit 8~15 = 0b11111111 表示 DMIC 未使用。

例如,0b11111111100000010 表示将 AMIC2 作为 REF。

Source & REF

Config -> SampleRate

int

音频采样率,最大值受 Ameba 软硬件实现限制。

Sample Rate

Config -> Format

enum

音频格式,有效值与 Ameba 软件实现对应:

  • "PCM_8_BIT"

  • "PCM_16_BIT"

  • "PCM_32_BIT"

  • "PCM_FLOAT"

  • "PCM_24_BIT_PACKED"

  • "PCM_8_24_BIT"

Format

Config -> DeviceType

enum

设备类型,有效值与 Ameba 软件实现对应:

  • "RTPIN_IN_MIC"

  • "RTPIN_IN_HS_MIC"

  • "RTPIN_IN_LINEIN"

  • "RTPIN_IN_DMIC_REF_AMIC"

N/A

Config -> ChannelCount

int

通道数,最大值受 Ameba 硬件实现限制。

Channels

备注

为使更改生效,Settings.json 文件应仅在录音工具关闭时修改,否则任何更改都将在工具关闭时被覆盖。

录音

开始录音

配置完成后,点击 "Record" 按钮开始录制。

  • 如果配置非法,将弹出警告对话框并拒绝录制,用户需调整配置后重试。

  • 如果配置正确,录制将开始。

在录制过程中:

  • 已录制时间将以秒为单位更新。

  • 进度条会持续转圈,每 60 秒一圈。

  • 日志信息(包括关键信息、警告和错误)将打印到文本框中。

../../_images/recording.png

停止录音

在录制状态下,点击 "Stop" 按钮将停止录制。

录制数据将根据 Setting.jsonGenWavFile 属性的设置,保存为 PCM 或 WAV 文件。文件位于录音工具可执行文件目录下的 log 文件夹中,文件名将遵循以下命名规则并打印在日志文本框中:

<Timestamp>_<Format>_CH<Channels>_<Sample Rate>.<FileType>

例如:

20220719_192021_PCM_16_BIT_CH3_44100.pcm
../../_images/record_stop.png

放音

生成的音频文件可以使用支持多轨的音频播放器进行播放,例如使用 Audacity 播放生成的 PCM 文件:

  1. 选择 文件 -> 导入 -> 原始数据

../../_images/import_raw_data.png
  1. 选择生成的 PCM 文件,并根据录音工具中的录制配置设置音频参数:

../../_images/audio_configurations.png

Audacity 中的音频配置项描述如下:

配置项

描述

Encoding

音频编码,应与录音工具中的 Format 配置一致。

Byte order

字节序,选择 Little-endian。

Channels

通道数,应与录音工具中的 Channels 配置一致。

Start offset

起始偏移量,默认为 0。

Amount to import

导入量,默认为 100%。

Sample rate

采样率,应与录音工具中的 Sample Rate 配置一致。

  1. 点击播放按钮:

../../_images/play.png