作者 yangfu

tts

... ... @@ -31,6 +31,6 @@ go.sum
lastupdate.tmp
*.log
public/*
public/
logs/
cmd/discuss/api/etc/core.local.yaml
... ...
... ... @@ -42,12 +42,25 @@ Wechat:
AppSecret: f584adb68f7d784425b60e1ebb2ffd4b
QrcodeEnv: trial
# 公司配置 用户跟APP_KEY不匹配。需要检查
#TTS:
# ReginID: cn-shanghai
# AccessKeyID: LTAI4Fz1LUBW2fXp6QWaJHRS
# AccessKeySecret: aLZXwK8pgrs10Ws03qcN7NsrSXFVsg
# Domain: nls-meta.cn-shanghai.aliyuncs.com
# AppKey: hRAovF4pNBhKJdFG
# Voice: xiaoyun
# Volume: 50
# SpeechRate: 0
# PitchRate: 0
# 测试账号
TTS:
ReginID: cn-shanghai #ap-southeast-1
AccessKeyID: LTAI4Fz1LUBW2fXp6QWaJHRS
AccessKeySecret: aLZXwK8pgrs10Ws03qcN7NsrSXFVsg
AccessKeyID: LTAI5tJCv7aWr8RrYP9xzRUR
AccessKeySecret: qPos8n5OgVdZnw3833F8ylb9nZBbih
Domain: nls-meta.cn-shanghai.aliyuncs.com #nlsmeta.cn-shenzhen.aliyuncs.com #
AppKey: hRAovF4pNBhKJdFG
AppKey: LW1RUgNgaYBEf8Pn
Voice: xiaoyun
Volume: 50
SpeechRate: 0
... ...
... ... @@ -5,8 +5,6 @@ import (
"context"
"encoding/json"
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
nls "github.com/aliyun/alibabacloud-nls-go-sdk"
"github.com/google/uuid"
"github.com/zeromicro/go-zero/core/logx"
... ... @@ -35,7 +33,7 @@ func NewCommonTextToSpeechLogic(ctx context.Context, svcCtx *svc.ServiceContext)
}
func (l *CommonTextToSpeechLogic) CommonTextToSpeech(req *types.TextToSpeechRequest) (resp *types.TextToSpeechResponse, err error) {
token, err := l.getToken1()
token, err := l.getToken()
if err != nil {
return nil, xerr.NewErrMsgErr("授权失败", err)
}
... ... @@ -52,28 +50,43 @@ func (l *CommonTextToSpeechLogic) CommonTextToSpeech(req *types.TextToSpeechRequ
return
}
func (l *CommonTextToSpeechLogic) getToken() (string, error) {
client, err := sdk.NewClientWithAccessKey(l.svcCtx.Config.TTS.ReginID, l.svcCtx.Config.TTS.AccessKeyID, l.svcCtx.Config.TTS.AccessKeySecret)
if err != nil {
return "", xerr.NewErrMsgErr("授权失败", err)
type TokenResult struct {
ErrMsg string
Token struct {
UserId string
Id string
ExpireTime int64
}
request := requests.NewCommonRequest()
request.Method = "POST"
request.Domain = l.svcCtx.Config.TTS.Domain //"nlsmeta.ap-southeast-1.aliyuncs.com"
request.ApiName = "CreateToken"
request.Version = "2019-02-28"
response, err := client.ProcessCommonRequest(request)
}
if err != nil {
return "", xerr.NewErrMsgErr("授权失败", err)
}
token := response.GetHttpContentString()
return token, nil
func (l *CommonTextToSpeechLogic) getToken() (string, error) {
//client, err := sdk.NewClientWithAccessKey(l.svcCtx.Config.TTS.ReginID, l.svcCtx.Config.TTS.AccessKeyID, l.svcCtx.Config.TTS.AccessKeySecret)
//if err != nil {
// return "", xerr.NewErrMsgErr("授权失败", err)
//}
//request := requests.NewCommonRequest()
//request.Method = "POST"
//request.Domain = l.svcCtx.Config.TTS.Domain //"nlsmeta.ap-southeast-1.aliyuncs.com"
//request.ApiName = "CreateToken"
//request.Version = "2019-07-17" //"2019-02-28"
//response, err := client.ProcessCommonRequest(request)
//
//if err != nil {
// return "", xerr.NewErrMsgErr("授权失败", err)
//}
//logx.Debug(response.GetHttpContentString())
//var tr TokenResult
//err = json.Unmarshal([]byte(response.GetHttpContentString()), &tr)
//if err != nil {
// return "", xerr.NewErrMsgErr("授权解析失败", err)
//}
//return tr.Token.Id, nil
return "d5868e2b5d644136add22c8a0b020435", nil
}
func (l *CommonTextToSpeechLogic) getToken1() (string, error) {
tts := l.svcCtx.Config.TTS
client, err := nls.GetToken(tts.ReginID, tts.Domain, tts.AccessKeyID, tts.AccessKeySecret, "2019-02-28")
client, err := nls.GetToken(tts.ReginID, tts.Domain, tts.AccessKeyID, tts.AccessKeySecret, "2019-07-17")
if err != nil {
return "", xerr.NewErrMsgErr("授权失败", err)
}
... ... @@ -91,7 +104,7 @@ func (l *CommonTextToSpeechLogic) processPOSTRequest(token string, text string,
* 5.设置可选请求参数:voice、volume、speech_rate、pitch_rate
*/
ttsConfig := l.svcCtx.Config.TTS
var url string = fmt.Sprintf("https://%s/stream/v1/tts", "nls-gateway-ap-southeast-1.aliyuncs.com")
var url string = fmt.Sprintf("https://%s/stream/v1/tts", "nls-gateway-cn-shanghai.aliyuncs.com") //"nls-gateway-ap-southeast-1.aliyuncs.com")
bodyContent := make(map[string]interface{})
bodyContent["appkey"] = ttsConfig.AppKey
bodyContent["text"] = text
... ... @@ -139,3 +152,5 @@ func (l *CommonTextToSpeechLogic) processPOSTRequest(token string, text string,
}
return nil
}
// http://127.0.0.1:8081/v1/file/ff9d4ab6-f095-11ee-b153-50ebf677cbf1.wav
... ...