AudioEffectStore

简介

AudioEffectStore 提供了一套完整的音效管理 API,包括变声效果、混响效果和耳返功能。
通过该类,主播可以在直播过程中实时调整自己的声音效果,提升直播体验。
重要:
使用 shared 单例获取 AudioEffectStore 实例。设置的音效在退出房间后会自动失效,下次进房需要重新设置。
说明:
音效状态更新通过 audioEffectState 发布者传递。订阅它以接收有关变声、混响和耳返状态的实时更新。
警告:
由于蓝牙耳机的硬件延迟非常高,在主播佩戴蓝牙耳机时无法开启耳返功能。请在用户界面上提示主播佩戴有线耳机。

功能特性

变声效果:支持多种变声特效,如熊孩子、小女孩、大叔等。
混响效果:支持多种混响特效,如KTV、小房间、大会堂等。
耳返功能:主播可在耳机中听到自己的声音,适用于唱歌场景。
音量控制:支持耳返音量的精细调节。

可订阅数据

AudioEffectState 的字段描述如下:
属性名
类型
描述
audioChangerType
ValueListenable<AudioChangerType>
变声状态。
audioReverbType
ValueListenable<AudioReverbType>
混响状态。
isEarMonitorOpened
ValueListenable<bool>
耳返开启。
earMonitorVolume
ValueListenable<int>
耳返音量,取值范围 0 - 100。 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

API 列表

函数名
描述
获取单例实例。
设置变声效果。
设置混响效果。
开启/关闭耳返。
设置耳返音量。
重置为默认状态。

获取实例

shared

获取单例实例。

变声设置

setAudioChangerType

设置变声效果
void setAudioChangerType(AudioChangerType type);
通过该接口您可以设置人声的变声特效。 变声特效可以作用于人声之上,通过声学算法对人声进行二次处理,以获得与原始声音所不同的音色。
版本信息
从 3.5 版本开始支持。
调用时机
进入房间后,且需要使用变声效果时调用。
注意事项
说明:
设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置。
参数说明
参数名
类型
是否必填
描述
type
必填
变声效果类型。

混响设置

setAudioReverbType

设置混响效果
void setAudioReverbType(AudioReverbType type);
通过该接口您可以设置人声的混响效果。 混响特效可以作用于人声之上,通过声学算法对声音进行叠加处理,模拟出各种不同环境下的临场感受。
版本信息
从 3.5 版本开始支持。
调用时机
进入房间后,且需要使用混响效果时调用。
注意事项
说明:
设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置。
参数说明
参数名
类型
是否必填
描述
type
必填
混响效果类型。

耳返设置

setVoiceEarMonitorEnable

开启/关闭耳返
void setVoiceEarMonitorEnable(bool enable);
主播开启耳返后,可以在耳机里听到麦克风采集到的自己发出的声音,该特效适用于主播唱歌的应用场景中。
版本信息
从 3.5 版本开始支持。
适用场景
适用于主播唱歌场景,让主播能够实时听到自己的声音以便调整演唱效果。
调用时机
进入房间后,且主播佩戴有线耳机时调用。
注意事项
警告:
由于蓝牙耳机的硬件延迟非常高,所以在主播佩戴蓝牙耳机时无法开启此特效,请尽量在用户界面上提示主播佩戴有线耳机。
参数说明
参数名
类型
是否必填
描述
enable
bool
必填
是否开启耳返。

setVoiceEarMonitorVolume

设置耳返音量
void setVoiceEarMonitorVolume(int volume);
通过该接口您可以设置耳返特效中声音的音量大小。
版本信息
从 3.5 版本开始支持。
调用时机
开启耳返功能后调用。
注意事项
说明:
如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
参数说明
参数名
类型
是否必填
描述
volume
int
必填
耳返音量。(取值范围:0 - 100(超过 100 可能导致爆音))(默认值:100)。

重置

reset

重置为默认状态
void reset();
将所有音效设置重置为默认值,包括关闭变声效果、关闭混响效果、关闭耳返并重置耳返音量。
版本信息
从 3.5 版本开始支持。
调用时机
需要恢复默认音效设置时调用,例如退出直播间前。

数据结构

AudioChangerType

变声效果类型。
枚举值
说明
none
0
关闭特效。
child
1
熊孩子。
littleGirl
2
小女孩。
man
3
大叔。
heavyMetal
4
重金属。
cold
5
感冒。
foreigner
6
外语腔。
trappedBeast
7
困兽。
fatso
8
肥宅。
strongCurrent
9
强电流。
heavyMachinery
10
重机械。
ethereal
11
空灵。

AudioReverbType

混响效果类型。
枚举值
说明
none
0
关闭特效。
ktv
1
KTV。
smallRoom
2
小房间。
auditorium
3
大会堂。
deep
4
低沉。
loud
5
洪亮。
metallic
6
金属声。
magnetic
7
磁性。

AudioEffectState

AudioEffectStore 对外提供的音效相关状态数据。
属性
类型
说明
audioChangerType
ValueListenable<AudioChangerType>
变声状态。
audioReverbType
ValueListenable<AudioReverbType>
混响状态。
isEarMonitorOpened
ValueListenable<bool>
耳返开启。
earMonitorVolume
ValueListenable<int>
耳返音量,取值范围 0 - 100。 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

使用示例

// 获取单例实例
final store = AudioEffectStore.shared;

// 订阅状态变化
store.audioEffectState.audioChangerType.addListener(() {
print("当前变声效果: ${store.audioEffectState.audioChangerType.value}");
});

store.audioEffectState.audioReverbType.addListener(() {
print("当前混响效果: ${store.audioEffectState.audioReverbType.value}");
});

// 设置变声效果
store.setAudioChangerType(AudioChangerType.littleGirl);

// 设置混响效果
store.setAudioReverbType(AudioReverbType.ktv);

// 开启耳返
store.setVoiceEarMonitorEnable(true);
store.setVoiceEarMonitorVolume(80);