跳至主要內容

voice.off()

off() 方法會移除先前以 on() 方法註冊的事件監聽器。對於具備即時語音功能且長時間執行的應用程式,此方法特別適合用來清理資源並避免記憶體洩漏。

使用範例
「使用範例」的直接連結

import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
import chalk from 'chalk'

// Initialize a real-time voice provider
const voice = new OpenAIRealtimeVoice({
realtimeConfig: {
model: 'gpt-5.1-realtime',
apiKey: process.env.OPENAI_API_KEY,
},
})

// Connect to the real-time service
await voice.connect()

// Define the callback function
const writingCallback = ({ text, role }) => {
if (role === 'user') {
process.stdout.write(chalk.green(text))
} else {
process.stdout.write(chalk.blue(text))
}
}

// Register event listener
voice.on('writing', writingCallback)

// Later, when you want to remove the listener
voice.off('writing', writingCallback)

參數
「參數」的直接連結


event:

string
要停止監聽的事件名稱(例如 'speaking'、'writing'、'error')

callback:

function
先前傳遞給 on() 的同一個回呼函式

傳回值
「傳回值」的直接連結

此方法不會傳回值。

注意事項
「注意事項」的直接連結

  • 傳遞給 off() 的回呼必須與傳遞給 on() 的函式參照相同
  • 如果找不到該回呼,此方法不會有任何作用
  • 此方法主要搭配支援事件式通訊的即時語音 Provider 使用
  • 若對不支援事件的語音 Provider 呼叫此方法,系統會記錄警告且不執行任何動作
  • 移除事件監聽器對於避免長時間執行的應用程式發生記憶體洩漏十分重要