代码拉取完成,页面将自动刷新
package tts
import "C"
import (
"fmt"
"os"
"gitee.com/wulalade/hwpack/audio"
)
type TTSLoginConf struct {
WorkDir string `json:"work_dir"`
AppId string `json:"appid"`
}
type TTSConf struct {
EngineType string `json:"engine_type"`
VoiceName string `json:"voice_name"`
TextEncoding string `json:"text_encoding"`
TtsResPath string `json:"tts_res_path"`
SampleRate int `json:"sample_rate"`
Speed int `json:"speed"`
Volume int `json:"volume"`
Pitch int `json:"pitch"`
Rdn int `json:"rdn"`
Rcn int `json:"rcn"`
}
func (ttsConf TTSConf) ToTTSParams() string {
return fmt.Sprintf("engine_type = %s, voice_name = %s, text_encoding = %s, tts_res_path = %s, sample_rate = %d, speed = %d, volume = %d, pitch = %d, rdn = %d, rcn = %d",
ttsConf.EngineType,
ttsConf.VoiceName,
ttsConf.TextEncoding,
fmt.Sprintf("fo|%s%s.jet;fo|%scommon.jet", ttsConf.TtsResPath, ttsConf.VoiceName, ttsConf.TtsResPath),
ttsConf.SampleRate,
ttsConf.Speed,
ttsConf.Volume,
ttsConf.Pitch,
ttsConf.Rdn,
ttsConf.Rcn)
}
func (ttsLoginConf TTSLoginConf) ToTTSLoginParams() string {
return fmt.Sprintf("appid = %s, work_dir = %s",
ttsLoginConf.AppId,
ttsLoginConf.WorkDir)
}
// 生成wav文件
func GetTTSWavFile(ttsParmas, speedTxt, desPath string) error {
audioData, err := TTSWavData(ttsParmas, speedTxt)
if err != nil {
//fmt.Println("TTSWavData")
return err
}
//file, err := os.OpenFile(desPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
//file, err := os.OpenFile(desPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
file, err := os.OpenFile(desPath, os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
//fmt.Println("OpenFile")
return err
}
defer file.Close()
_, err = file.Write(audioData)
if err != nil {
//fmt.Println("Write")
return err
}
return nil
}
func Login(loginParams string) error {
return MSPLogin(loginParams)
}
func Logout() error {
return MSPLogout()
}
// 获取语音的二进制数据
func TTSWavData(ttsParmas, speedTxt string) ([]byte, error) {
audioData := audio.NewWAV()
data, err := TTSData(ttsParmas, speedTxt)
if err != nil {
return nil, err
}
audioData.AddAudioData(data)
return audioData.Data(), nil
}
func TTSData(ttsParmas, speedTxt string) ([]byte, error) {
ttsData := make([]byte, 0)
if speedTxt == "" {
return ttsData, nil
}
/* 开始合成 */
sessionID, err := QTTSSessionBegin(ttsParmas)
if err != nil {
return nil, err
}
defer QTTSSessionEnd(sessionID, "Normal")
if err = QTTSTextPut(sessionID, speedTxt, ""); err != nil {
return nil, err
}
for true {
data, synthStatus, err := QTTSAudioGet(sessionID)
if err != nil {
return nil, err
}
if data != nil {
ttsData = append(ttsData, data...)
}
if synthStatus == 2 {
break
}
}
return ttsData, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。