1 Star 0 Fork 0

唯哈希 / GUtils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
winTTS.go 1.36 KB
一键复制 编辑 原始数据 按行查看 历史
唯哈希 提交于 2023-02-22 19:27 . update
// 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")
}
Go
1
https://gitee.com/vhash/gutils.git
git@gitee.com:vhash/gutils.git
vhash
gutils
GUtils
v0.8.1

搜索帮助