QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

Recursos de áudio

Captura de áudio, reprodução e configuração de codec AOQ SDK

O SDK do cliente AOQ fornece recursos de áudio abrangentes, incluindo gerenciamento de alto-falante, mixagem de arquivos, injeção de fluxo de áudio externo e retornos de chamada de dados de quadro de áudio, em Android (Java), iOS (Objective-C) e HarmonyOS (ArkTS).

Captura de áudio

A captura de áudio abre o microfone do dispositivo e alimenta dados de áudio em tempo real no pipeline de codificação do SDK. O SDK oferece suporte a dois modos de captura:

Parâmetros de configuração

Parâmetro Tipo Padrão Descrição
éExterno bool falso Se deve usar o modo de captura externa
isVoipMode bool falso Se deve ativar o modo VoIP (hardware AEC). Válido no celular. Se a captura e a reprodução estiverem configuradas, o que for definido primeiro terá efeito.
canal interno 1 Número de canais de captura. Suporta 1 (mono) ou 2 (estéreo).

Referência da API

Função Android iOS HarmonyOS
Iniciar captura startAudioCapture(config) startAudioCapture:config: startAudioCapture(config)
Pare a captura stopAudioCapture() stopAudioCapture stopAudioCapture()
Ativar/ativar som muteAudioCapture(mute) muteAudioCapture: muteAudioCapture(mute)

Exemplo

Android

AoqAudioCaptureConfig config = new AoqAudioCaptureConfig();
config.isVoipMode = true;
config.channel = 1;
engine.startAudioCapture(config);

iOS

AoqAudioCaptureConfig *config = [[AoqAudioCaptureConfig alloc] init];
config.isVoipMode = YES;
config.channel = 1;
[engine startAudioCapture:config];

HarmoniaOS

const config: AoqAudioCaptureConfig = { isVoipMode: true, channel: 1 };
engine.startAudioCapture(config);

Reprodução de áudio

A reprodução de áudio renderiza dados de áudio remotos recebidos para o alto-falante ou fone de ouvido local. O SDK oferece suporte a controles avançados, incluindo pausa/retomada com fade in/out e interrupção do turno atual de uma conversa de áudio.

Parâmetros de configuração

Parâmetro Tipo Padrão Descrição
isVoipMode bool falso Se deve ativar o modo VoIP (hardware AEC). Válido no celular. Se a captura e a reprodução estiverem configuradas, o que for definido primeiro terá efeito.
isDefaultSpeaker bool verdade Se deve usar o alto-falante por padrão. Válido em dispositivos móveis e apenas em modo não VoIP.
éExterno bool falso Se deve usar o modo de reprodução externa.
canal interno 1 Número de canais de reprodução. Suporta 1 (mono) ou 2 (estéreo).

Referência da API

Função Android iOS HarmonyOS
Iniciar a reprodução startAudioPlayer(config) startAudioPlayer:config: startAudioPlayer(config)
Pare a reprodução stopAudioPlayer() stopAudioPlayer stopAudioPlayer()
Pausar a reprodução pauseAudioPlayer(fadeMs) pauseAudioPlayer: pauseAudioPlayer(fadeMs)
Retomar a reprodução resumeAudioPlayer(fadeMs) resumeAudioPlayer: resumeAudioPlayer(fadeMs)
Interromper conversa interruptAudioPlayer(trackType, fadeMs) interruptAudioPlayer:fadeMs: interruptAudioPlayer(trackType, fadeMs)

parâmetro fadeMs: a duração do fade-in ou fade-out em milissegundos ao pausar ou retomar a reprodução. Defina como 0 para uma troca imediata.

Gerenciamento de alto-falantes

Alterne o dispositivo de saída de áudio entre o alto-falante e o fone de ouvido.

Função Android iOS HarmonyOS
Trocar alto-falante enableSpeakerphone(enable) enableSpeakerphone: enableSpeakerphone(enable)
Consultar estado do alto-falante isSpeakerphoneEnabled() isSpeakerphoneEnabled isSpeakerphoneEnabled()

A troca de alto-falante só é permitida no modo VoIP. Quando não estiver no modo VoIP, ligar enableSpeakerphone desencadeia um OnError(AoqECAudioDeviceEarpieceRequiresVoipMode) notificação de erro.

