]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
tts可以使用自定义程序
authorqydysky <qydysky@foxmail.com>
Thu, 7 Jan 2021 08:48:05 +0000 (16:48 +0800)
committerqydysky <qydysky@foxmail.com>
Thu, 7 Jan 2021 08:48:05 +0000 (16:48 +0800)
README.md
Reply/tts.go
demo/config/config_K_v.json

index be7f91a82d824cd5c17bedd4fc7e6f43171ae3ae..48fa0ce49df8036907ee9044cd145435f72134ca 100644 (file)
--- a/README.md
+++ b/README.md
@@ -85,18 +85,40 @@ golang go version go1.15 linux/amd64
 - [x] GTK信息窗支持房间切换、弹幕格式化发送、时长统计
 - [x] GTK弹幕窗支持自定义人/事件消息停留
 
-### 构建
+### 说明
 本项目使用github action自动构建,构建过程详见[yml](https://github.com/qydysky/bili_danmu/blob/master/.github/workflows/go.yml)
 
-#### 语音
-调用tts需要ffplay,先行安装[ffmpeg](http://ffmpeg.org/download.html)
+#### 私信
+在登录后,可以使用私信
+私信配置在`demo/config/config_K_v.json`有说明
 
+#### 语音
+调用tts默认使用ffplay,安装[ffmpeg](http://ffmpeg.org/download.html)
+或使用其他程序:可在`demo/config/config_K_v.json`中编辑调用的程序及附加选项
+```
+config_K_v.json
+默认
+    "TTS_使用程序路径":"ffplay",
+    "TTS_使用程序参数":"-autoexit -nodisp"
+使用mpv
+    "TTS_使用程序路径":"mpv",
+    "TTS_使用程序参数":"--no-video"
+```
+release不编译tts,参考如下方法编译
 ```
 编译命令
 cd demo
 go build -v -tags `tts` -o demo.exe -i main.go
 ```
-
+自定义响应的事件可在`demo/config/config_tts.json`中编辑
+```
+{D}:为tts内容
+key为demo/face下的文件名
+{
+    "0multi": "观众:{D}",
+    "29183321":"{D}"
+}
+```
 #### 弹幕窗
 构建gtk需要gtk3,先行安装[gtk](https://www.gtk.org/)
 ```
index 5fb59265c514b3651312f6c87353daa509444889..70d24360c5e7436f664a5379d7db645bfe28d76f 100644 (file)
@@ -3,7 +3,6 @@
 package reply
 
 import (
-       "fmt"
        "net/url"
        "strings"
        p "github.com/qydysky/part"
@@ -20,6 +19,13 @@ var tts_List = make(chan interface{},20)
 
 var tts_limit = p.Limit(1,5000,15000)//频率限制1次/5s,最大等待时间15s
 
+var tts_log = c.Log.Base_add(`TTS`)
+
+var (
+       tts_prog = "ffplay"
+       tts_prog_set = "-autoexit -nodisp"
+)
+
 func init(){
        {//tts配置
                buf := s.New()
@@ -27,6 +33,18 @@ func init(){
                for k,v := range buf.B {
                        tts_setting[k] = v.(string)
                }
+               buf.Load("config/config_K_v.json")
+               for k,v := range buf.B {
+                       if k == `TTS_使用程序路径` {
+                               if tmp,ok := v.(string);ok && tmp != ``{
+                                       tts_prog = tmp
+                               } else{tts_log.L(`E: `,`TTS_使用程序路径不是字符串或为空`)}
+                       }else if k == `TTS_使用程序参数` {
+                               if tmp,ok := v.(string);ok{
+                                       tts_prog_set = tmp
+                               } else{tts_log.L(`E: `,`TTS_使用程序参数不是字符串`)}
+                       }
+               }
        }
        go func(){
                for{
@@ -50,7 +68,7 @@ func init(){
 
 func TTS(uid,msg string) {
        if tts_limit.TO() {return}
-       fmt.Println(`TTS:`, uid, msg)
+       tts_log.L(`I: `,uid, msg)
        req := p.Req()
        if v,ok := tts_setting[uid];ok{
                msg = strings.ReplaceAll(v, "{D}", msg)
@@ -62,9 +80,12 @@ func TTS(uid,msg string) {
                Retry:1,
                SleepTime:500,
        });err != nil {
-               fmt.Println(`TTS:`, err)
+               tts_log.L(`E: `,err)
                return
        }
-       p.Exec().Run(false, "ffplay", p.Sys().Cdir()+"/tts.mp3","-autoexit","-nodisp")
+       var prog = []string{}
+       prog = append(prog, p.Sys().Cdir()+"/tts.mp3")
+       prog = append(prog, strings.Split(tts_prog_set," ")...)
+       p.Exec().Run(false, tts_prog, prog...)
        return
 }
\ No newline at end of file
index 5fe663f367307348151cebd7735867afa2017167..b5114756e608a80b2962f935d8ac088232c27000 100644 (file)
@@ -1,8 +1,12 @@
 {
-    "help":"额外私信对象为0时,所有额外私信都不会触发;私信为空字符串时,不触发",
+    "私信-help":"额外私信对象为0时,所有额外私信都不会触发;私信为空字符串时,不触发",
     "额外私信对象":0,
     "上舰私信":"",
     "上舰私信(额外)":"[弹幕机测试 额外]:感谢上舰",
     "弹幕私信":"",
-    "弹幕私信(额外)":"[弹幕机测试 额外]:弹幕"
+    "弹幕私信(额外)":"[弹幕机测试 额外]:弹幕",
+
+    "TTS_配置-help":"将会运行[TTS_使用程序路径 获取的音频路径 TTS_使用程序参数]",
+    "TTS_使用程序路径":"ffplay",
+    "TTS_使用程序参数":"-autoexit -nodisp"
 }
\ No newline at end of file