支持的芯片

芯片

RTL8721Dx

RTL8720E

RTL8726E

RTL8730E

支持情况

N

N

Y

Y

概述

AIVoice是一套由Realtek自主研发的离线AI解决方案,包含声学信号处理、唤醒、端点检测、识别等本地算法模块,可用于在Realtek SoC上搭建语音相关应用。

AIVoice可以作为纯离线方案单独使用,也可以结合语音识别、大语言模型等云端系统实现一个离在线混合的语音交互方案。

应用

智能语音系统广泛应用于多个领域,提升人机交互的效率和便捷性,其应用范围包括:

  • 智能家居:如小爱音箱、天猫精灵等智能音箱设备,或是自带语音控制功能的家电产品,用户可以通过语音控制家中的灯光、温度和其他智能设备,提升居住的便利性和舒适度。

  • 智能玩具:搭载智能语音系统的互动玩具(如AI故事机、语音教育机器人、陪伴机器人)正逐渐普及。这类玩具可通过语音与用户自然对话,回答十万个为什么、讲述定制化故事或进行双语教学。

  • 车载系统:许多现代汽车配备了语音识别系统,允许驾驶员通过语音指令进行导航、拨打电话和播放音乐,确保驾驶安全并提升驾驶体验。

  • 穿戴产品:如智能手表、智能耳机和健康监测设备等很多穿戴产品都配备了语音助手。用户可以通过语音指令查看和发送消息、控制音乐播放器、接听电话等,提升了用户体验和交互方式。

  • 会议场景:语音识别技术可以实时转录会议内容,帮助与会者更好地记录和回顾讨论要点。

文件路径

芯片

操作系统

aivoice_lib_dir

aivoice_example_dir

RTL8730E

Linux

{LINUXSDK}/apps/aivoice

{LINUXSDK}/apps/aivoice/example

FreeRTOS

{RTOSSDK}/component/aivoice

{RTOSSDK}/component/example/aivoice

RTL8726E

FreeRTOS

{DSPSDK}/lib/aivoice

{DSPSDK}/example/aivoice

模块

模块

功能

AFE(信号处理)

增强语音信号、降噪

KWS(唤醒词检测)

检测唤醒词以激活语音助手,例如“小爱同学”、“天猫精灵”

VAD(语音端点检测)

检测音频中的语音段或噪声段

ASR(语音识别)

检测离线语音控制命令

流程

为了方便用户开发,部分算法流程已在AIVoice中实现:

- Full Flow:

一个完整的离线流程,包括AFE,KWS和ASR。AFE和KWS始终开启,当KWS检测到唤醒词时,ASR开启并支持持续识别。超时后ASR退出。

- AFE+KWS:

离线流程包括AFE和KWS,始终开启。

AFE(信号处理)

简介

AFE是用于增强语音信号的音频信号处理模块。它可以提高语音识别系统的鲁棒性或改善通信系统的信号质量。

在AIVoice中,AFE算法包括以下子模块:

  • AEC(声学回声消除)

  • BF(波束成形)

  • NS(噪声抑制)

  • AGC(自动增益控制)

  • SSL(声源定位)

当前SDK中提供了以下四种麦克风阵型对应的算法库:

  • 1mic

  • 2mic_30mm

  • 2mic_50mm

  • 2mic_70mm

也可以通过定制服务提供其他麦克风阵列或性能优化。

算法框图

  • 单麦克阵列

afe_flow_1mic
  • 双麦克阵列

afe_flow_2mic

输入音频

  • 单麦克阵列

    • 输入音频的 格式 为 16 KHz、16 bit、双通道(其中 1 个通道为 mic 数据,另 1 个通道为参考信号)。 若不需要 AEC 功能,则输入为单通道 mic 数据。

    • 输入音频的 帧长 固定为 256 个点。

    • 数据排列示意图

../../_images/afe_input_mod_0.png
  • 双麦克阵列

    • 输入音频的 格式 为 16 KHz、16 bit、三通道(其中 2 个通道为 mic 数据,另 1 个通道为参考信号)。 若不需要 AEC 功能,则输入为两通道 mic 数据。

    • 输入音频的 帧长 固定为 256 个点。

    • 数据排列示意图

../../_images/afe_input_mod_1.png

备注

当不需要 AEC 功能时, 相关参数应配置为:enable_aec = false, ref_num = 0 。

配置

