- 微信同声传译lang传zh_CN,录音过程中不说话不会触发onStop,但传其他可以
https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/extended/translator.htmlbindconfirm 微信同声传译lang传zh_CN,录音过程中不说话不会触发onStop,但传en_US,zh_HK录音过程中不说话会走onStop并且返回值为空,请问是什么原因呢? 代码: manager.start({lang: "zh_CN"}); // 不说话执行manager.stop()不触发onStop manager.start({lang: "en_US"}); // 不说话执行manager.stop()会触发onStop并返回空字符串 manager.start({lang: "zh_HK"}); // 不说话执行manager.stop()会触发onStop并返回空字符串 用官方提供的例子进行测试,也是一样的结果,左边中文不提示“请说话”,右边英文会提示“请说话” [图片]
2024-03-20 - ios不支持正则的断言的解决辛酸路程
需求:将文字转为语音并播放,文字内容有电话格式1234-12234343和时间格式9:00-18:30,类似如下字符串:"我们上班时间:9:00-18:30,电话是1234-12234343" 实现方法:用微信的同声传译插件。 遇到问题:同声传译插件会将电话号码的1234读出一千两百三十四,听起来很奇怪有木有?=<=。 解决方法:所以我想着将电话号码之间加上空格,写个正则(/\d/g," $&"),数字是一个一个的读了。 又遇到问题:时间9:00-18:30被分割成了 9: 0 0- 1 8: 3 0,转成语音后就是九零零一八三零,也很奇怪有木有?=<=。 再次解决方法:将时间格式写个正则(/(\d+):(\d+)-(\d+):(\d+)/g,"$1点$2分到$3点$4分"),简直完美,时间格式完美读了出来^-^ 又又遇到问题:处理时间的正则和电话的冲突了呀,那我电话的空格怎么加呢? 再再次解决方法:这个解决方法我研究了1天!终于写出来了,还用上了断言呢~ .replace(/(\d+):(\d+)-(\d+):(\d+)/g,"$1点$2分到$3点$4分").replace(/(?<!到)(?<!点)\d(?!点)(?!到)(?!分)/g, ' $&'),一共花了2天时间搞得正则,终于啊,成功了!迫不及待用手机扫开发版试试,听听那动人的语音结果。 又又又遇到问题:结果……手机打开一片空白,查了下微信社区,555,在ios上不支持,简直晴天霹雳,看下图官方的回复…… [图片] 再再再次解决方法:再次查社区,看到下方正义之光的回答,十分感谢这位卢霄霄同志!! [图片] 我的终极解决方案: /** * @param {传入的原始字符串} str */ dealTextToVoice(str) { // 将时间格式更换为中文 str = str.replace(/(\d+):(\d+)-(\d+):(\d+)/g, "$1点" + "$2分" + "到$3点" + "$4分") let patt = new RegExp("\\d{4}\.", "g") let result // 将3位以上的数字加空格,避免语音读出计数 while ((result = patt.exec(str)) != null) { let newNum = result[0].replace(/\d/g, '$& ') str = str.replace(result[0], newNum) } return str } 至此,完美解决~
2021-11-03