前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一次绕口令引发的“血案"

一次绕口令引发的“血案"

作者头像
madneal
发布2022-03-11 11:15:22
1990
发布2022-03-11 11:15:22
举报
文章被收录于专栏:madMenmadMen

春节在家一直闲着,今天有人给我发了一个小程序,即包你说。小程序是一个绕口令,很显然对于我这种 "n l" 不分的人说,这种绕口令也太难说了。因此我就想通过 python 脚本来实现。

整个流程比较简单,主要是通过 adb 截取手机屏幕,获取口令的区域,然后通过百度的 OCR API 去识别口令获取文字,然后通过百度语音 API 去合成语音,通过 adb 模拟点击屏幕长按事件,最后通过电脑的 windows media player 播放 mp3 文件就可以了。

adb

adb 可以通过开发者选项进行收集的控制。可以通过安卓手机或模拟器操作步骤里面的介绍安装 adb。在这个脚本里面,我们主要会用到两个命令:

代码语言:javascript
复制
// 截图
adb shell screencap -p
// 模拟长按屏幕 500 1000 为坐标位置,2000为长按持续时间
adb shell input swipe 500 1000 500 1000 2000

百度 API

百度现在的确提供了很多 API,包括语音识别,语音合成以及 OCR 识别。可以在 http://yuyin.baidu.com/app 里面申请 API,通过创建应用并且申请 API 获取 APPID, APPKEY, SECRET_KEY。通过使用百度的 python sdk 就可以轻易实现:

代码语言:javascript
复制
# 离线合成语音
    client = AipSpeech(str(config_baidu['app_id']), config_baidu['api_key'], config_baidu['secret_key'])
    result = client.synthesis(text, 'zh', 1, {
        'vol': 5,
    })
    # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
    if not isinstance(result, dict):
        with open('audio.mp3', 'wb') as f:
            f.write(result)
        f.close()

 # ocr 识别
    client = AipOcr(str(config_baidu['app_id']), config_baidu['api_key'], config_baidu['secret_key'])
    img_byte_arr = io.BytesIO()
    img.save(img_byte_arr, format='PNG')
    image_data = img_byte_arr.getvalue()
    response = client.basicGeneral(image_data)
    words_result = response['words_result']
    texts = ''
    for x in words_result:
        texts += x['words']
    return texts

运行

本次脚本其实并没有特别的难度,主要就是其中几个流程搞清楚,主要是有几点可以注意一下。第一点就是截图区域的获得,比如口令的截图区域以及按钮的位置。另外,为了方便直接调用电脑的 windows media player 播放音频文件,因此注意修改程序的路径以及音频文件的绝对路径。按照阅读链接中的 config-template 配置百度 API,设置成 config.yaml,这样为了是避免泄露百度 API 密钥的泄露。

结语

花了一下午的时间写了这个脚本,其实脚本的难度并不大。python 语言作为一种脚本语言,的确在处理某些的确非常方便。怪不得,人生苦短,我用 python。通过这个脚本可以避免我拙劣的绕口令。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 madMen 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • adb
  • 百度 API
  • 运行
  • 结语
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档