Mistral
MistralVoice 類別使用 Mistral 的 Voxtral 音訊模型,提供文字轉語音與語音轉文字功能。它支援緩衝與串流 TTS、包含說話者分離的批次轉錄,以及透過參考音訊複製語音。
使用範例「使用範例」的直接連結
import { MistralVoice } from '@mastra/voice-mistral'
const voice = new MistralVoice()
// Text-to-speech
const audioStream = await voice.speak('Hello, how can I help you?', {
responseFormat: 'mp3',
})
// Speech-to-text
const text = await voice.listen(audioStream, {
language: 'en',
})
// List available voices
const speakers = await voice.getSpeakers()
import { MistralVoice } from '@mastra/voice-mistral'
// Initialize with specific configuration
const voice = new MistralVoice({
speechModel: {
name: 'voxtral-mini-tts-2603',
apiKey: 'your-mistral-api-key',
},
listeningModel: {
name: 'voxtral-mini-latest',
apiKey: 'your-mistral-api-key',
},
speaker: 'en_paul_neutral',
})
建構函式參數「建構函式參數」的直接連結
speechModel?:
MistralModelConfig
= { name: 'voxtral-mini-tts-2603' }
文字轉語音合成的設定。
MistralModelConfig
name?:
string
語音合成使用的模型 ID。
apiKey?:
string
Mistral API 金鑰。未提供時會改用 MISTRAL_API_KEY 環境變數。
listeningModel?:
MistralModelConfig
= { name: 'voxtral-mini-latest' }
語音轉文字辨識的設定。
MistralModelConfig
name?:
string
轉錄使用的模型 ID。若要鎖定版本,請使用 'voxtral-mini-2507'。
apiKey?:
string
Mistral API 金鑰。未提供時會改用 MISTRAL_API_KEY 環境變數。
speaker?:
string
= 'en_paul_neutral'
語音合成的預設語音 ID。可從 getSpeakers() 取得可用的 ID。
方法「方法」的直接連結
speak(input, options?)「speakinput-options」的直接連結
使用 Mistral 的 Voxtral TTS 模型將文字轉換成語音。支援緩衝與串流輸出。
input:
string | NodeJS.ReadableStream
要轉換成語音的文字或文字串流。
options?:
MistralSpeakOptions
設定選項。
MistralSpeakOptions
speaker?:
string
要使用的語音 ID。會覆寫建構函式的預設值。
responseFormat?:
'pcm' | 'wav' | 'mp3' | 'flac' | 'opus'
音訊輸出格式。使用 'pcm' 可獲得最低延遲的串流。
refAudio?:
string
用於單次語音複製、以 Base64 編碼的參考音訊(至少 2 至 3 秒)。
model?:
string
覆寫此呼叫使用的語音模型。
stream?:
boolean
啟用串流 TTS。音訊區塊會在抵達時寫入串流。
傳回:Promise<NodeJS.ReadableStream>
listen(audioStream, options?)「listenaudiostream-options」的直接連結
使用 Mistral 的 Voxtral 轉錄模型轉錄音訊。支援說話者分離、情境偏向,以及時間戳記的詳細程度。
audioStream:
NodeJS.ReadableStream
要轉錄的音訊串流。
options?:
MistralListenOptions
設定選項。
MistralListenOptions
language?:
string
語言程式碼(例如 'en')。指定後可提高準確度。
diarize?:
boolean
啟用說話者分離。
contextBias?:
string[]
用於引導詞彙辨識的單字或片語。
timestampGranularities?:
('segment' | 'word')[]
轉錄片段的時間戳記詳細程度。
filetype?:
string
輸入串流的音訊副檔名提示。
傳回:Promise<string>
getSpeakers()「getspeakers」的直接連結
從 Mistral Voices API 取得可用的預設語音。每個項目包含:
voiceId:
string
語音的唯一識別碼。
name:
string
語音的顯示名稱。
languages?:
string[]
語音支援的語言。
gender?:
string | null
語音的性別。
getListener()「getlistener」的直接連結
傳回 { enabled: true }。
注意事項「注意事項」的直接連結
- API 金鑰可透過建構函式選項或
MISTRAL_API_KEY環境變數提供 - TTS 支援 9 種語言:英文、法文、西班牙文、葡萄牙文、義大利文、荷蘭文、德文、印地文、阿拉伯文
- STT 支援 13 種語言:英文、中文、印地文、西班牙文、阿拉伯文、法文、葡萄牙文、俄文、德文、日文、韓文、義大利文、荷蘭文
- 為獲得最佳結果,每個請求的 TTS 輸入文字應少於 300 個單字
- 每個 STT 請求最多支援 3 小時的音訊
- 透過
refAudio複製語音時,至少需要 2 至 3 秒的參考音訊 getSpeakers()會傳回使用 UUID 識別碼的預設語音。預設的en_paul_neutral是 TTS 端點接受的具名別名,但不會包含在清單中