跳至主要內容

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