配置参数定义

AFE配置包括麦克风阵列,模式,子模块开关等。

typedef struct afe_config{

    // AFE common parameter
    afe_mic_geometry_e  mic_array;          // microphone array. Make sure to choose the matched resource library
    int ref_num;                            // reference channel number, must be 0 or 1. AEC will be disabled if ref_num=0.
    int sample_rate;                        // sampling rate(Hz), must be 16000
    int frame_size;                         // frame length(samples), must be 256

    afe_mode_e afe_mode;                    // AFE mode, for ASR or voice communication. Only support AFE for ASR in current version.
    bool enable_aec;                        // AEC(Acoustic Echo Cancellation) module switch
    bool enable_ns;                         // NS(Noise Suppression) module switch
    bool enable_agc;                        // AGC(Automation Gain Control) module switch
    bool enable_ssl;                        // SSL(Sound Source Localization) module switch. SSL is not supported in current version.

    // AEC module parameter
    afe_aec_mode_e aec_mode;                // AEC mode, signal process or NN method. NN method is not supported in current version.
    int aec_enable_threshold;               // ref signal amplitude threshold for AEC, the value should be in [0, 100].
                                            // larger value means the minimum echo to be cancelled will be larger.
    bool enable_res;                        // AEC residual echo suppression module switch
    afe_aec_filter_tap_e aec_cost;          // higher cost means longer filter length and more echo reduction
    afe_aec_res_aggressive_mode_e res_aggressive_mode;  // higher mode means more residual echo suppression but more distortion

    // NS module parameter
    afe_ns_mode_e ns_mode;                  // NS mode, signal process or NN method. NN method is not supported in current version.
    afe_ns_cost_mode_e ns_cost_mode;        // low cost mode means 1channel NR and poorer noise reduction effect
    afe_ns_aggressive_mode_e ns_aggressive_mode;        // higher mode means more stationary noise suppression but more distortion

    // AGC module parameter
    int agc_fixed_gain;                     // AGC fixed gain(dB) applied on AFE output, the value should be in [0, 18].
    bool enable_adaptive_agc;               // adaptive AGC switch. Not supported in current version.

    // SSL module parameter
    float ssl_resolution;                   // SSL solution(degree)
    int ssl_min_hz;                         // minimum frequency(Hz) of SSL module.
    int ssl_max_hz;                         // maximum frequency(Hz) of SSL module.
} afe_config_t;

如果需要修改麦克风阵列,请确保配置和afe资源库做对应的修改。

详情请参考 ${aivoice_lib_dir}/include/aivoice_afe_config.h

注意

请确保 mic_array 、ref_num 两个参数与 AFE 输入音频匹配。

模块开关配置

  • AEC(回声消除)

    • 模块说明: 用于消除麦克风拾取的设备自身播放的声音即回声。

    • 开启条件: 当设备带喇叭,有带回声场景时,应开启AEC模块。

    • 模块开启前后频谱对比

../../_images/afe_aec_spectrogram.png
  • RES(残留回声抑制)

    • 模块说明: 为AEC模块中的非线性处理子模块,用于进一步抑制回声残留。 当该模块开启时回声抑制更强,但同时语音损伤也会增加。

    • 开启条件: 当喇叭播放时非线性较强,回声残留较高时,可以开启RES模块。 当AEC模块关闭时,该模块无法单独开启。

    • 模块开启前后频谱对比

../../_images/afe_aec_res_spectrogram.png
  • NS(噪声抑制)

    • 模块说明: 用于抑制环境噪声,主要是对稳态噪声,具有很好的抑制效果。

    • 开启条件: 当使用场景环境噪声较高或设备本身会发出较大稳态噪声,推荐开启NS模块。

    • 模块开启前后频谱对比

../../_images/afe_ns_spectrogram.png
  • AGC (自动增益控制)

    • 模块说明: 用于调整输出音频的幅值。 调整agc_fixed_gain参数时,应保证在语音音量最大情况下,处理后的信号不截幅。

    • 开启条件: 当输出信号幅度偏低明显影响识别或唤醒效果时,可以开启AGC模块,施加适当的增益。

  • SSL (声源定位)

    • 模块说明: 用于计算目标说话人的方向。 仅支持双麦克阵列,输出角度范围为 0° ~ 180°。

    • 开启条件: 当需要获取说话人方向时,可以开启SSL模块。

