GithubHelp home page GithubHelp logo

jing332 / tts-server-android Goto Github PK

View Code? Open in Web Editor NEW
2.7K 2.7K 223.0 6.74 MB

这是一个Android系统TTS应用,内置微软演示接口,可自定义HTTP请求,可导入其他本地TTS引擎,以及根据中文双引号的简单旁白/对话识别朗读 ,还有自动重试,备用配置,文本替换等更多功能。

Kotlin 93.04% Go 1.57% HTML 1.05% JavaScript 1.11% Java 3.21%
android compose-ui golang jetpack-compose kotlin legado microsoft tts

tts-server-android's People

Contributors

jing332 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tts-server-android's Issues

一直提示这个错误

获取音频失败(Azure): x509: certificate signed by unknown authority

换不同的引擎也是

背景音乐导入不太好用

背景音乐导入不太好用,不能自己选,也不能单选,只能顺序播放。
建议改成图中这样,识别目录中音乐后,显示音乐列表然后可单选或多选
Screenshot_2023-03-31-08-57-59-988_com github jing332 tts_server_android-picsay

默认的配置问题

Screenshot_2022-11-20-08-31-57-644_com github jing332 tts_server_android
如果不设置对话和和旁白,就会直接使用默认,而不是设置的模式

分句建议

建议分句的时候不要以句号分割,可以两个符号一次。不然有时候太长可能超时卡住

[Feature Request] 替換規則群組

才用一個禮拜左右,替換規則已經長長一串,雖有搜索功能,但若有群組功能,對於管理跟界面都有幫助。

讨论一种对白切换方案的可能性

作者之前做了旁白和对白的分离,不得不说朗读体验真的很好,我很喜欢这个。但是美中不足的是,旁白无法做人物细分,我也知道这个几乎不可能实现,除非写书的人给不同人物的对白用上不同的符号。注意到作者最近加入了随机切换对白的功能,显然还是想在这个方面努力一下的,那么这里我有个建议,不知道技术上有没有可行性:

能不能把一个声音和某个特定文字符号绑定(比如张三),当一段文字中出现这个符号,同时又有双引号(也就是对白)的时候,就使用这个声音来朗读;如果一段文字中含多个这种符号(比如张三对李四说“”),取第一个。

不知道能不能行,希望作者解答

无障碍的问题请在此反馈

添加配置里面的。添加本地TTS
有一个警告这个警告没有确定按钮,不知道的还以为关不了,幸亏我知道这个时候该用返回,里面有几个只读默认,当我们点开才知道,标题上写着选择TTS引擎:还有选择语言以及选择语音,这三个下拉列表没有任何提示,当点开才有提示,希望增加提示,谢谢开发,辛苦了

停更惡耗

願大佬一切順心如意,真的非常感謝你的付出,讓小弟聽書時總是有著愉快的心情。

另如果可能而你也真有空時,可否煩請將最後的dev版打包成release版?這不強求,只是看最後的release版候你又花很多時間改了好幾版的dev版,當然這要你有時間。

app内播放音频问题

第一个是声音会变小,过一会又正常了,会反复出现;
第二个是webm格式看阅读app内跳段时间应该是播放了,但听不到声音,网页测试webm是正常的;
第三个是听着每一段最后几个字好像没播放完就下一段了。

关于多音字,大佬是否考虑构建?

最近使用了这个tts安卓应用,效果比miui自己的tts要好很多,不过目前发现对多音字不支持,是否考虑增加一个支持多音字的版本呢?如果需要相应的注音的话,可以提供支持。

多语音下,表反语,强调等的双引号,出现不自然停顿的问题

在设置了最小对话匹配字数之后,小于规定字数,在引号内的部分,仍会切分后,再进行合成。

这样导致,一些表强调,反语的双引号,也会在对应位置引发不自然停顿。

建议对小于设定字数阈值的部分,直接不拆分合成。这样应该也不会短对话的合成效果。

朗读完一章会暂停,需要主动打开tts-server界面

