跳到主要内容

tts 文本转语音

官方文档

Text to Speech(TTS,文本转语音)

权限

"permissions": [
"tts"
]

方法

getVoices() 获取可用的语音(语言)列表

type EventType = 'start' | 'end' | 'word' | 'sentence' | 'marker' | 'interrupted' | 'cancelled' | 'error' | 'pause' | 'resume';
type TtsVoice = {
// 能够发送的所有回调事件类型
eventTypes?: EventType[];
// 扩展 ID
extensionId?: string;
// 语言
lang?: string;
// 使用远端资源,如果为 true,则合成引擎是远程网络资源。它可能会有更高的延迟,并可能产生带宽成本。
remote?: boolean;
// 语言名称
voiceName?: string;
}
chrome.tts.getVoices(
callback?: (voices: TtsVoice[]) => void,
)

ttsEngine.updateVoices() 更新语音列表

chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
callback?: function,
)

isSpeaking() 是否正在朗读

chrome.tts.isSpeaking(
callback?: (speaking: boolean) => void,
)

speak() 朗读

type TtsEvent = {
// 话语中当前字符的索引
charIndex?: number;
// errorMessage (错误消息)
errorMessage?: string;
// 话语下一部分的长度
length?: number;
// type 类型
type: EventType;
}
type TtsOptions = {
// 如果为 true,则在 TTS 已在进行中时将此话语排队。如果为 false(默认值),则在说出此新话语之前中断任何当前语音并刷新语音队列。
enqueue?: boolean;
// 扩展 ID
extensionId?: string;
// 语言
lang?: string;
// 音高,介于 0 和 2 之间(含),其中 0 表示最低,2 表示最高。1.0 对应于语音的默认音高
pitch?: number;
// 语速,介于 0 和 1 之间(含),其中 0 表示最低,1 表示最高。1.0 对应于语音的默认速率
rate?: number;
// 音量
volume?: number;
// 有兴趣接收的 TTS 事件类型。
desiredEventTypes?: EventType[];
// 语音必须支持的 TTS 事件类型。
requiredEventTypes?: EventType[];
// 语言名称
voiceName?: string;
onEvent?: (event: TtsEvent) => void;
}
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)

pause() 暂停朗读

chrome.tts.pause(
callback?: function,
)

resume() 恢复朗读

chrome.tts.resume(
callback?: function,
)

stop() 停止朗读

chrome.tts.stop(
callback?: function,
)

事件 chrome.ttsEngine

权限

若要实现 TTS 引擎,扩展必须声明“ttsEngine”权限,然后在扩展清单中声明它提供的所有语音

{
"permissions": ["ttsEngine"],
"tts_engine": {
"voices": [
{
"voice_name": "Alice",
"lang": "en-US",
"event_types": ["start", "marker", "end"]
},
{
"voice_name": "Pat",
"lang": "en-US",
"event_types": ["end"]
}
]
}
}

onSpeak() 开始朗读

type SpeakOptions = {
// 语言
lang?: string;
// 音高,介于 0 和 2 之间(含),其中 0 表示最低,2 表示最高。1.0 对应于语音的默认音高
pitch?: number;
// 语速,介于 0 和 1 之间(含),其中 0 表示最低,1 表示最高。1.0 对应于语音的默认速率
rate?: number;
// 音量
volume?: number;
// 语言名称
voiceName?: string;
}
chrome.ttsEngine.onSpeak.addListener(
callback: (
utterance: string,
options: SpeakOptions,
sendTtsEvent: function
) => void
)

onSpeakWithAudioStream() 开始朗读

ttsEngine.onSpeak 的不同之处在于,Chrome 提供音频播放服务并处理调度 tts 事件。

type SpeakOptions = {
// 语言
lang?: string;
// 音高,介于 0 和 2 之间(含),其中 0 表示最低,2 表示最高。1.0 对应于语音的默认音高
pitch?: number;
// 语速,介于 0 和 1 之间(含),其中 0 表示最低,1 表示最高。1.0 对应于语音的默认速率
rate?: number;
// 音量
volume?: number;
// 语言名称
voiceName?: string;
}
type AudioStreamOptions = {
// 音频缓冲区中的样本数
bufferSize?: number;
// 音频缓冲区中预期的采样率
sampleRate?: number;
}
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
utterance: string,
options: SpeakOptions,
audioStreamOptions: AudioStreamOptions,
sendTtsAudio: function,
sendError: function
callback: (
utterance: string,
options: SpeakOptions,
sendTtsEvent: function,
audioStreamId: number
) => void
)

onStop() 停止朗读

chrome.ttsEngine.onStop.addListener(
callback: () => void
)

onPaused() 暂停朗读

chrome.ttsEngine.onPaused.addListener(
callback: () => void
)

onResumed() 恢复朗读

chrome.ttsEngine.onResumed.addListener(
callback: () => void
)