硬件设计要求

麦克风单体性能推荐

麦克风建议优选全向性硅麦,一致性更好。

  • 灵敏度(sensitivity):模拟硅麦 ≥-38dBV,数字硅麦 ≥-26dBFS,±1.5dB;

  • 信噪比(SNR) :≥60dB

  • 总体谐波失真(THD) :≤ 1%(1kHz)

  • 声学过载点(AOP) :≥120dB SPL

喇叭单体性能推荐

  • 谐波失真(THD):额定功率下 100~200Hz THD≤5%,200~8kHz THD≤3%

麦克阵列设计建议

  • 2 个麦克风之间间距建议保持 3.0~7.0 cm,优选5cm。

  • 所有麦克风收音口位于同一直线,该直线平行于水平面。

  • 麦克风朝向可以在朝上与朝前(朝向说话人)之间任意角度。

  • 推荐同一个阵列内的麦克应使用同一厂家的同一型号,不建议混用。

  • 麦克阵列中各麦克的结构设计,推荐采用相同的设计,以保证结构设计的一致性。

整机拾音性能要求

  1. 一致性

    • 频响一致性:自由场频谱(100~7kHz)响应波动: < 3dB 。

    • 相位一致性:麦克风之间的相位差(1kHz): < 10°。

  2. 气密性

    • 外部喇叭播放,堵上麦克风与不堵上麦克风收音的音量差值(100~8 kHz): > 15dB。

  3. 频谱无异常

    • 不应有异常的电噪声。

    • 不应有丢音。

  4. 频谱衰减

    • 7.5kHz频率以下不应有明显的衰减。

  5. 频率混叠

    • 播放扫频信号(0~20 kHz),16kHz收音信号没有明显频率混叠。

整机播放回采性能要求

  1. 回采接入方式

    • 仅支持硬回采,不支持软回采。

  2. 回采接入位置

    • 回采位置推荐尽量靠近喇叭侧,需接在EQ之后,以规避音效导致的非线性。

  3. 回采增益

    • 设备喇叭最大音量播放时,回采信号不应截幅,建议参考峰值 -3~-6 dB。

  4. 时延

    • 不要有时延。

  5. 总谐波失真

    • 设备喇叭最大音量播放时,100Hz,THD≤10%; 200~500Hz,THD≤6%; 500~8kHz,THD≤3%。

  6. 气密性

    • 设备喇叭播放,堵上麦克风与不堵上麦克风收音的音量差值(100~8 kHz): > 15dB。

KWS(唤醒词检测)

简介

KWS是用于检测音频中特定唤醒词的模块。它通常是语音交互的第一步,设备检测到唤醒词后,会进入等待语音指令状态。

AIVoice支持两种KWS算法方案:

方案

训练数据

可选唤醒词

方案特点

固定唤醒词

特定唤醒词

训练数据所用唤醒词

性能更好;模型更小

自定义唤醒词

通用数据

与训练数据相同语种的任意自定义唤醒词

更灵活

当前SDK中提供了一个“小强小强”或“你好小强”的中文固定唤醒词模型和一个中文自定义唤醒模型。也可以通过定制服务提供其他唤醒词或性能优化。

配置

KWS可配参数:

- keywords:

唤醒关键字, 可选的关键字取决于KWS模型。如果KWS模型是固定唤醒词方案,则只能从训练过的单词中选择。对于自定义唤醒词方案,可以使用该语言建模单元的任意组合来定制关键字(例如中文拼音)。示例:”xiao-qiang-xiao-qiang”。

- thresholds:

唤醒阈值,范围[0, 1]。值越高,误唤醒越少,但更难唤醒。如果要使用灵敏度,该值需要设为0。

- sensitivity:

提供预先调好阈值的三档灵敏度,灵敏度越高,更容易唤醒,但误唤醒也越多。 灵敏度仅在阈值设置为0时有效。

详情请参考 ${aivoice_lib_dir}/include/aivoice_kws_config.h

KWS模式

有单路或多路两种KWS模式可供不同使用场景选择。与单路相比,多路模式可以提升KWS和ASR的准确率,但同时计算资源和内存使用也会上升。

KWS模式

函数

特点

单路模式

void rtk_aivoice_set_single_kws_mode(void)

更少的计算量和内存占用

多路模式

void rtk_aivoice_set_multi_kws_mode(void)

更高的唤醒率和识别率

