小程序
小游戏
企业微信
微信支付
扫描小程序码分享
例如“源和1916创意产业园”,需要合成为“源和一九一六创意产业园”,而不是“源和一千九百一十六创意产业园”。另外(0595)-22968769这种格式的固定电话,其中0595合成正确,22968769合成为“二千二百九十六万八千七百六十九”,不正确。
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
想了个办法绕过这个问题:自己写正则表达式检查文本中是否有需要每位数字单独合成语音的连续数字,如果有就转成中文数字,再调用插件合成语音。以下以检测并转换国内固定电话号码为例:
const plugin = requirePlugin('WechatSI'); function textToSpeech(content) { const digitsToChinese = (digits) => { if (!/^[0-9]+$/.test(digits)) { throw new Error('请输入一个自然数'); } const chineseChars = ['〇','一','二','三','四','五','六','七','八','九','十']; let retVal = ""; for (let digit of digits) retVal += chineseChars[digit]; return retVal; } // 国内固定电话的正则表达式 const DIGIT_REGEP_PHONE = /(?:[\((]?0\d{2,4}[\))]?-)?([2-9]\d{5,7})/g; let matched; while ((matched = DIGIT_REGEP_PHONE.exec(content)) != null) { const chinese = digitsToChinese(matched[1]); matched[1] = matched[0].replace(matched[1], chinese); content = content.replace(matched[0], matched[1]); } plugin.textToSpeech({ lang: "zh_CN", tts: true, content, success: (res) => { if (res.retcode == 0) { console.log("合成的语音文件Url: " + res.filename) } else { console.error("无法合成语音:未知错误"); } }, fail: (err) => { console.error("Error on TextToSpeech: " + JSON.stringify(err)); } }); }
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
想了个办法绕过这个问题:自己写正则表达式检查文本中是否有需要每位数字单独合成语音的连续数字,如果有就转成中文数字,再调用插件合成语音。以下以检测并转换国内固定电话号码为例:
const plugin = requirePlugin('WechatSI'); function textToSpeech(content) { const digitsToChinese = (digits) => { if (!/^[0-9]+$/.test(digits)) { throw new Error('请输入一个自然数'); } const chineseChars = ['〇','一','二','三','四','五','六','七','八','九','十']; let retVal = ""; for (let digit of digits) retVal += chineseChars[digit]; return retVal; } // 国内固定电话的正则表达式 const DIGIT_REGEP_PHONE = /(?:[\((]?0\d{2,4}[\))]?-)?([2-9]\d{5,7})/g; let matched; while ((matched = DIGIT_REGEP_PHONE.exec(content)) != null) { const chinese = digitsToChinese(matched[1]); matched[1] = matched[0].replace(matched[1], chinese); content = content.replace(matched[0], matched[1]); } plugin.textToSpeech({ lang: "zh_CN", tts: true, content, success: (res) => { if (res.retcode == 0) { console.log("合成的语音文件Url: " + res.filename) } else { console.error("无法合成语音:未知错误"); } }, fail: (err) => { console.error("Error on TextToSpeech: " + JSON.stringify(err)); } }); }