V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Eugene1024
V2EX  ›  程序员

支付宝收款语音播报是如何实现的?

  •  
  •   Eugene1024 · 2018-12-19 14:58:02 +08:00 · 13469 次点击
    这是一个创建于 2200 天前的主题,其中的信息可能已经有所发展或是发生改变。

    职业病,每次看到一些功能都会想后端是如何实现的,但感觉自己好像实现不了这个功能。

    商家启了语音播报后,每次收款不管金额是多少,都会语音提醒,这个语音是实时合成的吗?还是通过其他方式实现的

    57 条回复    2019-01-03 09:42:40 +08:00
    leavic
        1
    leavic  
       2018-12-19 15:00:28 +08:00
    计算器的语音是怎么做的?
    invoke
        2
    invoke  
       2018-12-19 15:02:25 +08:00
    。。。这
    播放语音 A 支付宝收款
    播放函数 B voice(99) 功能是把传入的数字用语音念出来
    播放语音 C 元

    这不复杂吧
    freshmanc
        3
    freshmanc  
       2018-12-19 15:03:06 +08:00
    tts
    Raynard
        4
    Raynard  
       2018-12-19 15:04:08 +08:00
    有没有一种软件。。

    手机丢了之后。。

    可以不停的播放:我的手机丢了,我的手机号码是:xxxxxxxx
    adyyq
        5
    adyyq  
       2018-12-19 15:04:13 +08:00 via Android
    原音是台湾一个美女录的
    rizon
        6
    rizon  
       2018-12-19 15:06:22 +08:00
    楼主可能是问声音哪来的吧。。。就是把 1-9 和点 提前录个音啊。。。
    录音的妹子还是个挺可爱的妹纸哈。可以搜到的
    xbigfat
        7
    xbigfat  
       2018-12-19 15:06:26 +08:00
    我也有类似的疑问是,前方的客户端是如何得知这个事件的。
    以 Android 为例子:可能是支付宝软件开个 Service 监控余额变动,一旦入账了就自动发送广播,播放语音,但是这样的话,不会被杀掉吗?如果确保稳定性呢?后续有大神能不能 @我解答一下疑惑。
    还有就是那种语音盒子,硬件盒子怎么得到通知的,具体工作原理是啥。。
    cjpjxjx
        8
    cjpjxjx  
       2018-12-19 15:06:26 +08:00 via iPhone   ❤️ 3
    解压支付宝的安装包,你就能发现里面有这些语音的音频文件,从零到十,从百到亿,把这些音频文件按特定顺序播放就行了,让我惊讶的是居然有亿???
    https://img.cencs.com/images/2018/12/19/M0O.png
    tanranran
        9
    tanranran  
       2018-12-19 15:08:08 +08:00
    @cjpjxjx #8 #8 据说是一个台湾的妹子(展妍)配的音
    580a388da131
        10
    580a388da131  
       2018-12-19 15:08:22 +08:00 via iPhone
    不需要合成啊
    分析出千百元角分
    按顺序播报就是了
    blue0125
        11
    blue0125  
       2018-12-19 15:09:30 +08:00
    不是每个支付宝软件里面都有个妹子么[手动斜眼]
    RobinzzZ
        12
    RobinzzZ  
       2018-12-19 15:09:35 +08:00
    语音之前是有停顿的不可能穷举数字,只有合成 XX +XXX +XXX 然后发出来~
    leavic
        13
    leavic  
       2018-12-19 15:11:19 +08:00
    @xbigfat 所以,支付宝有未开放的 API 用于监控余额,但我估计一般人是拿不到的,否则都可以自己 DIY 收款系统了。
    580a388da131
        14
    580a388da131  
       2018-12-19 15:11:20 +08:00 via iPhone
    @xbigfat 被杀掉就报不了了,不少人都在问怎么防止被杀。
    Eugene1024
        15
    Eugene1024  
    OP
       2018-12-19 15:14:07 +08:00
    @leavic 很受启发,计算器是单个数字,支付宝多了“位”的读音,
    @invoke 一时没想明白
    @580a388da131 用户端听到的是一条语音,感觉像是合成的,开发端处理就是你说的这样
    @rizon 明白了
    Vegetable
        16
    Vegetable  
       2018-12-19 15:18:15 +08:00
    @xbigfat 想多了吧,这可比 IM 简单多了,根本不需要主动监控,被动接收广播就行了啊.微信消息可不是轮询来的.
    NotNil1
        17
    NotNil1  
       2018-12-19 15:26:44 +08:00
    @leavic @xbigfat 一般都是主动推送
    vjnjc
        18
    vjnjc  
       2018-12-19 15:31:03 +08:00
    @cjpjxjx 查了一下居然是阿里的交互设计师。。。不是专业的声优
    ansonsiva
        19
    ansonsiva  
       2018-12-19 15:33:48 +08:00 via iPhone
    @cjpjxjx 没看到亿,只有千万吧
    winterx
        20
    winterx  
       2018-12-19 15:34:12 +08:00
    说声音好听的你们出来。。。。我保证不打。。。。
    我觉得声音一点都不好听
    AlphaTr
        21
    AlphaTr  
       2018-12-19 15:34:45 +08:00   ❤️ 14
    之前从支付宝 apk 拿到了语音的资源,做了一个自动合成的,大家可以试试 http://mate.alphatr.com/alipay/voice?num=1200000 数字可以随便改
    Eugene1024
        22
    Eugene1024  
    OP
       2018-12-19 15:35:03 +08:00
    @Raynard 很多厂家都设置了手机丢失模式,大概和你说的这种功能类似,可以播放语音,或则显示消息在自己手机上,这种软件一般是手机厂家做的,但小偷关机后就不行了;小偷会把手机拿到搞手机破解的哪里根据手机情况进行解锁、钓鱼或则更换手机主板,再过一段时间,手机会变成二手的手机到达某个地区用户手里
    Eugene1024
        23
    Eugene1024  
    OP
       2018-12-19 15:45:37 +08:00
    @AlphaTr 很赞,听着感觉真的不错,莫名感觉自己很富有(笑 cry )
    @cjpjxjx 确实如此,我感觉也试着解压了下拿到了语音,准备自己写程序读下这些语音,感谢回答
    HeiXiaoBai
        24
    HeiXiaoBai  
       2018-12-19 16:47:39 +08:00 via Android   ❤️ 4
    @Raynard
    想象一下,你的手机丢了
    然后这个软件很智能地判断自己所在的手机丢了(别问我怎么实现)
    然后自动播放语音:我的手机丢了,手机号是 xxx
    这时候,一个好心的路人路过,然后好心地想把这个手机归还给失主,按照语音打电话,几秒后,路人一脸复杂地看着手上震动的手机
    23333333
    deef
        25
    deef  
       2018-12-19 17:01:03 +08:00
    @winterx 我觉得美团外卖自动接单那个声音超好听....
    wjfz
        26
    wjfz  
       2018-12-19 17:08:35 +08:00
    短信铃声就是这个的飘过。

    文件和铃声分享:
    https://pan.baidu.com/s/1EmUzvicF3lK50hT_vJeZgA
    rizon
        27
    rizon  
       2018-12-19 17:09:26 +08:00
    @AlphaTr #21 哈哈 可以的,最高百亿单位啊?其实可以做到无限大。。千亿 万亿 亿亿 亿亿亿 亿亿亿亿 。。。。
    littleBeats
        28
    littleBeats  
       2018-12-19 17:11:55 +08:00   ❤️ 3
    蚂蚁金服招聘客户端开发

    如有意向,请发简历到邮箱: jiasong.hjs@alibaba-inc.com

    有需要交流的可以加我:

    微信:285660529

    立马安排面试!

    语音播报就在我们大组~
    DOLLOR
        29
    DOLLOR  
       2018-12-19 17:18:51 +08:00 via Android
    @rizon 兆京垓秭穰沟
    AlphaTr
        30
    AlphaTr  
       2018-12-19 17:19:14 +08:00
    @rizon #27 还是贫穷限制了我的想象力,百亿在我这已经是天文数字了。。
    peaceblast
        31
    peaceblast  
       2018-12-19 17:28:38 +08:00
    @littleBeats 你这职业病更恐怖😄
    sayMore
        32
    sayMore  
       2018-12-19 17:29:47 +08:00
    @AlphaTr #30 闭着眼睛听更舒服些 http://mate.alphatr.com/alipay/voice?num=99999999999,这是我能听到的最多的钱了( ps:前面的地灵灵有点刺耳,能可选去掉就更好了,哈哈哈😄)
    sayMore
        33
    sayMore  
       2018-12-19 17:30:20 +08:00
    yamedie
        34
    yamedie  
       2018-12-19 17:36:39 +08:00
    欢迎大嘎来玩我的这个 铃声生成器~
    http://uniq.love/future/#/ringtone
    rizon
        35
    rizon  
       2018-12-19 17:43:24 +08:00
    @yamedie #34 聊天室一群 V2EX 观光,,哈哈。。。日常 的背景啊, 我喜欢。。
    这语音库哪来的,丫头的声音很不错啊
    AlphaTr
        36
    AlphaTr  
       2018-12-19 17:45:00 +08:00
    @sayMore http://mate.alphatr.com/alipay/voice?num=99999999999.99 比你多,哈哈;代码中前缀可选: "支付宝到帐", "奖励你", 后缀可选: "元", "元现金", "个支付红包", "兆流量", "张优惠券";掉落声也是可配的,只是没给 http 服务抛接口,调用写死了..
    blackhacker
        37
    blackhacker  
       2018-12-19 17:46:02 +08:00
    @AlphaTr 电梯装逼利器
    yamedie
        38
    yamedie  
       2018-12-19 17:47:03 +08:00
    @rizon 嘿嘿, 整个语音合成服务都使用的是百度 API yuyin.baidu.com
    rizon
        39
    rizon  
       2018-12-19 17:49:04 +08:00 via iPhone
    @yamedie 我擦,,,我看你那个聊天室不错,然后就贴了聊天室的 js 源码想发一下,结果被封了。。。好吓人。。
    rizon
        40
    rizon  
       2018-12-19 17:49:45 +08:00 via iPhone
    @yamedie 贴了一下聊天室的 js 引用代码。。。
    sayMore
        41
    sayMore  
       2018-12-19 17:53:23 +08:00
    @AlphaTr #36 所以你当初开发这个的目的是什么?接口还配置这么活
    yamedie
        42
    yamedie  
       2018-12-19 17:53:25 +08:00
    @rizon 是的 不要尝试不要尝试不要尝试 https://www.v2ex.com/t/517617#reply45
    AlphaTr
        43
    AlphaTr  
       2018-12-19 17:55:17 +08:00
    @yamedie #34 之前好像在 V2 看到过,然后底下评论说声音和支付宝原生有差别,才萌生了我取支付宝语音合成的想法~
    xiangyuecn
        44
    xiangyuecn  
       2018-12-19 17:56:26 +08:00   ❤️ 3
    我们以前搞的语言播报是花了 50 来块钱请专业录音的妹纸录了 40 来秒的 0-9、单位、符号、固定通知语句,我把整个录音拆成一个个的 mp3 调整优化了一下子,然后让 android 和 ios 一个字符一个字符的播放出来,效果奇佳。。。居然比支付宝的还动听。关于支付宝怎么搞的就不清楚了
    yamedie
        45
    yamedie  
       2018-12-19 17:58:23 +08:00
    @AlphaTr 嗯嗯 我的小作, 追求自由度~ 支付宝到账只是其中一个铃声, 不追求拟真~
    VYSE
        46
    VYSE  
       2018-12-19 18:04:27 +08:00 via Android
    heasy
        47
    heasy  
       2018-12-19 20:39:29 +08:00 via iPhone
    @littleBeats 哈哈哈哈,随手就来
    shew2356
        48
    shew2356  
       2018-12-19 23:11:36 +08:00 via iPhone
    @xiangyuecn 这波操作,可以可以,可以合成岛国的课
    sublime8
        49
    sublime8  
       2018-12-19 23:20:10 +08:00 via iPhone
    声音合成。iOS 走系统通知。
    Phariel
        50
    Phariel  
       2018-12-19 23:26:38 +08:00 via iPhone
    @littleBeats 这帖子真的不是配合你的招聘而演的戏么
    (⊙…⊙)
    zwh2698
        51
    zwh2698  
       2018-12-19 23:35:00 +08:00 via Android
    @580a388da131 一定要合成,不信你问支付保的人,要声音连续。
    ooh
        52
    ooh  
       2018-12-20 00:32:57 +08:00
    play("支付宝到账.amr")
    play("1.amr")
    play("千.amr")
    play("万.amr")
    play("元.amr")

    可以用讯飞语音接口来录需要的音
    theswow
        53
    theswow  
       2018-12-21 13:57:40 +08:00
    @AlphaTr 效果满分
    Eugene1024
        54
    Eugene1024  
    OP
       2019-01-02 10:34:35 +08:00
    @AlphaTr 合成后端是用的啥实现的呢?能简单讲讲么 我顺序读取语音,但感觉程程序上还是有延迟,效果不太好
    AlphaTr
        55
    AlphaTr  
       2019-01-02 16:01:23 +08:00
    @Eugene1024 Go 实现的,简单来说就是把原始多个 Mp3 文件解析出来的数据帧拼接生成新的 Mp3,Mp3 的文件结构我也不是很了解,直接用的库 https://github.com/dmulholland/mp3lib
    Eugene1024
        56
    Eugene1024  
    OP
       2019-01-02 17:28:43 +08:00
    @AlphaTr 拼接出来的语音文件会存储 和删除吗,一直存储的话会占据很多存储空间
    AlphaTr
        57
    AlphaTr  
       2019-01-03 09:42:40 +08:00   ❤️ 1
    @Eugene1024 我的实现还是很简单的,直接生成 bytes 后就返回给 HTTP 了,中间没有产生文件,不会存储落盘
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   975 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.