跳至主要內容

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 端點接受的具名別名,但不會包含在清單中