跳转至

语音交互

语音对话、状态形象、语音输入和设备选择。

语音对话模式

通过同一个 controller 完成免手持语音对话。

语音对话模式

API VoiceMode(controller, onClose)
依赖模块 ai-elements-ui
API 文档 VoiceMode

声明 RECORD_AUDIO 并完成权限流程,需要可用的识别与 TTS 服务。onClose 应关闭外层对话框或页面。

import androidx.compose.runtime.Composable
import dev.ai.elements.core.chat.ChatController
import dev.ai.elements.ui.voice.VoiceMode
@Composable
fun VoiceModeExample(controller: ChatController, onClose: () -> Unit) {
    VoiceMode(controller, onClose = onClose)
}

语音状态形象

展示待机、倾听、思考与说话状态。

语音状态形象

API Persona(state, size, level)
AI Elements Persona
依赖模块 ai-elements-ui
API 文档 Persona

只负责视觉状态,不会录音或朗读。倾听和说话时可把音量传入 level。

import androidx.compose.runtime.Composable
import dev.ai.elements.ui.voice.Persona
import dev.ai.elements.ui.voice.PersonaState
@Composable
fun PersonaExample() {
    Persona(PersonaState.THINKING)
}

语音输入

使用平台语音识别把讲话转为输入文本。

语音输入

API SpeechInput(onTranscript, state)
AI Elements SpeechInput
依赖模块 ai-elements-ui
API 文档 SpeechInput

声明 RECORD_AUDIO。state 管理识别器生命周期;失败时展示 speech.error,并在 onTranscript 中区分中间结果与最终结果。

import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import dev.ai.elements.ui.voice.SpeechInput
import dev.ai.elements.ui.voice.rememberSpeechInputState
@Composable
fun SpeechInputExample() {
    val speech = rememberSpeechInputState()
    var transcript by rememberSaveable { mutableStateOf("") }
    Column { SpeechInput(onTranscript = { text, _ -> transcript = text }, state = speech); Text(transcript) }
}

麦克风与音色选择

选择输入设备和朗读音色。

麦克风与音色选择

API MicSelector(selected, onSelect), VoiceSelector(voices, selectedId, onSelect)
AI Elements MicSelector, VoiceSelector
依赖模块 ai-elements-ui
API 文档 MicSelector

选择器只报告选项;请另行更新音频引擎或 SpeechSettings。可用设备与音色依赖当前系统。

import androidx.compose.foundation.layout.Column
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import dev.ai.elements.ui.voice.MicSelector
import dev.ai.elements.ui.voice.VoiceOption
import dev.ai.elements.ui.voice.VoiceSelector
@Composable
fun VoiceSelectorsExample() {
    var mic by remember { mutableStateOf<android.media.AudioDeviceInfo?>(null) }
    var voice by rememberSaveable { mutableStateOf("default") }
    Column {
        MicSelector(mic, onSelect = { mic = it })
        VoiceSelector(listOf(VoiceOption("default", "Default")), voice, onSelect = { voice = it.id })
    }
}

Read this page in English