本文详细介绍如何利用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指导,为有交流障碍的人群开发实用工具。
完整代码和可执行文件可通过原文链接获取