本篇代码是用谷歌智能语音识别库和上篇《变频器的python用法》代码调用,实现的智能语音操作变频设备的案例,因需要连接外网原因功能测试的效果并不理想,好在都能跑起来。
关于意图识别的库与模型训练问题,有没有大神可以指教一二啊。
必须声明:用本篇代码进行调试时需要注意调试对象的品牌型号,并查阅其使用手册关于485通讯内容的说明。
import re
import speech_recognition as sr
from pyttsx3 import init
import time
import 变频器的用法
# 初始化语音识别器
recognizer = sr.Recognizer()
# 初始化语音播报器
语音播报 = init()
#
# 定义一个函数来获取语音输入
def get_speech_from_mic():
with sr.Microphone() as source:
print("请说话...")
recognizer.adjust_for_ambient_noise(source) # 调整环境噪声
audio = recognizer.listen(source)
try:
# 使用Google的Web API进行语音识别
command = recognizer.recognize_google(audio, language='zh-CN')
print("你说的话是: " + command)
return command
except sr.UnknownValueError:
语音播报.say("抱歉,我没有听清楚。")
except sr.RequestError as e:
语音播报.say("抱歉,google服务无法访问。")
print(e)
# 主循环
while True: # 这里是个死循环收到“老铁再见”指令后退出,google 录音的时长是1分钟,1分钟没退出程序会报错。
try:
command = get_speech_from_mic()
if "老铁再见" in command.lower():
语音播报.say("老铁再见")
time.sleep(2)
break
if "你好老铁" in command.lower():
语音播报.say("我在,你说") # 这里的播报没成功貌似录音阶段麦克风和音响冲突
time.sleep(2)
slave_Name = ['升降机', '大车', '小车'] # 案例以起重设备的3台电机为控制对象的
for i in slave_Name:
if i in command.lower():
x = slave_Name.index(i) + 1
H = re.findall(r"\d{2}", command)
if "频率" in command.lower() and H[0] in command.lower():
赫兹 = int(H[0]) #
变频器的用法.三科变频器(x,赫兹).频率设置()
正转 = ['提升', '升高', '前进', '往前','向上','正转']
反转 = ['降落','下落','后退','往下','往后','反转']
停止 = ['停','停机','关闭','关机','好了','站住']
for cor in 正转:
if cor in command.lower():
变频器的用法.三科变频器(x,None).正转启动()
for bac in 反转:
if bac in command.lower():
变频器的用法.三科变频器(x,None).反转启动()
for stp in 停止:
if stp in command.lower():
变频器的用法.三科变频器(x, None).自由停车()
except sr.RequestError as e:
print(e)