Comportamento específico do iOS: os dispositivos iPad têm apenas modo alto-falante. Quando a categoria AVAudioSession não é PlayAndRecord, esse método sempre retorna SIM.

Configuração do codec de áudio

Configure o formato de codificação, taxa de amostragem, contagem de canais e taxa de bits para uplink de áudio (codificador) e downlink (decodificador). Essas configurações determinam o formato de publicação e extração de streams.

Parâmetros de configuração

Parâmetro Tipo Padrão Descrição
trackType AoqTrackType Áudio Tipo de faixa de áudio. Atualmente, apenas um fluxo de áudio é suportado.
tipo de codec AoqEncoderType ÁudioOpus Tipo de codificação: AudioPCM(1) ​​ou AudioOpus(2)
taxa de amostra interno 48.000 Taxa de amostragem. Opus suporta 8K/16K/48K. PCM suporta 8K/16K/32K/48K.
canal interno 1 Contagem de canais. Suporta 1 (mono) ou 2 (estéreo).
taxa de bits interno 32.000 Taxa de bits em bps.

Referência da API

Função Android iOS HarmonyOS
Definir configuração do codificador setAudioEncoderConfig(config) setAudioEncoderConfig: setAudioEncoderConfig(config)
Definir configuração do decodificador setAudioDecoderConfig(config) setAudioDecoderConfig: setAudioDecoderConfig(config)

Formatos de codificação suportados

Valor enum Número Descrição
AoqEncoderTypeAudioPCM 1 Áudio PCM bruto
AoqEncoderTypeAudioOpus 2 Codificação Opus

Mixagem de arquivos de áudio

Misture um arquivo de áudio local no fluxo de áudio atual para publicação e/ou reprodução local. Cada arquivo de áudio é identificado por um código atribuído pelo aplicativo fileId, permitindo que várias instâncias de arquivo sejam gerenciadas simultaneamente.

Misturando parâmetros de configuração

Parâmetro Tipo Padrão Descrição
nome do arquivo Corda - Caminho do arquivo de áudio (incluindo nome do arquivo)
ciclos interno -1 Número de loops. -1 significa loop indefinidamente.
startPosMs longo 0 Posição inicial de reprodução em milissegundos
publicarVolume interno 100 Volume de publicação [0-100]
volume de reprodução interno 100 Volume de reprodução local [0-100]

Referência da API

Função Android iOS HarmonyOS
Iniciar a reprodução startAudioFile(fileId, config) startAudioFile:config: startAudioFile(fileId, config)
Pare a reprodução stopAudioFile(fileId) stopAudioFile: stopAudioFile(fileId)
Pausa pauseAudioFile(fileId) pauseAudioFile: pauseAudioFile(fileId)
Currículo resumeAudioFile(fileId) resumeAudioFile: resumeAudioFile(fileId)
Obtenha a duração do arquivo getAudioFileDuration(fileId) getAudioFileDuration: getAudioFileDuration(fileId)
Obtenha a posição atual getAudioFileCurrentPosition(fileId) getAudioFileCurrentPosition: getAudioFileCurrentPosition(fileId)
Procure se posicionar setAudioFilePositionMillis(fileId, pos) setAudioFilePositionMillis:positionMillis: setAudioFilePositionMillis(fileId, pos)
Definir volume setAudioFileVolume(fileId, type, vol) setAudioFileVolume:type:volume: setAudioFileVolume(fileId, type, vol)
Obtenha volume getAudioFileVolume(fileId, type) getAudioFileVolume:type: getAudioFileVolume(fileId, type)

Direção do volume (tipo): AoqAudioStreamPublish(0) controla o volume de publicação. AoqAudioStreamPlayout(1) controla o volume de reprodução local.

Retornos de chamada de estado

Código do estado Valor Descrição
AoqAudioFileNone 0 Estado inicial
AoqAudioFileIniciado 1 A reprodução começou
AoqAudioFileStopped 2 A reprodução parou
AoqAudioFilePausado 3 Reprodução pausada
AoqAudioFileRetomado 4 A reprodução foi retomada
AoqAudioFileEnd 5 A reprodução terminou
AoqAudioFileBuffering 6 Buffer
AoqAudioFileBufferingEnd 7 O buffer terminou
AoqAudioFileFalha 8 Falha na reprodução

Fluxos de áudio externos

