基于Python和AI的摩尔斯电码无障碍交流应用

本文详细介绍如何利用Python和AI技术开发一款通过方向键输入摩尔斯电码的交流工具,帮助行动不便人士实现单指交流,包含完整代码实现和技术架构解析。

基于Python和AI的摩尔斯电码无障碍交流应用

项目背景

交流是人类连接的基础,但对许多人来说,说话或打字都是不可能完成的任务。该项目旨在创建一个只需单指操作方向键即可实现交流的简单工具。

技术实现

该程序允许用户通过敲击方向键进行交流:

  • 左箭头:点(.)
  • 右箭头:划(-)
  • 上箭头一次:结束当前字母
  • 快速按两次上箭头:结束当前单词
  • 下箭头:朗读当前短语
  • 空格键:删除最后一个点/划

程序将敲击转换为摩尔斯电码,再翻译为字母、单词和短语,并通过语音朗读出来。

核心代码解析

1. 导入库和初始化

1
2
3
import pyttsx3
import keyboard
import time
  • pyttsx3:文本转语音引擎
  • keyboard:实时检测键盘按键
  • time:测量按键间隔,特别是双击检测

2. 摩尔斯电码字典

1
2
3
4
morse_dict = {
    '.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E',
    # 完整字母和数字映射...
}

建立摩尔斯电码与字母/数字的映射关系。

3. 初始化语音引擎和变量

1
2
3
4
5
6
7
engine = pyttsx3.init()
engine.setProperty('rate', 150)
current_morse = ''  # 当前摩尔斯序列
current_word = ''   # 当前单词
phrase = ''         # 完整短语
previous_key = ''   # 防止重复输入
last_up_time = 0    # 记录上次上箭头时间

4. 用户控制界面

1
2
3
print("Controls:")
print("← = Dot | → = Dash | ↑ (once) = End Letter | ↑ (twice) = End Word")
print("↓ = Read Phrase | Space = Delete Last Dot/Dash")

5. 点输入检测(左箭头)

1
2
3
4
5
6
if keyboard.is_pressed('left'):
    if previous_key != 'left':
        current_morse += '.'
        print(f"Dot (.) | Morse: {current_morse}")
        previous_key = 'left'
    time.sleep(0.2)

6. 划输入检测(右箭头)

1
2
3
4
5
6
elif keyboard.is_pressed('right'):
    if previous_key != 'right':
        current_morse += '-'
        print(f"Dash (-) | Morse: {current_morse}")
        previous_key = 'right'
    time.sleep(0.2)

7. 删除功能(空格键)

1
2
3
4
5
elif keyboard.is_pressed('space'):
    if previous_key != 'space':
        if current_morse:
            print(f"Deleted: {current_morse[-1]}")
            current_morse = current_morse[:-1]

8. 字母/单词结束(上箭头)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
elif keyboard.is_pressed('up'):
    if previous_key != 'up':
        current_time = time.time()
        if current_time - last_up_time < 1.0:  # 双击结束单词
            if current_morse:
                letter = morse_dict.get(current_morse, '?')
                current_word += letter
                phrase += current_word + ' '
                current_word = ''
        else:  # 单击结束字母
            if current_morse:
                letter = morse_dict.get(current_morse, '?')
                current_word += letter
                current_morse = ''
        last_up_time = current_time

9. 朗读短语(下箭头)

1
2
3
4
5
6
elif keyboard.is_pressed('down'):
    if phrase.strip():
        print(f"Phrase: {phrase.strip()}")
        engine.say(phrase.strip())
        engine.runAndWait()
        phrase = ''

项目意义

通过少量代码和AI辅助编程,创建了一个单指操作的交流工具。该项目展示了如何结合基础编程和AI指导,为有交流障碍的人群开发实用工具。

完整代码和可执行文件可通过原文链接获取

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计