0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用树莓派和Python制作语音控制的冰箱

454398 来源:工程师吴畏 2019-07-31 09:24 次阅读

安装Python库和配置音频

在我们运行Python程序之前,我们需要安装两个库:语音识别和PyAudio。要安装这两个库,需要在终端窗口中运行以下两个命令:

$ sudo pip install SpeechRecognition

$ sudo pip install PyAudio

如果您在安装PyAudio时遇到问题,可以使用以下系列安装它说明:

$ sudo apt-get install git

$ sudo git clone http://people.csail.mit.edu/hubert/git/pyaudio.git

$ sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev

$ sudo apt-get install python-dev

$ cd pyaudio

$ sudo python setup.py install

一旦安装了这两个库,您就需要禁用Raspberry Pi上的板载音频驱动程序,因为它可能会干扰PyAudio。为此,首先打开一个新终端并运行以下命令:

$ cd /etc/modprobe.d

$ sudo nano alsa-blacklist.conf

Nano是终端的简单文本编辑器,加载时只需要输入一行:

blacklist snd_bcm2835

按Ctrl + X退出nano并使用文件名alsa-blacklist.conf保存文件。这个简单的文件禁用了Raspberry Pi的Broadcom音频系统,因此Pi上唯一可用的音频系统是USB声卡。

语音控制冰箱列表如何工作

Python脚本首先导入语音识别模块,该模块用于将口语单词转换为字符串。导入模块后,我们创建一个对象r,它是一个语音识别器对象,用于记录麦克风的音频,然后请求转换。在定义了语音识别对象之后,我们还定义了变量,包括项目列表,命令,当前项目以及包含已解析命令的数组。

import speech_recognition as sr

r = sr.Recognizer()

items = dict()

command = “”

item = “”

初始配置完成后,下一个要执行的代码块就是主循环。循环中的第一个任务是通过打印单词“Speak”通知用户发言,然后创建一个名为“audio”的音频对象,它保存我们的麦克风流。

while(1):

with sr.Microphone() as source:

print(“Speak:”)

audio = r.listen(source)

当麦克风检测到声音并完成录制时(当声级低于阈值时录制停止),它会将录制的音频传递给识别器对象。执行此操作后,r将使用Google服务尝试将音频转换为句子,然后将其传递给名为speechString的变量。所有这些代码都在try/except块中完成,以防音频被理解或服务不可用。收到的字符串也被解析为prasedCommands,其中分隔符是空格。因此,如果说“添加培根”这个词,结果将是parsedCommands [0]将是“add”而parsedCommands [1]将是“bacon”。

try:

speechString =r.recognize_google(audio)

parsedCommands = speechString.split(“ ”)

except sr.UnknownValueError:

print(“Could not understand audio”)

except sr.RequestError as e:

print(“Could not request results; {0}”.format(e))

if(len(parsedCommands) 》 0):

command = parsedCommands[0]

if(len(parsedCommands) 》 1):

item = parsedCommands[1]

现在我们拥有我们解析的命令和项目,我们可以将它们添加到我们的项目列表中。但是,为了保持清洁,我们会执行以下几项检查:

如果该项目已存在且已添加,则增加项目值

如果该项目不存在且添加了该项目,则将该项目添加到列表中

如果该项目已存在且已删除,则如果总计大于1则减去1

/li》

如果该项目已存在,则说明已删除,并且只剩下项目,删除项目

如果该项目不存在,忽略命令

if(command == “add”):

if item in items:

items[item] = str(int(items[item]) + 1)

else:

items[item] = str(1)

print(item + “ added”)

if(command == “remove”):

if item in items:

if(int(items[item]) 》 1):

items[item] = str(int(items[item]) - 1)

else:

try:

items.pop(item, None)

except:

pass

print(item + “ removed”)

这个简单脚本中的最后一个命令是“display”,它将变量项的内容打印到显示中。

if(command == “display”):

print(items)

完整代码

import speech_recognition as sr

r = sr.Recognizer()

items = dict()

command = “”

item = “”

while(1):

with sr.Microphone() as source:

print(“Speak:”)

audio = r.listen(source)

try:

speechString =r.recognize_google(audio)

parsedCommands = speechString.split(“ ”)

except sr.UnknownValueError:

print(“Could not understand audio”)

except sr.RequestError as e:

print(“Could not request results; {0}”.format(e))

if(len(parsedCommands) 》 0):

command = parsedCommands[0]

if(len(parsedCommands) 》 1):

item = parsedCommands[1]

if(command == “add”):

if item in items:

items[item] = str(int(items[item]) + 1)

else:

items[item] = str(1)

print(item + “ added”)

if(command == “remove”):

if item in items:

if(int(items[item]) 》 1):

items[item] = str(int(items[item]) - 1)

else:

try:

items.pop(item, None)

except:

pass

print(item + “ removed”)

if(command == “display”):

print(items)

command = “”

item = “”

days = “”