Os fluxos de áudio externos permitem injetar dados de áudio PCM gerados pelo aplicativo no pipeline de áudio do SDK para publicação e/ou reprodução local. Os casos de uso típicos incluem saída de síntese TTS, saída de áudio do modelo AI e efeitos sonoros de fundo. Cada fluxo de áudio externo é identificado por um código atribuído ao aplicativo streamId.

Parâmetros de configuração

Parâmetro Tipo Padrão Descrição
trackType AoqTrackType Áudio Tipo de faixa de áudio
tipo de codec AoqEncoderType ÁudioPCM Formato de fluxo de áudio
canais interno 1 Contagem de canais
taxa de amostra interno 48.000 Taxa de amostragem. Suporta 8/12/16/24/32/44,1/48/64/88,2/96/176,4/192 kHz.
volume de reprodução interno 100 Volume de reprodução local [0-100]
publicarVolume interno 100 Volume de publicação [0-100]
maxBufferDuration interno 600000 Duração máxima do buffer em milissegundos. Intervalo válido: [100, ~]. O push falhará se o buffer estiver cheio.
habilitar3A bool falso Se deve aplicar o processamento 3A ao PCM de entrada

Referência da API

Função Android iOS HarmonyOS
Adicionar fluxo externo addAudioExternalStream(streamId, config) addAudioExternalStream:config: addAudioExternalStream(streamId, config)
Enviar dados de áudio pushAudioExternalStreamData(streamId, data) pushAudioExternalStreamData:data: pushAudioExternalStreamData(streamId, data)
Definir volume setAudioExternalStreamVolume(streamId, type, vol) setAudioExternalStreamVolume:type:volume: setAudioExternalStreamVolume(streamId, type, vol)
Obtenha volume getAudioExternalStreamVolume(streamId, type) getAudioExternalStreamVolume:type: getAudioExternalStreamVolume(streamId, type)
Limpar buffer clearAudioExternalStreamBuffer(streamId, fadeoutMs) clearAudioExternalStreamBuffer:fadeoutMs: clearAudioExternalStreamBuffer(streamId, fadeoutMs)
Remover fluxo removeAudioExternalStream(streamId) removeAudioExternalStream: removeAudioExternalStream(streamId)

Práticas recomendadas para envio de dados

Retornos de chamada de quadro de áudio

Os retornos de chamada de quadro de áudio permitem obter dados PCM brutos em diferentes pontos do pipeline de áudio, para uso em análise de áudio, processamento personalizado, gravação e cenários semelhantes.

Posições de fontes de dados suportadas

Fonte de dados Valor enum Descrição
Capturado 0 Dados de áudio brutos após captura, antes do processamento 3A
Processo Capturado 1 Dados de áudio após processamento 3A. Os retornos de chamada começam somente após uma conexão bem-sucedida.
Publicar 2 Dados de áudio prestes a serem publicados. Requer uma conexão bem-sucedida.
Reprodução 3 Dados de áudio prestes a serem reproduzidos (downlink remoto)

Parâmetros de configuração de retorno de chamada

Parâmetro Tipo Padrão Descrição
taxa de amostra interno 48.000 Taxa de amostragem para áudio de retorno de chamada
canais interno 1 Contagem de canais para áudio de retorno de chamada. Suporta 1 ou 2.
modo AoqAudioObserverMode Somente leitura Modo somente leitura (0) ou leitura-gravação (1)

Etapas de uso

  1. Cadastre o observador: Ligue setAudioFrameObserver para definir o ouvinte de retorno de chamada do quadro de áudio.
  2. Habilitar a fonte de dados: Ligue enableAudioFrameObserver para selecionar a posição da fonte de dados e iniciar retornos de chamada.
  3. Tratar dados de retorno de chamada: processa dados PCM no retorno de chamada.

Referência da API

Função Android iOS HarmonyOS
Cadastrar observador setAudioFrameObserver(listener) setAudioFrameObserver: setAudioFrameObserver(observer)
Habilitar retornos de chamada enableAudioFrameObserver(enabled, source, config) enableAudioFrameObserver:audioSource:config: enableAudioFrameObserver(enabled, source, config)

Métodos de retorno de chamada