使用阅读app听小说过程中发现,每听完一章,需要手动打开tts-server界面,才会继续朗读,就打开界面过一会儿会看到下一章发送消息的日志开始输出,如果不手动打开会一直停在那里。据我观察,阅读app使用url朗读这种方式和使用系统tts组件朗读不同,前者是异步的,每次发送一段,发送和接收是异步的,一章的内容会早早发送完,然后收到一段响应的音频就播放,整体上就很连贯,后者应该是同步的,网络越差两段朗读的间隔时间就越长。
会不会是阅读app早早把一章发送完,也接收完响应的音频,tts-server空闲的时间过长之后就休眠了?

系统tts界面只能保存一次配置

系统tts界面只能保存一次配置,再调整参数就保存不了,仍然是第一次的配置,必须把整个APP完全退出重新打开才能重新配置保存

系统TTS转发器转发自身bug

转发自身app,多目标语音在线可以缓存,离线tts如谷歌和搜狗则会和已经缓存的所在段落一起播放!
如正在缓存第9段落随机到离线tts,就会和正在播放的第2段一起播放!

每段朗读时间再缩短点么?

现在每段朗读间隔大约1.5到两秒左右。自定义接口间隔更久。可以吧这个时间再缩短点么?缩短到0.3-0.5秒左右

考虑不考虑加一些其他的接口?

比如百度的接口就有很多音色,国内的接口优势就是不卡稳定
或者谷歌的接口

{
"concurrentRate": "0",
"contentType": "audio/wav",
"enabledCookieJar": false,
"header": "",
"id": -100,
"lastUpdateTime": 1668975751716,
"loginCheckJs": "",
"loginUi": "",
"loginUrl": "",
"name": "1.百度-评书",
"url": "http://tsn.baidu.com/text2audio,{\n "method": "POST",\n "body": "tex={{java.encodeURI(java.encodeURI(speakText))}}&spd={{(speakSpeed + 5) / 10 + 4}}&per=4114&cuid=baidu_speech_demo&idx=1&cod=2&lan=zh&ctp=1&pdt=220&vol=5&aue=6&pit=5&res_tag=audio"\n}"
}

考虑不考虑加一些其他的接口?

比如百度的接口谷歌的接口

{
"concurrentRate": "0",
"contentType": "audio/wav",
"enabledCookieJar": false,
"header": "",
"id": -100,
"lastUpdateTime": 1668975751716,
"loginCheckJs": "",
"loginUi": "",
"loginUrl": "",
"name": "1.百度-评书",
"url": "http://tsn.baidu.com/text2audio,{\n "method": "POST",\n "body": "tex={{java.encodeURI(java.encodeURI(speakText))}}&spd={{(speakSpeed + 5) / 10 + 4}}&per=4114&cuid=baidu_speech_demo&idx=1&cod=2&lan=zh&ctp=1&pdt=220&vol=5&aue=6&pit=5&res_tag=audio"\n}"
}

希望给无障碍功能再做一个优化,就是所有的下拉列表,希望不是悬浮的,因为这样盲人不是很好操作

希望把这个功能做好下拉列表,这些都是悬浮的,很不好,尤其是那些使用,盲人智能键盘机的这就有点悲催了,他们得打开触摸屏幕功能摸一下屏幕的角色,才能找到下载列表里的内容,很费劲,还有,触摸屏幕的这些盲人,只喜欢滑动的,那些人找这些角色也不是很好找,所以不希望有悬浮还是改成死定的最好

连续两句对话,有一句可能会被忽略

“你们果然在高层里安插了「信徒」。”“这不重要。”呓语伸出手,像是位身姿笔挺的乐队指挥家,在空气中轻轻一挥。

开启旁白和对话模式后
上面这句中第二句对话没有读。

websocket bad handshake (repeated retries with server connection fail)

Hello, good evening, today I tried your application, after trying it for a while in Chinese, I asked why it is not in English? Is there any way that I can contribute in the language, the Microsoft server languages ​​are clear... but there is a problem, a severe bug that I found "websocket bad handshake" restarts retrying to collect endless requests to the server. why is this happening? Does it block the IP or something like that? I am connected by a router that is Chinese in Argentina. greetings from Argentina

可否添加Azure的api支持呢?

可否添加Azure的api支持呢?就是支持填写azure的语音服务api,并输入相关ssml设置呢?毕竟网页请求他的这个接口我不太会呀

[Enhancement] 替換規則ABC音標字體大小