注意

在这些流程中创建实例之前必须设置KWS模式:

  • aivoice_iface_full_flow_v1

  • aivoice_iface_afe_kws_v1

VAD(语音端点检测)

简介

VAD是用于检测音频中有无语音信号的模块。

AIVoice提供了一个基于神经网络的VAD算法,可以用于语音增强、识别等语音系统中。

配置

VAD可配参数:

- sensitivity:

提供预先调好阈值的三档灵敏度,灵敏度越高,越容易检测到语音,但误报也越多。

- left_margin:

添加到语音段开头的时间边距,使起始点早于原始的预测点。该值仅影响VAD输出的offset_ms,不会影响状态1的事件触发时间。

- right_margin:

添加到语音段结尾的时间边距,使结尾点晚于原始的预测点。该值同时影响VAD输出的offset_ms和状态0的事件触发时间。

详情请参考 ${aivoice_lib_dir}/include/aivoice_vad_config.h

备注

left_margin参数仅影响vad返回的offset_ms数值, 无法影响vad状态的改变时间. 如果需要保留left_margin区间内的音频,请在外部通过音频缓存实现。

ASR(语音识别)

简介

ASR是用于把语音信号识别为文本的模块。

AIVoice提供了中文离线语音命令词检测的ASR算法。

当前SDK中提供了一套包含“打开空调” “关闭空调”等空调相关的40条命令词的识别算法,也可以通过定制服务更换命令词、性能优化等。

配置

ASR可配参数:

- sensitivity:

提供预先调好阈值的三档灵敏度,灵敏度越高,更容易识别到命令词,但误触发也越多。

详情请参考 ${aivoice_lib_dir}/include/aivoice_asr_config.h

接口

流程和模块接口

接口

流程/模块

aivoice_iface_full_flow_v1

AFE+KWS+ASR

aivoice_iface_afe_kws_v1

AFE+KWS

aivoice_iface_afe_v1

AFE

aivoice_iface_vad_v1

VAD

aivoice_iface_kws_v1

KWS

aivoice_iface_asr_v1

ASR

所有接口均支持以下函数:

  • create()

  • destroy()

  • reset()

  • feed()

详情请参考 ${aivoice_lib_dir}/include/aivoice_interface.h

事件及回调信息

aivoice输出事件

事件触发时间

回调信息

AIVOICE_EVOUT_VAD

当VAD检测到语音段开始或结束

包含VAD状态,偏移的结构体

AIVOICE_EVOUT_WAKEUP

当KWS检测到唤醒词

包含id,唤醒词,唤醒得分的json字符串。示例: {“id”:2,”keyword”:”ni-hao-xiao-qiang”,”score”:0.9}

AIVOICE_EVOUT_ASR_RESULT

当ASR检测到命令词

包含fst类型,命令词,id的json字符串。 示例: {“type”:0,”commands”:[{“rec”:”打开空调”,”id”:14}]}

AIVOICE_EVOUT_AFE

AFE收到输入的每一帧

包含AFE输出数据,通道数等的结构体

AIVOICE_EVOUT_ASR_REC_TIMEOUT

在给定的超时期限内未检测到命令字时

NULL

AFE事件定义

struct aivoice_evout_afe {
    int     ch_num;                       /* channel number of output audio signal, default: 1 */
    short*  data;                         /* enhanced audio signal samples */
    char*   out_others_json;              /* reserved for other output data, like flags, key: value */
};

VAD事件定义

struct aivoice_evout_vad {
    int status;                     /*  0: vad is changed from speech to silence,
                                           indicating the end point of a speech segment
                                        1: vad is changed from silence to speech,
                                           indicating the start point of a speech segment */
    unsigned int offset_ms;         /* time offset relative to reset point. */
};

通用配置

AIVoice可配参数:

- no_cmd_timeout:

如果在此持续时间内未检测到命令字,则ASR退出。 仅在full flow中使用。

- memory_alloc_mode:

默认使用SDK默认堆。SRAM模式使用SDK默认堆,同时还从SRAM分配空间用于内存关键数据。 SRAM模式目前仅适用于RTL8713EC和RTL8726EA DSP。

详情请参考 ${aivoice_lib_dir}/include/aivoice_sdk_config.h

示例

AIVoice Full Flow离线示例

该例子通过一条提前录制的三通道音频演示如何使用AIVoice的全流程,在开发板启动后仅运行一次。 未整合录音、播放等音频功能。

