28 lines
911 B
JavaScript
28 lines
911 B
JavaScript
// scripts/voice.js
|
||
export function initVoice(panel, onResultCallback) {
|
||
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
|
||
if (!SpeechRecognition) return { supportSpeech: false };
|
||
|
||
const recognition = new SpeechRecognition();
|
||
recognition.lang = "zh-CN";
|
||
recognition.continuous = false; // 改为 false,确保每次停止都能立即结算
|
||
recognition.interimResults = false;
|
||
|
||
recognition.onresult = (event) => {
|
||
const text = event.results[0][0].transcript.trim();
|
||
if (text) {
|
||
console.log("🎤 识别结果:", text);
|
||
onResultCallback(text);
|
||
}
|
||
};
|
||
|
||
recognition.onerror = (event) => {
|
||
if (event.error !== 'aborted') console.error("语音错误:", event.error);
|
||
};
|
||
|
||
return {
|
||
supportSpeech: true,
|
||
start: () => { try { recognition.start(); } catch(e){} },
|
||
stop: () => { try { recognition.stop(); } catch(e){} }
|
||
};
|
||
} |