自制一个语音识别的系统如何实现实时不断的监测语音输入? - V2EX
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
woshichuanqilz
V2EX    Python

自制一个语音识别的系统如何实现实时不断的监测语音输入?

  •  
  •   woshichuanqilz 2020-01-30 15:27:22 +08:00 3570 次点击
    这是一个创建于 2080 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想在 PC 端做一个语音助手, 尝试过 voicebot, 但是在自定义命令, 命令参数, 命令唤醒 /睡眠等方面, 不是特别的满意。Voicebot,他的命令识别却是相当准确的, 目的就想要一个沃斯堡的这样的语音识别的引擎但是后续的命令如何处理,我自己来自定义。

    考虑到现在语音识别系统已经比较成熟, 所以自己参考网上的一些文章, 用百度的语音接口实现了语音识别。 https://www.bilibili.com/video/av45532338/

    参考了这个链接, 问题在于你必须得在他的指定时间间隔内出入声音, 如果你说过声音的时候,正好是他上传和分析音频文件的时候, 你的语音命令就会折断。

    自己尝试在做的时候很难做到和 voicebot 一样的效果。

    def rec(rate=16000): r = sr.Recognizer() with sr.Microphone(sample_rate=rate) as source: print("please say something") audio = r.listen(source, timeout=3, phrase_time_limit=5) # audio = r.listen(source) # 使用这样的参数整个程序会挂住不动 print("recording done") with open("recording.wav", "wb") as f: f.write(audio.get_wav_data()) 

    所以这一考虑,想要一个可以持续不断的对语音进行分析和识别的一个软件或者代码,

    比如这样一个应用场景, 我先说"打开记事本", 我的程序可以帮我打开记事本, 过了 10 秒钟后,我再说打开"画图软件", 我的程序可以帮我打开画图软件。 也就是说多个命令之间不用主动的唤醒,比如不用说"你好, 小爱"唤醒程序就可以直接识别命令, 识别程序是始终在识别的, 并且在处理音频的时候不会影响接下来语音命令的录入。

    但是我觉得这个功能需要去对音频进行分析, 这方面并不是很熟练。

    所以想请问, 有没有什么现成的轮子或者文章之类的能提供相关的帮助。

    或者更好的是有没有类似的已经做好的开源软件,

    功能就是在不主动唤醒的情况下可以持续检测语音输入, 将我的语音输入返回识别的结果即可。

    python 最好。

    7 条回复    2020-01-31 20:50:10 +08:00
    Miksztowi
        1
    Miksztowi  
       2020-01-30 16:43:53 +08:00
    Revenant
        2
    Revenant  
       2020-01-30 21:12:00 +08:00
    百度的小度已经可以做到连续的语音指令识别
    目前国内的智能音箱貌似只有小度可以做到
    但是没有唤醒词的识别,很容易发生误触,比如我正在用的小爱同学,偶尔就会莫名其妙的响应我的命令了(我根本没有说唤醒词也会响应)
    如果是控制一些比较危险的电器,比如电饭锅或者耗电量比较大的电器比如空调,这种没有唤醒词的控制就比较危险了
    woshichuanqilz
        3
    woshichuanqilz  
    OP
       2020-01-30 23:33:10 +08:00
    @Revenant 我是直接控制电脑程序的, 输入命令会比较频繁, 不是连接电器使用, 就是控制电脑。
    woshichuanqilz
        4
    woshichuanqilz  
    OP
       2020-01-30 23:33:33 +08:00
    @Miksztowi 多谢 这个给我提供方向了。
    explore365
        5
    explore365  
       2020-01-31 10:03:42 +08:00
    VAD
    find456789
        6
    find456789  
       2020-01-31 14:45:51 +08:00
    钢铁侠里的助手吗, 加油, 可以考虑弄个开源项目
    afirefish
        7
    afirefish  
       2020-01-31 20:50:10 +08:00
    之前做过一个类似的语言识别工具。我使用的是检查每一帧音频的平均值,如果多个帧平均值大于某个参数就表示是有效语音。byte 大小在 0-255 之间,比如我在说话的时候检测到连续 30 帧的音频数据平均值都在 100 以上,就开始进行识别。这样做可以简单的避免一些突然的噪声,但是依然无法识别是否为有效的语言指令。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     966 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 19:20 PVG 03:20 LAX 12:20 JFK 15:20
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86