Retorno de chamada Android iOS HarmonyOS
Dados capturados onCapturedAudioFrame(frame) onCapturedAudioFrame: onCapturedAudioFrame(frame)
Dados pós-3A onProcessCapturedAudioFrame(frame) onProcessCapturedAudioFrame: onProcessCapturedAudioFrame(frame)
Publicar dados onPublishAudioFrame(trackType, frame) onPublishAudioFrame:frame: onPublishAudioFrame(trackType, frame)
Dados de reprodução onPlaybackAudioFrame(frame) onPlaybackAudioFrame: onPlaybackAudioFrame(frame)

Estado de áudio e roteamento

O SDK monitora automaticamente as alterações de estado do dispositivo de áudio e as opções de roteamento, além de notificar a camada de aplicação por meio de retornos de chamada.

Códigos de estado do dispositivo

Código do estado Valor Descrição
AoqAudioDeviceNenhum 0 Estado inicial
RegistroIniciando 1 Captura começando
Registro iniciado 2 Captura iniciada
Parada de registro 3 Parada de captura
Registro parado 4 Captura interrompida
Falha na gravação 5 Falha na captura
JogarIniciando 6 Início da reprodução
Jogo iniciado 7 A reprodução começou
Parada de jogo 8 Parada de reprodução
PlayStopped 9 A reprodução parou
Falha na reprodução 10 Falha na reprodução

Tipos de roteamento de dispositivos

Rota Valor Descrição
Padrão 0 Padrão
Fone de ouvido 1 Fone de ouvido com fio
Fone de ouvido 2 Fone de ouvido
Fone de ouvidoNoMic 3 Fone de ouvido sem microfone
Viva-voz 4 Palestrante
Usb 5 Dispositivo USB
Bluetooth 6 Bluetooth SCO
BluetoothA2dp 7 Bluetooth A2DP

Referência de retorno de chamada

Retorno de chamada Android iOS HarmonyOS
Mudança de estado do dispositivo onAudioDeviceStateChanged(state) onAudioDeviceStateChanged: onAudioDeviceStateChanged(state, reason)
Mudança de rota onAudioDeviceRouteChanged(routeType) onAudioDeviceRouteChanged: onAudioDeviceRouteChanged(routeType)
Dispositivo interrompido onAudioDeviceInterrupted(interrupt) onAudioDeviceInterrupted: onAudioDeviceInterrupted(interrupt)
Estado do arquivo onAudioFileState(state) onAudioFileState: onAudioFileState(fileId, stateCode, errorCode)

Erro de áudio e códigos de aviso

Códigos de erro de áudio

Código de erro Valor Descrição
AoqErrorCodeÁudio 100 Erro geral de áudio
ÁudioExternalBufferFull 110 Buffer externo cheio
Dispositivo de áudio 120 Erro geral do dispositivo
Gravação AuthFalha 121 Permissão de microfone negada
GravaçãoOcupado 122 Microfone em uso por outro processo
GravaçãoFundoIniciar 123 Começou a gravar em segundo plano
GravaçãoStartFail 124 Falha ao iniciar a gravação
PlayoutOcupado 125 Dispositivo de reprodução em uso por outro processo
PlayoutBackgroundIniciar 126 Iniciou a reprodução em segundo plano
PlayoutStartFail 127 Falha ao iniciar a reprodução
Fone de ouvidoRequerVoipMode 128 O fone de ouvido requer que o modo VoIP esteja ativado

Códigos de aviso de áudio

Código de aviso Valor Descrição
AoqWCAudio 100 Aviso sonoro geral
ÁudioUivando 101 Uivo detectado
Dispositivo de áudio 120 Aviso geral do dispositivo
MicEnumerateError 121 Erro de enumeração de microfone
MicStartTimeout 122 Tempo limite de início do microfone
Erro de gravação 123 Erro de gravação
SpeakerEnumerateError 124 Erro de enumeração de alto-falantes
Alto-falanteStartTimeout 125 Tempo limite de início do alto-falante
Erro de reprodução 126 Erro de reprodução

Somente iOS: controle AVAudioSession

No iOS, o setAudioSessionRestriction A API oferece controle refinado sobre como o SDK gerencia o sistema AVAudioSession.

Controle Descrição
Definir categoria Se o SDK pode definir a categoria da sessão
Configurar sessão Se o SDK pode configurar parâmetros de sessão
Desativar sessão Se o SDK pode desativar a sessão
Ativar Sessão Se o SDK pode ativar a sessão

Passe uma combinação bit a bit de valores de restrição para limitar o controle do SDK sobre AVAudioSession e evitar conflitos com outros componentes de áudio na camada de aplicativo.