Composables

useAudioRecorder

Registrazione audio dal microfono con MediaRecorder, audio solo in memoria e microfono rilasciato a fine registrazione.

Panoramica

useAudioRecorder (dalla 2.17.0) avvia e ferma una registrazione con MediaRecorder, conta i secondi trascorsi e restituisce l'audio come Blob in memoria. Non salva niente. Il microfono viene rilasciato a fine registrazione e quando lo scope del componente si chiude, anche se la registrazione è ancora in corso.

È la registrazione usata da VoiceTranscriptionBlock.

Utilizzo

<script setup lang="ts">
import { AudioRecorderError, useAudioRecorder } from '@pzeta/vue-form'

const { start, stop, isRecording, elapsedSeconds } = useAudioRecorder()

async function avvia() {
  try {
    await start()
  } catch (err) {
    if (err instanceof AudioRecorderError && err.code === 'denied') {
      avviso('Consenti il microfono nelle impostazioni del browser')
    }
  }
}

async function ferma() {
  const { audio, durationSeconds } = await stop()
  await servizio.trascrivi(audio) // l'audio resta solo in questa variabile
}
</script>

API

MembroTipoDescrizione
isRecordingReadonly<ShallowRef<boolean>>true mentre il microfono registra
elapsedSecondsReadonly<ShallowRef<number>>Secondi dall'avvio, aggiornati ogni secondo
start()() => Promise<void>Chiede il microfono e avvia; lancia AudioRecorderError
stop()() => Promise<{ audio: Blob; durationSeconds: number }>Ferma, restituisce l'audio e rilascia il microfono

Errori di avvio

start() lancia AudioRecorderError, con il motivo in code:

codeQuando
deniedL'utente o la policy hanno negato il microfono (NotAllowedError, SecurityError)
notFoundNessun microfono disponibile (NotFoundError, OverconstrainedError)
unsupportedIl browser non ha getUserMedia o MediaRecorder
failedOgni altro errore