Aller au contenu principal

CompositeVoice

La classe CompositeVoice permet de combiner différents Providers vocaux pour les opérations de synthèse et de transcription vocales. Cette possibilité est particulièrement utile lorsque vous souhaitez choisir le meilleur Provider pour chaque opération, par exemple OpenAI pour la transcription vocale et PlayAI pour la synthèse vocale.

CompositeVoice prend en charge les Providers vocaux de Mastra et les Providers de modèles AI SDK.

Paramètres du constructeur
Lien direct vers Paramètres du constructeur

config:

object
Objet de configuration du service vocal composite

config.input?:

MastraVoice | TranscriptionModel
Provider vocal ou modèle de transcription AI SDK à utiliser pour les opérations de transcription vocale. Les modèles AI SDK sont automatiquement encapsulés.

config.output?:

MastraVoice | SpeechModel
Provider vocal ou modèle de synthèse AI SDK à utiliser pour les opérations de synthèse vocale. Les modèles AI SDK sont automatiquement encapsulés.

config.realtime?:

MastraVoice
Provider vocal à utiliser pour les opérations de conversion parole-parole en temps réel

Méthodes
Lien direct vers Méthodes

speak()
Lien direct vers speak

Convertit du texte en parole à l’aide du Provider de synthèse configuré.

input:

string | NodeJS.ReadableStream
Texte à convertir en parole

options?:

object
Options propres au Provider transmises au Provider de synthèse

Remarques :

  • Si aucun Provider de synthèse n’est configuré, cette méthode lève une erreur
  • Les options sont transmises au Provider de synthèse configuré
  • Renvoie un flux de données audio

listen()
Lien direct vers listen

Convertit la parole en texte à l’aide du Provider de transcription configuré.

audioStream:

NodeJS.ReadableStream
Flux audio à convertir en texte

options?:

object
Options propres au Provider transmises au Provider de transcription

Remarques :

  • Si aucun Provider de transcription n’est configuré, cette méthode lève une erreur
  • Les options sont transmises au Provider de transcription configuré
  • Renvoie une chaîne ou un flux de texte transcrit, selon le Provider

getSpeakers()
Lien direct vers getspeakers

Renvoie une liste des voix disponibles auprès du Provider de synthèse, dans laquelle chaque élément contient :

voiceId:

string
Identifiant unique de la voix

key?:

value
Propriétés supplémentaires de la voix qui varient selon le Provider (par exemple, nom et langue)

Remarques :

  • Renvoie uniquement les voix du Provider de synthèse
  • Si aucun Provider de synthèse n’est configuré, renvoie un tableau vide
  • Chaque objet de voix possède au moins une propriété voiceId
  • Les propriétés supplémentaires de la voix dépendent du Provider de synthèse

Exemples d’utilisation
Lien direct vers Exemples d’utilisation

Utiliser des Providers vocaux Mastra
Lien direct vers Utiliser des Providers vocaux Mastra

import { CompositeVoice } from '@mastra/core/voice'
import { OpenAIVoice } from '@mastra/voice-openai'
import { PlayAIVoice } from '@mastra/voice-playai'

// Create voice providers
const openai = new OpenAIVoice()
const playai = new PlayAIVoice()

// Use OpenAI for listening (speech-to-text) and PlayAI for speaking (text-to-speech)
const voice = new CompositeVoice({
input: openai,
output: playai,
})

// Convert speech to text using OpenAI
const text = await voice.listen(audioStream)

// Convert text to speech using PlayAI
const audio = await voice.speak('Hello, world!')

Utiliser des Providers de modèles AI SDK
Lien direct vers Utiliser des Providers de modèles AI SDK

Vous pouvez transmettre directement à CompositeVoice des modèles de transcription et de synthèse AI SDK :

import { CompositeVoice } from '@mastra/core/voice'
import { openai } from '@ai-sdk/openai'
import { elevenlabs } from '@ai-sdk/elevenlabs'

// Use AI SDK models directly - they will be auto-wrapped
const voice = new CompositeVoice({
input: openai.transcription('whisper-1'), // AI SDK transcription
output: elevenlabs.speech('eleven_turbo_v2'), // AI SDK speech
})

// Works the same way as with Mastra providers
const text = await voice.listen(audioStream)
const audio = await voice.speak('Hello from AI SDK!')

Combiner les Providers
Lien direct vers Combiner les Providers

Vous pouvez combiner les Providers Mastra avec les modèles AI SDK :

import { CompositeVoice } from '@mastra/core/voice'
import { PlayAIVoice } from '@mastra/voice-playai'
import { groq } from '@ai-sdk/groq'

const voice = new CompositeVoice({
input: groq.transcription('whisper-large-v3'), // AI SDK for STT
output: new PlayAIVoice(), // Mastra for TTS
})