const TTSModule = uni.requireNativePlugin('native-tts') const TTS = { isReady: false, isSpeaking: false, init(callback) { if (!TTSModule) { console.log('TTS 插件未安装') if (callback) callback(false, '插件未安装') return } try { const result = TTSModule.isReady() this.isReady = result.status === 1 if (callback) callback(this.isReady, this.isReady ? '初始化成功' : '初始化失败') } catch (e) { console.log('TTS 初始化异常', e) if (callback) callback(false, e.message) } }, speak(text, onSuccess, onError) { if (!text) { if (onError) onError('文本不能为空') return } if (!TTSModule) { if (onError) onError('插件未安装') return } try { this.isSpeaking = true const result = TTSModule.speak({ text: text }) if (result.status === 0) { this.isSpeaking = false if (onSuccess) onSuccess() } else { this.isSpeaking = false if (onError) onError(result.message) } } catch (e) { console.log('TTS 播报异常', e) this.isSpeaking = false if (onError) onError(e.message) } }, stop() { if (TTSModule) { try { TTSModule.stop() this.isSpeaking = false } catch (e) { console.log('TTS 停止异常', e) } } }, setSpeed(speed) { if (TTSModule) { try { TTSModule.setSpeed({ speed: speed / 100 }) } catch (e) { console.log('设置语速异常', e) } } }, setPitch(pitch) { if (TTSModule) { try { TTSModule.setPitch({ pitch: pitch / 100 }) } catch (e) { console.log('设置语调异常', e) } } }, isSpeaking() { if (TTSModule) { try { const result = TTSModule.isSpeaking() return result.status === 1 } catch (e) { return false } } return false }, destroy() { if (TTSModule) { try { TTSModule.destroy() this.isReady = false this.isSpeaking = false } catch (e) { console.log('TTS 销毁异常', e) } } } } export default TTS