Skip to content

提示词语音输入 PromptSpeech ​

Prompt 的语音输入由内置语音模块驱动,speechConfig 负责配置,PromptSpeechTrigger 负责开关,PromptSpeechPanel 负责录制面板。

基础使用 ​

给 Prompt 传入 speechConfig 后,在工具栏中放置 PromptSpeechTrigger 即可开始录音。mode 为 'click' 时点击开始,面板的确认入口提交、取消入口放弃;为 'hold' 时按住面板说话,松开后自动提交。识别结果会写入 Prompt 的输入内容。

浏览器内置语音识别可能存在兼容性问题和对网络环境有要求。

Speech Mode
Ask anything
隐藏源代码

自定义识别 ​

customRecognize 用于接管内置的语音识别,你可以接入自己的语音识别模型,或者直接把音频交给服务器处理。

下面的例子通过 Transformers.js 在浏览器本地运行 Whisper tiny 模型,对录音做本地转写;模型和运行时在页面加载时从 CDN 下载(首次合计约 45MB 流量,之后使用浏览器缓存),音频不会离开浏览器。

示例把 acceptTimeout 设为 -1,由自定义识别在转写完成后调用 end()。

Ask anything
隐藏源代码

API ​

PromptSpeechTriggerSlots ​

插槽参数描述版本
triggertoggle: () => void, recording: boolean, disabled: boolean语音开关区域,替换内置的按钮。0.2.1
iconrecording: boolean语音开关的图标。0.2.1

PromptSpeechPanelSlots ​

插槽参数描述版本
cancelspeech: PromptSpeechScope语音录制面板的取消入口。0.2.1
visualizerspeech: PromptSpeechScope语音录制面板的波形区域。0.2.1
textspeech: PromptSpeechScope语音识别的实时文本区域。0.2.1
acceptspeech: PromptSpeechScope语音录制面板的确认入口。0.2.1

PromptSpeechConfig 是 speechConfig 的类型,包含以下属性与嵌套配置类型。

PromptSpeechSpectrum ​

属性类型可选默认值描述版本
minHznumber是400频谱分析的最低频率。0.2.1
maxHznumber是8000频谱分析的最高频率。0.2.1
minDbnumber是-80映射为最小高度的分贝值。0.2.1
maxDbnumber是-25映射为最大高度的分贝值。0.2.1
smoothingnumber是0.5频谱变化的平滑系数。0.2.1
fftSizenumber是2048频谱分析使用的采样窗口大小。0.2.1

PromptSpeechBarConfig ​

属性类型可选默认值描述版本
countnumber是36波形柱的数量。0.2.1
minHeightnumber是4波形柱的最小高度。0.2.1
maxHeightnumber是48波形柱的最大高度。0.2.1

PromptSpeechConfig ​

属性类型可选默认值描述版本
modePromptSpeechMode是'click'语音识别的交互方式。0.2.1
langstring是浏览器内置语音识别的语言设置,取值为 BCP 47 语言标签,合法值见 BCP 47 语言标签。0.2.1
barConfigPromptSpeechBarConfig是波形柱的配置。0.2.1
spectrumConfigPromptSpeechSpectrum是音频频谱的配置。0.2.1
customRecognizeCustomRecognize是自定义的识别过程,接管内置的语音识别。0.2.1
acceptTimeoutnumber是3000确认录制后等待识别结果的最长时间。0.2.1

PromptSpeechScope ​

属性类型可选默认值描述版本
modePromptSpeechMode否当前的语音交互方式。0.2.1
recordingboolean否是否处于录音会话中。0.2.1
liveboolean否是否正在实时录音;按住模式下未按下时为 false。0.2.1
committingboolean否是否已确认录音并等待识别结果。0.2.1
disabledboolean否语音输入是否不可用。0.2.1
supportedboolean否浏览器是否支持内置语音识别。0.2.1
textstring否当前的识别文本。0.2.1
pendingboolean否识别文本是否为未定稿的临时结果。0.2.1
levelsnumber[]否波形柱的实时电平,取值 0 到 1。0.2.1
source'microphone' | 'simulated' | null否波形电平的来源。microphone 表示来自麦克风的实时频谱,simulated 表示由动画模拟生成的电平,null 表示没有电平来源。0.2.1
barConfigRequired<PromptSpeechBarConfig>否实际生效的波形柱配置,已应用默认值。0.2.1
enter() => void否开始录音。0.2.1
cancel() => void否放弃本次录音。0.2.1
accept() => void否确认录音并提交识别结果。0.2.1
press() => void否按住模式下按下。0.2.1
release() => void否按住模式下松开。0.2.1
ts
export type PromptSpeechScope = {
	mode: PromptSpeechMode
	recording: boolean
	live: boolean
	committing: boolean
	disabled: boolean
	supported: boolean
	text: string
	pending: boolean
	levels: number[]
	source: 'microphone' | 'simulated' | null
	barConfig: Required<PromptSpeechBarConfig>
	enter: () => void
	cancel: () => void
	accept: () => void
	press: () => void
	release: () => void
}

PromptSpeechMode ​

ts
export type PromptSpeechMode = 'click' | 'hold'

CustomRecognizeOptions ​

ts
export interface CustomRecognizeOptions {
	stream: MediaStream | null
	audio: () => Promise<Blob | null>
	setText: (text: string, final?: boolean) => void
	end: () => void
	onAccept: (handler: () => void) => void
	onClose: (handler: (committed: boolean) => void) => void
}

export type CustomRecognize = (options: CustomRecognizeOptions) => void