代码拉取完成,页面将自动刷新
// Refer: https://github.com/tkhr-sait/timekeeper/blob/master/src/command/say.go
// Only for Windows OS
package windows
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"runtime"
)
type TTS struct {
tempFile string // content
rate string // speed
inited bool
}
func (self *TTS) Init() {
if self.rate == "" {
self.rate = "3" // Defalut
}
if runtime.GOOS == "windows" {
tmpfile, _ := ioutil.TempFile("", "tempTTS_")
script := `
set TTS = CreateObject("SAPI.SpVoice")
TTS.rate=` + self.rate + `
TTS.Speak(WScript.Arguments(0))
`
tmpfile.WriteString(script)
tmpfile.Close()
self.tempFile = tmpfile.Name() + ".vbs"
os.Rename(tmpfile.Name(), self.tempFile)
}
self.inited = true
}
func (self *TTS) RemoveTempFile() {
if runtime.GOOS == "windows" {
os.Remove(self.tempFile)
}
}
// Set speed.
func (self *TTS) SetRate(rate int) {
self.rate = fmt.Sprintf("%d", rate)
}
// Say
func (self *TTS) say(message string) *exec.Cmd {
if !self.inited {
self.Init()
}
if runtime.GOOS == "windows" {
return exec.Command("cscript", "//Nologo", self.tempFile, message)
} else {
return exec.Command("say", message)
}
}
// Say and not wait
func (self *TTS) SayNotWait(message string) {
self.say(message).Start()
}
// Say and wait
func (self *TTS) SayWait(message string) {
self.say(message).Run()
}
func TestTTS() {
var tts TTS
tts.SayNotWait("Hello")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。