AIVoice使用步骤

  1. 选择需要的aivoice流程或模块。如果使用full_flow或afe_kws流程,需要指定KWS模式为单路或多路模式。

    /* step 1:
     * Select the aivoice flow you want to use.
     * Refer to the end of aivoice_interface.h to see which flows are supported.
     */
    const struct rtk_aivoice_iface *aivoice = &aivoice_iface_full_flow_v1;
    rtk_aivoice_set_multi_kws_mode();
    
  2. 准备配置参数。

    /* step 2:
     * Modify the default configure if needed.
     * You can modify 0 or more configures of afe/vad/kws/...
     */
    struct aivoice_config config;
    memset(&config, 0, sizeof(config));
    
    /*
     * here we use afe_res_2mic50mm for example.
     * you can change these configuratons according the afe resource you used.
     * refer to aivoce_afe_config.h for details;
     *
     * afe_config.mic_array MUST match the afe resource you linked.
    
     */
    struct afe_config afe_param = AFE_CONFIG_ASR_DEFAULT();
    afe_param.mic_array = AFE_LINEAR_2MIC_50MM;  // change this according to the linked afe resource.
    config.afe = &afe_param;
    
    /*
     * ONLY turn on these settings when you are sure about what you are doing.
     * it is recommend to use the default configure,
     * if you do not know the meaning of these configure parameters.
    
     */
    struct vad_config vad_param = VAD_CONFIG_DEFAULT();
    vad_param.left_margin = 300; // you can change the configure if needed
    config.vad = &vad_param;    // can be NULL
    
    struct kws_config kws_param = KWS_CONFIG_DEFAULT();
    config.kws = &kws_param;    // can be NULL
    
    struct asr_config asr_param = ASR_CONFIG_DEFAULT();
    config.asr = &asr_param;    // can be NULL
    
    struct aivoice_sdk_config aivoice_param = AIVOICE_SDK_CONFIG_DEFAULT();
    aivoice_param.no_cmd_timeout = 10;
    config.common = &aivoice_param; // can be NULL
    
  3. 使用 create() 和指定配置来创建并初始化aivoice实例。

    /* step 3:
     * Create the aivoice instance.
     */
    void *handle = aivoice->create(&config);
    if (!handle) {
        return;
    }
    
  4. 注册回调函数。

    /* step 4:
     * Register a callback function.
     * You may only receive some of the aivoice_out_event_type in this example,
     * depending on the flow you use.
     * */
    
    rtk_aivoice_register_callback(handle, aivoice_callback_process, NULL);
    

    回调函数可以按实际使用需求进行修改:

    static int aivoice_callback_process(void *userdata,
                                        enum aivoice_out_event_type event_type,
                                        const void *msg, int len)
    {
    
        (void)userdata;
        struct aivoice_evout_vad *vad_out;
        struct aivoice_evout_afe *afe_out;
    
        switch (event_type) {
        case AIVOICE_EVOUT_VAD:
                vad_out = (struct aivoice_evout_vad *)msg;
                printf("[user] vad. status = %d, offset = %d\n", vad_out->status, vad_out->offset_ms);
                break;
    
        case AIVOICE_EVOUT_WAKEUP:
                printf("[user] wakeup. %.*s\n", len, (char *)msg);
                break;
    
        case AIVOICE_EVOUT_ASR_RESULT:
                printf("[user] asr. %.*s\n", len, (char *)msg);
                break;
    
        case AIVOICE_EVOUT_ASR_REC_TIMEOUT:
                printf("[user] asr timeout\n");
                break;
    
        case AIVOICE_EVOUT_AFE:
                afe_out = (struct aivoice_evout_afe *)msg;
    
                // afe will output audio each frame.
                // in this example, we only print it once to make log clear
                static int afe_out_printed = false;
                if (!afe_out_printed) {
                        afe_out_printed = true;
                        printf("[user] afe output %d channels raw audio, others: %s\n",
                                   afe_out->ch_num, afe_out->out_others_json ? afe_out->out_others_json : "null");
                }
    
                // process afe output raw audio as needed
                break;
    
        default:
                break;
        }
    
        return 0;
    }
    
  1. 使用 feed() 给aivoice输入音频数据。

    /* when run on chips, we get online audio stream,
    
     * here we use a fix audio.
     * */
    
    const char *audio = (const char *)get_test_wav();
    int len = get_test_wav_len();
    int audio_offset = 44;
    int mics_num = 2;
    int afe_frame_bytes = (mics_num + afe_param.ref_num) * afe_param.frame_size * sizeof(short);
    while (audio_offset <= len - afe_frame_bytes) {
            /* step 5:
             * Feed the audio to the aivoice instance.
             * */
    
            aivoice->feed(handle,
                          (char *)audio + audio_offset,
                          afe_frame_bytes);
    
            audio_offset += afe_frame_bytes;
    }
    
  2. (可选) 如果需要重置状态, 使用 reset()

  3. 如果不再需要aivoice,使用 destroy() 销毁实例。

    /* step 6:
    * Destroy the aivoice instance */
    
    aivoice->destroy(handle);
    

