提交第二串字符仍返回第一串字符的合成数据,急!!
glb3699 发布于2017-05 浏览:1645 回复:6
0
收藏

开发平台和机型:

Windows 10 64位系统

复现步骤、现象及其他描述:

正常获取tokens, 提交合成也成功了.

问题是第二句话提交上去的时候,返回的,依然是第一串文字合成的语音数据???

比如,第一句话的内容是“这是第一句话”,它返回的语音也是正确的。

但,我提交第二串字符“这是接下来的第二句话”,它返回的语音内容,依然是前面那串字符合成的结果(“这是第一句话”)。

全部按规则来的,连字符串的长度都有严格审核。

cuid参数,为用户区分,手册上说,可以是MAC地址,那么证明,不管单个用户提交多少次,这个MAC地址总是不会变的吧,只需要获取一次,就可以在软件工作期间一直使用下去。

问题来了,除了上面这个问题外,还有一个多线程的问题。

比如,我的150M光纤,支持我同时向服务器提交10000条(一万)请求,那么,返回的结果,我如何区分?看参数,只有一个cuid是区分用户,但并没有别的地方可以区分我提交上去的字符串返回对应二进制数据的ID啊?


求各位高手不吝赐教,万分感谢!!!



收藏
点赞
0
个赞
共6条回复 最后由用户已被禁言回复于2022-04
#9xie_yongkang回复于2017-05

glb3699:

问题已经解决!!

原因出在本地。

第一次写出到文件正常,但当时有个播放动作时打开了该文件,播放完毕后并没有释放它,导致二次覆盖写入时失败了。


回复glb3699:好的, 谢谢

0
#8glb3699回复于2017-05

xie_yongkang:

您好, 我们用php的语音合成demo代码简单测试了一下, 可以正常返回两次合成结果, 请参考:

header("Content-type:text/html;charset=utf-8");

$text = urlencode("这是第一句话");

$tts_url="http://tsn.baidu.com/text2audio?tok=" . $token . "&ctp=1&cuid=123232&lan=zh&spd=3&tex=".$text;

getmp3($tts_url,"");

sleep(10);


$text = urlencode("这是接下来的第二句话");

$tts_url="http://tsn.baidu.com/text2audio?tok=" . $token . "&ctp=1&cuid=123232&lan=zh&spd=3&tex=".$text;

getmp3($tts_url, "");

请问两次请求间的时间间隔是多久? 出于安全考虑, token本身是有一个失效时间的, 谢谢。

回复xie_yongkang:

朋友你好,我是这样用的。虽然说tokens的时效是有一个月,但我估计一般人也不会连续开着程序工作一个月吧。

所以我的解决方法是每次启动程序,tokens就重新获取一次。

在程序运行期间,tokens与cuid均可一直使用。

0
#7xie_yongkang回复于2017-05

您好, 我们用php的语音合成demo代码简单测试了一下, 可以正常返回两次合成结果, 请参考:

header("Content-type:text/html;charset=utf-8");

$text = urlencode("这是第一句话");

$tts_url="http://tsn.baidu.com/text2audio?tok=" . $token . "&ctp=1&cuid=123232&lan=zh&spd=3&tex=".$text;

getmp3($tts_url,"");

sleep(10);


$text = urlencode("这是接下来的第二句话");

$tts_url="http://tsn.baidu.com/text2audio?tok=" . $token . "&ctp=1&cuid=123232&lan=zh&spd=3&tex=".$text;

getmp3($tts_url, "");

请问两次请求间的时间间隔是多久? 出于安全考虑, token本身是有一个失效时间的, 谢谢。

0
#6glb3699回复于2017-05

问题已经解决!!

原因出在本地。

第一次写出到文件正常,但当时有个播放动作时打开了该文件,播放完毕后并没有释放它,导致二次覆盖写入时失败了。


0
#5glb3699回复于2017-05

chenxiaoyu3:

回复glb3699:语音合成Rest API请求文本,同步直接返回音频数据。如果是本地异步调用,需本地处理异步回调的逻辑

回复chenxiaoyu3:

哥,我问的重点不是异步回调,而是问前面的返回…… 

第二次的识别,返回的依然是第一次的结果。

0
#4chenxiaoyu3回复于2017-05

glb3699:

开发平台和机型:

Windows 10 64位系统

复现步骤、现象及其他描述:

正常获取tokens, 提交合成也成功了.

问题是第二句话提交上去的时候,返回的,依然是第一串文字合成的语音数据???

比如,第一句话的内容是“这是第一句话”,它返回的语音也是正确的。

但,我提交第二串字符“这是接下来的第二句话”,它返回的语音内容,依然是前面那串字符合成的结果(“这是第一句话”)。

全部按规则来的,连字符串的长度都有严格审核。

cuid参数,为用户区分,手册上说,可以是MAC地址,那么证明,不管单个用户提交多少次,这个MAC地址总是不会变的吧,只需要获取一次,就可以在软件工作期间一直使用下去。

问题来了,除了上面这个问题外,还有一个多线程的问题。

比如,我的150M光纤,支持我同时向服务器提交10000条(一万)请求,那么,返回的结果,我如何区分?看参数,只有一个cuid是区分用户,但并没有别的地方可以区分我提交上去的字符串返回对应二进制数据的ID啊?


求各位高手不吝赐教,万分感谢!!!



回复glb3699:语音合成Rest API请求文本,同步直接返回音频数据。如果是本地异步调用,需本地处理异步回调的逻辑

0
TOP
切换版块