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
|