2017-07-03 62 views
0

我目前正在尝试创建一个简单的python脚本来创建语音数据。键被按下时记录,键被释放时停止

与脚本有关的想法是,开始使用pyaudio进行录制,当按住某个键时,并在释放该键时停止录制。

我现在有点糊涂,我应该如何实现while key hold/stop at release mechanism.

,我发现这个库keyboard,但没有什么意义是否载有 这种形式的机制呢?

+1

查看[this]的评论(https://stackoverflow.com/questions/40649634/determine-length-of-keypress-in-python)的问题。这可能会帮助你。 –

+0

只是看起来像一个有点吃不消这个简单的任务@ P.Siehr –

回答

1

根据函数库“keyboard”中的this code来源,它确实提供了这种机制来检测当前是否按下某个键。所以你可以做一个while循环来检查用户是否释放了该密钥。

#/usr/bin/python 
# file: __init__.py 
# ... 
def is_pressed(key): 
    """ 
    Returns True if the key is pressed. 
     is_pressed(57) -> True 
     is_pressed('space') -> True 
     is_pressed('ctrl+space') -> True 
    """ 
    _listener.start_if_necessary() 
    if is_number(key): 
     return key in _pressed_events 
    elif len(key) > 1 and ('+' in key or ',' in key): 
     parts = canonicalize(key) 
     if len(parts) > 1: 
      raise ValueError('Cannot check status of multi-step combination ({}).'.format(key)) 
     return all(is_pressed(part) for part in parts[0]) 
    else: 
     for event in _pressed_events.values(): 
      if matches(event, key): 
       return True 
     return False 
+0

'而keyboard.is_pressed(“空间”):' 给我的错误信息: '提高导入错误(“你必须以root使用此') ImportError:你必须是root用户才能在linux上使用这个库.' 并以sudo的形式运行它给我错误信息: 'IOError:[Errno 1] Operation not permitted:'/ dev/uinput'' –

+0

'keyboard'似乎只能用于windows和linux。任何可以在Linux上运行的任何东西。 –

+0

@open_ey,你在使用MacOS吗? – Sajuuk