iPad Safari 不支持 HTML5 SpeechRecognition API,因其未实现且苹果明确禁用;可行方案是用 MediaRecorder 录音后上传至 AssemblyAI 等云服务识别,或通过 Cordova/Capacitor 调用原生 SFSpeechRecognizer。
iPad 上用 HTML5 的 Web Speech API 做语音转文字(SpeechRecognition)本身就不被 Safari 支持——这不是“慢”,而是根本不能用。
SpeechRecognition
iOS/iPadOS 的 Safari 长期禁用 SpeechRecognition 接口(包括 webkitSpeechRecognition),即使在 iOS 17+ 或 iPadOS 17+ 中也返回 undefined。这不是配置问题,是苹果明确不开放该 API。
new webkitSpeechRecognition(
) 会直接报错:ReferenceError: Can't find variable: webkitSpeechRecognition
navigator.mediaDevices.getUserMedia() 可用,但录音 ≠ 语音识别;识别必须依赖系统级服务或第三方 SDKSpeechRecognition 在 Safari 全系(含 iPad)中未实现,[caniuse.com 明确标注为 “No support”](https://caniuse.com/speech-recognition)绕过浏览器限制,只能借助「原生能力桥接」或「纯 Web 兼容替代路径」:
Cordova 或 Capacitor 封装 Web App,并集成原生插件(如 cordova-plugin-speechrecognition),调用 iOS 系统的 SFSpeechRecognizer
AssemblyAI、Deepgram 或 Whisper API,前端只负责录音(MediaRecorder),音频文件上传后由服务端识别并返回文本input 聚焦时长按键盘麦克风图标(此为系统层能力,非 HTML5 控制)MediaRecorder + 云 API 实现最快导入流程这是目前最可控、延迟最低的纯 Web 方案:避开浏览器识别缺陷,把耗时环节交给优化过的服务端模型。
const mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/webm' });
let audioChunks = [];
mediaRecorder.ondataavailable = event => {
audioChunks.push(event.data);
};
mediaRecorder.onstop = async () => {
const blob = new Blob(audioChunks, { type: 'audio/webm' });
const formData = new FormData();
formData.append('audio', blob);
// 上传到 Whisper API 或 AssemblyAI
const res = await fetch('https://api.assemblyai.com/v2/realtime', {
method: 'POST',
headers: { 'authorization': 'YOUR_API_KEY' },
body: formData,
});
const result = await res.json();
console.log(result.text); // ✅ 实际识别结果
};
MediaRecorder 在 iPad Safari 中完全可用(iOS 14.5+)AudioContext 重采样,但会增加前端计算负担别在 webkitSpeechRecognition 上浪费调试时间;iPad 的语音识别能力不在浏览器里,而在系统 API 或云服务里。选对路径比优化参数重要得多。