AudioEffectStore

最近更新时间:2026-02-13 14:12:32

我的收藏

简介

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

功能特性

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

可订阅数据

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

API 列表

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

获取实例

AudioEffectStore.shared

获取单例实例。

变声设置

setAudioChangerType

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

混响设置

setAudioReverbType

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

耳返设置

setVoiceEarMonitorEnable

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

setVoiceEarMonitorVolume

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

重置

reset

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

数据结构

AudioChangerType

变声效果类型。
枚举值
说明
NONE
0
关闭特效。
CHILD
1
熊孩子。
LITTLE_GIRL
2
小女孩。
MAN
3
大叔。
HEAVY_METAL
4
重金属。
COLD
5
感冒。
FOREIGNER
6
外语腔。
TRAPPED_BEAST
7
困兽。
FATSO
8
肥宅。
STRONG_CURRENT
9
强电流。
HEAVY_MACHINERY
10
重机械。
ETHEREAL
11
空灵。

AudioReverbType

混响效果类型。
枚举值
说明
NONE
0
关闭特效。
KTV
1
KTV。
SMALL_ROOM
2
小房间。
AUDITORIUM
3
大会堂。
DEEP
4
低沉。
LOUD
5
洪亮。
METALLIC
6
金属声。
MAGNETIC
7
磁性。

AudioEffectState

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

使用示例

// 获取单例实例
val store = AudioEffectStore.shared()

// 订阅状态变化
lifecycleScope.launch {
store.audioEffectState.audioChangerType.collect { type ->
println("当前变声效果: $type")
}
}

lifecycleScope.launch {
store.audioEffectState.audioReverbType.collect { type ->
println("当前混响效果: $type")
}
}

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

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

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