V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
CoCoMcRee
V2EX  ›  Python

Python 检测系统是否发出了声音,有啥好办法吗?

  •  
  •   CoCoMcRee ·
    MQL9011 · 2019-09-03 09:38:39 +08:00 · 7000 次点击
    这是一个创建于 1944 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景, 游戏中获得奖励时一般会触发一个音效.(比如超级马里奥中吃到金币时会发出一个音效)

    我想检测到这个音效. 因为除了这个音效, 其他背景音乐和声音都被我关闭了. 所以只要检测到系统发出了声音应该就可以了.

    各位大佬, 有啥好的办法推荐吗?

    24 条回复    2019-09-03 21:08:04 +08:00
    CoCoMcRee
        1
    CoCoMcRee  
    OP
       2019-09-03 09:44:07 +08:00
    大佬们, 给点想法呗
    augustheart
        2
    augustheart  
       2019-09-03 09:44:42 +08:00
    此路不通,换思路。
    做外挂一般不从声音出发,一般是从图形识别出发
    binxin
        3
    binxin  
       2019-09-03 09:47:59 +08:00   ❤️ 1
    买一个树莓派 + 声音传感器
    rocketman13
        4
    rocketman13  
       2019-09-03 09:53:49 +08:00
    这和 python 有什么关系
    CoCoMcRee
        5
    CoCoMcRee  
    OP
       2019-09-03 09:55:51 +08:00
    @rocketman13 我只是希望能利用 python 的一些三方库.
    no1xsyzy
        6
    no1xsyzy  
       2019-09-03 09:58:34 +08:00
    1、没有办法判断是否在发声音,因为只要可以发声音的程序,就一直在发声音,即使是 “静音”
    2、全局录音,然后判断响度
    cxl008
        7
    cxl008  
       2019-09-03 09:59:22 +08:00
    声音传感器
    CoCoMcRee
        8
    CoCoMcRee  
    OP
       2019-09-03 10:02:44 +08:00
    @no1xsyzy 谢谢, 请教一下 全局录音,判断响度. 这个可以实时进行吗? 还是只能先录制, 再判断?
    lllllliu
        9
    lllllliu  
       2019-09-03 10:09:34 +08:00
    emmm,你只要能拿到 Audio Output 就可以分析 PCM 数据只要当前发出的声音跟你的样本声音差不多就可以。或者如果你能保持其他应用静音,那么 PCM 数据静音的时候是 0,只要大于 0 就是发声啦。
    至于怎么拿到 AudioStream 或者管理 AudioSession 可以用虚拟声卡,或者其他 Hook
    arrow8899
        10
    arrow8899  
       2019-09-03 10:10:16 +08:00
    CoCoMcRee
        11
    CoCoMcRee  
    OP
       2019-09-03 10:10:37 +08:00
    @lllllliu 谢谢, 有推荐的 python 库方便实现这个吗?
    arrow8899
        12
    arrow8899  
       2019-09-03 10:16:46 +08:00
    @CoCoMcRee 搜了下,有一个库 PyAudio,需要外部的 mic 支持
    https://people.csail.mit.edu/hubert/pyaudio/docs/
    qilishasha
        13
    qilishasha  
       2019-09-03 10:18:26 +08:00 via iPhone   ❤️ 3
    图形检测 发现系统声音调节那有波动就认定发声
    stoneabc
        14
    stoneabc  
       2019-09-03 10:20:47 +08:00
    @CoCoMcRee 如果要用 python,而且又不想通过调 win 动态链接库的话,那应该只能通过 win32api (应该是这个名字?)这个包了,可以查一下有没有封装音频的 API
    delectate
        15
    delectate  
       2019-09-03 10:23:40 +08:00
    换个思路,既然都静音了,那么如果文件被调用,或者播放声音的 api 被调用,或者声卡驱动被调用,就可以判定了。
    freeznet
        16
    freeznet  
       2019-09-03 10:39:56 +08:00
    - 模拟声卡 + 数据处理
    - hook 声音相关接口 可以 hook 系统层的 也可以逆向一下游戏 hook app 层的
    nnnToTnnn
        17
    nnnToTnnn  
       2019-09-03 11:07:03 +08:00
    话说为啥不用 orc 来做,这个很方便啊
    CallMeReznov
        18
    CallMeReznov  
       2019-09-03 11:09:13 +08:00
    如果是播放具体某个声音文件的话,我建议直接系统监控该音频文件是否被调用
    ivan_wl
        19
    ivan_wl  
       2019-09-03 11:12:25 +08:00
    买一根音频线,一头接输出,一头接输入,然后就检测声音吧
    i0error
        20
    i0error  
       2019-09-03 11:19:33 +08:00
    13 楼思路不错
    uxstone
        21
    uxstone  
       2019-09-03 11:25:23 +08:00
    ysc3839
        22
    ysc3839  
       2019-09-03 14:22:27 +08:00
    Windows 的话不需要录音,有接口可以获取所有发出声音的进程以及实时音量。
    hehheh
        23
    hehheh  
       2019-09-03 15:34:01 +08:00
    win com 好像是能做这个,我记不太清楚了
    exip
        24
    exip  
       2019-09-03 21:08:04 +08:00 via Android
    用 Audacity 调成内录音也就是录系统发出的任何声音,用 python 实时分析录音波形就可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2560 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:44 · PVG 18:44 · LAX 02:44 · JFK 05:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.