這字體大小對一般人可能沒問題,但對於像我這種大齡又近視老花的人來說實在是過小了,能否加大字體?

另關於這音標選擇畫面有個想法,因這就固定那幾個字,那麼大一個畫面還要滑動畫面,建議換成橫式排列加大字體方便選擇,如此美觀又方便選擇,像這樣:

A A1 A2 A3 A4
E E1 E2 E3 E4
I I1 I2 I3 I4
O O1 O2 O3 O4
.....
Screenshot_20230202-121135

tts-server-android发送的数据到手机里是一个字一个字读的

大佬打扰了,请问是数据传输带空格吗还是怎么样😂,在tts-server-android内设置好测试语音时可以正常连读(系统设置tts后测试也可以正常连读),但是在阅读app内是一个字一个字读的,而配置google本地tts的可以正常连读,软件fbreader 手机1+7 pro 安卓12

点击加号新建声音出现崩溃,反复尝试都一样。

2022-11-20T05:35:29.150
版本代码:2, 版本名称:0.1_202211161018
崩溃详情:
go.Universe$proxyerror: Get "https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4": x509: certificate signed by unknown authority
at tts_server_lib.Tts_server_lib.getEdgeVoices(Native Method)
at y1.b.j(SourceFile:606)
at i3.a.x(Unknown Source:8)
at y3.g0.run(SourceFile:101)
at d4.a$a.run(SourceFile:82)
Suppressed: y3.e0: [i1{Cancelling}@36dba3f, Dispatchers.Default]

希望加入对『』和「」引号内对话的识别

例如:
大桥彩代气势十足地喊道,「四碗阎魔大王拉面!」
小仓功雅笑着转身准备拉面,「四位请稍等,拉面马上就好!」
其中对话部分是“四碗阎魔大王拉面!”与“四位请稍等,拉面马上就好!”
目前软件还无法识别「引号」内的对话

为什么要在onSynthesizeText方法整个代码块上加同步锁?

如题,为什么要在onSynthesizeText方法整个代码块上加同步锁?这样不是将本来可以并发合成的方法,变成了一个同步的方法,一次只处理一个请求?阅读实际上一次发送了多个合成请求,如果并行处理的话,在朗读第二段以及之后的段之前,实际音频已经合成了,这样朗读段之间就不会有网络请求造成的延迟。

怎样添加自己的Azure API?/ Add custom API function

Firstly, i would like to say that you have made a great app, at least for me!
Your app have worked very well, but sometimes I run into the situation that said "bad handshake" error. We know that the reasons behind the limit of Azure Demo API, and it take time for the app to work normal again. And you have to updated new API in the meantime, right? So, the main point of this post is it is better to have the function in which the end user can use their own API. Thanks for your great app!

大佬太厉害-听小说成听广播剧了

大佬太厉害了,听小说成听广播剧了,刚试用了你最新的build版本,太棒了,对白可不可以多个角色,然后界面可以配置每个角色对应小说里面的人物名称(可以对应多个,如用逗号分开),多个角色之外加一个通用角色(就是小说里出现的频次低的路人甲),这样就真成广播剧了,呵呵!

獲取失敗與作為備用問題

更新到0.4_202301301033版本後,僅啟用一個語音選擇朗讀全部,只要沒有勾選 "作為備用" ,就會一直獲取失敗無法使用。

Screenshot_20230131-090648

勾選 "作為備用" 後,雖也會出現斷斷續續的獲取失敗但是可以正常輸出的。我的理解"作為備用"應該是啟用兩個語音以上,當第一個獲取失敗時會自動選擇"作為備用"的語音,我的理解對嗎?

勾選 "作為備用" 後日誌。

Screenshot_20230131-090037

另請教啥情況下會產生這個錯誤?
websocket: closse 1007 (invalid payload data): Unsupported voice.
因為就算正常播放,日誌裡還是常會看到這行記錄。

新的分组功能无障碍

大佬如果有时间的话,可以在修复下无障碍吗?
在新的开发版中,分组不管是展开还是收起状态,都会朗读成展开状态。
分组后面的复选框也可以简化一下,从分组是否勾选,复选框已经选中改成分组复选框一选中就行了,等于说给软件加上了复选框,我们这边就会提示他是选中的还是未选中的。
谢谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.