parsedCommands.clear()

此项目以Raspberry Pi为中心,除麦克风和显示器外不需要任何电路或硬件。虽然可以使用普通的显示器或电视显示器,但它对于安装来说并不是很实用,因此在这个项目中,我得到了一个小型的3.5英寸Raspberry Pi显示器,分辨率为480x320。虽然这对于正常使用而言太小,但它非常适合命令行工作,如果通过网络编程和使用此Pi(使用SSH),则可以从任何具有Internet连接的PC上运行Python程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84453
  • 树莓派
    +关注

    关注

    116

    文章

    1699

    浏览量

    105524
收藏 人收藏

    评论

    相关推荐

    使用树莓实现远程控制的技巧

    树莓是一款功能强大的微型计算机,其体积小巧、价格低廉,非常适合用于各种DIY项目。其中,远程控制树莓应用中非常受欢迎的一个领域。通过远
    的头像 发表于 11-11 11:37 281次阅读

    树莓开发的最佳编程语言选择

    应用。 1. Python 优势: 易学易用: Python以其简洁的语法和强大的功能而闻名,非常适合初学者。 广泛的库支持: Python拥有大量的库,如GPIO Zero、PiGPIO等,这些库使得
    的头像 发表于 11-11 11:34 229次阅读

    树莓与Arduino的区别是什么

    在当今的科技世界中,树莓(Raspberry Pi)和Arduino是两个经常被提及的名字。它们都是开源硬件平台,但它们的目标、功能和用途却大相径庭。 1. 目标和用途 树莓(Ra
    的头像 发表于 11-11 11:14 347次阅读

    ARM开发板与树莓的比较

    ARM开发板和树莓都是基于ARM架构的单板计算机,它们在教育、工业控制、物联网等领域有着广泛的应用。 硬件配置 ARM开发板和树莓的硬件
    的头像 发表于 11-05 11:11 242次阅读

    树莓gpio有什么用,树莓gpio接口及编程方法

    /Output,通用输入/输出)是树莓提供的一组可编程的引脚,是树莓与外部世界进行交互的重要桥梁。通过GPIO,用户可以控制外部电路,读
    的头像 发表于 10-22 18:09 488次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 533次阅读

    树莓网关:物联网应用的新标杆

    的特点是体积小巧(大约信用卡大小),但功能齐全,足以支持多种计算任务。 树莓经常被用作物联网网关,收集设备数据,然后将数据上传云平台,并还可以用来接收来自云端的控制指令,控制其他连接
    的头像 发表于 10-09 16:44 241次阅读
    类<b class='flag-5'>树莓</b><b class='flag-5'>派</b>网关:物联网应用的新标杆

    树莓和51单片机哪个有优势

    是一款由英国树莓基金会开发的信用卡大小的单板计算机。自2012年推出以来,树莓已经发展出多个版本,包括A、B、2、3、4等型号。树莓
    的头像 发表于 09-02 09:04 675次阅读

    树莓和单片机的优缺点是什么

    )接口,树莓可以连接各种传感器、执行器和其他外围设备。 易于编程 :树莓支持多种编程语言,如Python、C++、Java等,使得
    的头像 发表于 08-30 18:21 1463次阅读

    树莓的功能用途是什么

    、科研、工业控制、物联网、多媒体播放、家庭自动化等领域。 树莓(Raspberry Pi)是一种小型、低成本的单板计算机,由英国的Raspberry Pi基金会开发,其功能和用途非常广泛。以下是
    的头像 发表于 08-30 18:01 2250次阅读

    树莓是x86还是arm

    树莓(Raspberry Pi)是一款由英国树莓基金会(Raspberry Pi Foundation)开发的微型计算机。它基于ARM架构,而非x86架构。 一、
    的头像 发表于 08-30 15:42 794次阅读

    树莓装ubuntu和raspbian哪个更好

    树莓(Raspberry Pi)是一款由英国树莓基金会开发的单板计算机,广泛应用于教育、科研、物联网等领域。树莓
    的头像 发表于 08-30 15:41 1054次阅读

    树莓5,Raspberry Pi 5 评测

    )连接器,可用于之前发布的Raspberry Pi Pico Debug kit调试,或用于与其他微控制器建立UART连接。 眼尖的同学会注意到 Pi 5 的USB和以太网接口位置发生了交换。树莓5似乎
    发表于 06-19 14:51

    树莓主板如何连接电脑

    连接树莓派到电脑是一个非常有用的功能,它可以让我们在电脑上进行树莓的操作和管理。本文将详细介绍如何连接树莓主板到电脑。我会从准备工作开始
    的头像 发表于 01-07 15:40 1822次阅读

    基于树莓的环境监测系统

    树莓(Raspberry Pi)是一种小型而功能强大的计算机,其性能和功能足以支持许多应用领域。在环境监测系统中,树莓也被广泛应用。本文将详细介绍基于
    的头像 发表于 01-04 15:15 1924次阅读