详情请参考 ${aivoice_example_dir}/full_flow_offline

编译示例

  1. 编译DSP的Tensorflow Lite Micro库, 请参考 编译Tensorflow Lite Micro库

    也可使用{DSPSDK}/lib/aivoice/prebuilts目录下预编译好的Tensorflow Lite Micro库。

  2. 在Xtensa Xplorer中导入 {DSPSDK}/example/aivoice/full_flow_offline 源。

  3. 进行软件相关配置,按需修改链接的库如AFE资源、KWS资源等。

    • 添加包含路径 (-I)

      ${workspace_loc}/../lib/aivoice/include

    • 添加库搜索路径 (-L)

      ${workspace_loc}/../lib/aivoice/prebuilts/$(TARGET_CONFIG) ${workspace_loc}/../lib/xa_nnlib/v1.8.1/bin/$(TARGET_CONFIG)/Release ${workspace_loc}/../lib/lib_hifi5/project/hifi5_library/bin/$(TARGET_CONFIG)/Release ${workspace_loc}/../lib/tflite_micro/project/bin/$(TARGET_CONFIG)/Release

    • 添加库 (-l)

      -laivoice -lafe_kernel -lafe_res_2mic50mm -lkernel -lvad -lkws -lasr -lfst -lcJSON -ltomlc99 -ltflite_micro -lxa_nnlib -lhifi5_dsp

  4. 编译固件,请参考 dsp_build 中的步骤。

术语

AEC

AEC(Acoustic Echo Cancellation),声学回声消除,或回声消除,是指消除输入信号中的回声信号。回声信号是指麦克风采集到的设备自身扬声器播放的音频。

AFE

AFE(Audio Front End),音频前端,或信号处理,是指用于原始音频信号预处理的一些模块的组合。通常在进行语音交互前执行以增强信号质量,包含多种语音增强算法。

AGC

AGC(Automatic Gain Control),自动增益控制,用于动态调节信号的增益,自动调整信号幅值,以保持最佳信号强度。

ASR

ASR(Automatic Speech Recognition),语音识别,是指把音频中的语音识别为文本。它可用于编译语音用户界面,实现人类与人工智能设备的语音交互。

BF

BF(BeamForming),波束形成,是指一种为麦克风阵列设计的空间滤波器,用于增强来自特定方向的信号同时衰减其他方向的信号。

KWS

KWS(Keyword Spotting),关键词检测,或唤醒词检测、语音唤醒,是指从音频中识别特定的唤醒词。通常是语音交互的第一步,设备检测到唤醒词后,会进入等待语音指令状态。

NN

NN(Neural Network),神经网络,是一种用于人工智能各类任务的机器学习模型。神经网络依靠训练数据学习并提升准确性。

NS

NS(Noise Suppression),噪声抑制,或降噪,是指抑制信号中的环境噪声以增强语音信号, 尤其是稳态噪声。

RES

RES(Residual Echo Suppression),残余回声抑制,是指抑制AEC处理后的残余回声信号。是AEC的后置滤波器。

SSL

SSL(Sound Source Localization),声源定位,是指利用麦克风阵列估计声源的空间方位。

TTS

TTS(Text-To-Speech),语音合成,是一种将文本转换为语音的技术。它可用于各种需要将文本转换为人声的语音应用中。

VAD

VAD (Voice Activity Detection),语音活性检测,或语音端点检测,是指从音频中检测有无语音信号。它被广泛用于语音增强、语音识别等系统中,也可用于去除音频会话中的非语音片段以减少计算、带宽等。