语音识别
该接口可用于执行语音识别,包括实时语音识别和音频文件的识别,能适应多种使用场景的需求。
功能概览
- 实时识别:从麦克风捕获实时音频并转录为文本。
- 文件识别:分析和转录已录制的音频文件。
- 多语言支持:指定识别的语言区域,用于识别不同语言。
- 中间结果:获取渐进式的转录结果,包括部分结果和最终结果。
- 自定义回调:通过事件监听器处理转录结果和音量变化等。
类型定义
RecognitionTaskHint
用于指定语音识别任务的类型提示:
'confirmation':适合诸如“yes”,“no”或“maybe”之类的指令。'dictation':类似键盘输入的语音听写。'search':识别搜索关键词。'unspecified':通用的语音识别。
SpeechRecognitionResult
表示语音识别的结果:
isFinal: 表示该转录结果是否完整且最终。text:bestTranscription.formattedString的便捷别名,为兼容旧代码而保留。bestTranscription: 置信度最高的转录(类型为SpeechTranscription)。transcriptions: 该段音频的所有候选转录,按置信度从高到低排序(类型为SpeechTranscription[])。metadata: 整段语音的汇总指标。仅在最终结果中提供(iOS 14.5+),类型为SpeechRecognitionMetadata。
SpeechTranscription
一段识别后的转录:
formattedString: 整段转录拼接为单一、可直接展示的字符串。segments: 组成该转录的逐词/逐句片段(类型为SpeechTranscriptionSegment[])。
说话速度(speakingRate)和平均停顿(averagePauseDuration)改由
SpeechRecognitionResult.metadata提供,且仅在最终结果中可用。
SpeechTranscriptionSegment
转录中的单个片段,通常对应一个词:
substring: 该片段的文本内容。substringRange:substring在父转录formattedString中的 UTF-16 字符范围({ location: number, length: number })。timestamp: 该片段在音频中开始时间的秒数偏移(相对音频起点)。duration: 该片段在音频中持续的秒数。confidence: 该片段识别结果的置信度,范围[0.0, 1.0]。仅最终结果有意义,中间结果通常为0。alternativeSubstrings: 识别器为该片段考虑过的备选词。
SpeechRecognitionMetadata
最终识别结果的汇总语音指标:
speakingRate: 说话速度(每分钟词数)。averagePauseDuration: 词间平均停顿时长(秒)。speechStartTimestamp: 用户开始说话在音频中的秒数偏移。speechDuration: 实际说话内容的总时长(秒)。
静态属性
支持的语言区域
supportedLocales: 返回该语音识别器支持的语言区域列表,如"en-US"、"fr-FR"或"zh-CN"等。
识别状态
isRecognizing: 指示当前是否有识别请求在进行中。
方法
开始实时识别
start(options: object): Promise<boolean>
从设备麦克风开始进行语音识别。
Options 参数
locale: 识别所用的语言区域字符串(可选)。partialResults: 是否返回中间结果(默认为true)。addsPunctuation: 是否自动添加标点符号(默认为false)。requestOnDeviceRecognition: 是否将音频数据留在本地进行识别(默认为false)。taskHint: 指定识别任务类型('confirmation','dictation','search','unspecified')。useDefaultAudioSessionSettings: 是否使用默认的音频会话设置(默认为true)。preferredInput: 首选输入端口。'auto'(默认)让系统自动选择;'builtInMic'强制使用 设备内置麦克风——即便此时连接了蓝牙耳机也不走耳机麦。配合默认音频会话设置,可以做到 「无线耳机播放 + 内置麦克风录音」的分离 I/O,避开蓝牙 HFP 链路对麦克风音质的降级。 当设备没有builtInMic可用时,会静默退回到系统默认输入。onResult: 用于处理识别结果的回调函数(参数类型为SpeechRecognitionResult)。onSoundLevelChanged: 音量变化时触发的回调函数(可选)。
使用示例
识别音频文件
recognizeFile(options: object): Promise<boolean>
对已录制的音频文件进行识别。
Options 参数
filePath: 音频文件的路径。locale: 识别所用的语言区域字符串(可选)。partialResults: 是否返回中间结果(默认为false)。addsPunctuation: 是否自动添加标点符号(默认为false)。requestOnDeviceRecognition: 是否将音频数据留在本地进行识别(默认为false)。taskHint: 指定识别任务类型('confirmation','dictation','search','unspecified')。onResult: 用于处理识别结果的回调函数(参数类型为SpeechRecognitionResult)。
使用示例
停止识别
stop(): Promise<void>
停止当前正在进行的语音识别。
使用示例
示例
实时识别并查看进度
识别音频文件
查看逐词时间戳与候选词
停止正在进行的识别
注意事项
- 在使用该 API 前,请先确保已获取必要的麦克风或文件访问权限。
- 可以使用
supportedLocales来确定可用于识别的语言。 - 为了获得最佳效果,请使用 iOS 支持的音频格式(例如
.wav,.m4a)作为输入。
