Crontab 简单实现树莓派语音闹钟

树莓派实验室按:这是来自 hyhmnn 的投稿。是时候关掉你的手机闹铃了,用树莓派外接一个音箱就可以 Make 一款科技感和实用性兼备的“AI 闹钟”。这里用到了 Linux 的计划任务、百度语音 API、天气 API。

不看天气的死宅(不爱带包),出门遇到下雨天就尴尬了,在学校还好可以蹭伞,到外面就不行了。
一开始的解决办法就是将爬到的天气信息发到微信上GETWeaInfo
结果有个很大的问题就是,网络要是断了,或者程序不运行了,就要重新载终端上扫二维码登录(太麻烦了)。
于是乎~就有了下面的想法——用树莓派做个天气闹钟。下面开始了!

播放mp3

前提:树莓派安装系统(我装的是最小化的Raspbian jessie)),ssh连接,wifi连接How to set up WiFi..网上都有…音响(基本都可以,没有就用耳机先代替),LED。


1

2

3

4

5

6

sudo apt-get update

sudo apt-get install maplayer2

#更新源

#安装mplayer(用他来播放MP3)

mplayer xxx.mp3

#测试一下

如果有声ok,没有参考林佳楠的博客

配置运行环境

前提:用的python3
安装python3


1

2

3

4

5

6

7

8

9

10

11

12

13

sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev libssl-dev openssl libgdbm-dev liblzma-dev libreadline-dev libncursesw5-dev

#安装依赖包

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

#下载源码包,你也可以换其他的

tar zxf Python-3.6.1.tgz

#解压

cd Python-3.6.1/

./configure --prefix=/usr/loacl/python3

make

sudo make install

echo $?

#如果是0就是正确的,非零仔细看报错信息去百度google(我没有遇到,不好解答)

sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3

安装virtualenv


1

2

3

4

5

6

7

8

sudo pip install virtualenv

mkdir naozhong

cd naozhong

virtualenv - p /usr/bin/python3 naoz

#/usr/bin/python3 是你安装python3可执行路径(不知道就运行$ which pytho3),

source naoz/bin/activate

#前面会出现(dirname)

#deactivate (退出)

virtulaenv的作用&&详细使用
安装需要用到的库


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

pip install requests

pip install beautifulsoup4

pip install baidu-aip

#安装失败,因为依赖的库pillow安装失败

#那就装一些pillow的依赖包

sudo apt-get install libtiff5-dev

    libjpeg8-dev

    zlib1g-dev

    libfreetype6-dev

    liblcms2-dev

    libwebp-dev

    tcl8.6-dev

    tk8.6-dev

    python-tk

#我试下来需要一个一个安装,

#能安装就安装,不能的就跳过。

#再次 pip install pillow&&pip install baidu-aip

pip install rpi.gpio

#遇到问题error:command ‘arm-linux-gnueabihf-gcc‘ failed with exit status 1

sudo apt-get install python3-dev

sudo apt-get install libevent-dev

#再次pip install rpi.gpio

代码

灯闪亮


1

vim LEDShining.py


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO

import time

#init GPIO

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11, GPIO.OUT)

def LED_shining():

    try:

        GPIO.output(111)

        time.sleep(0.5)

        GPIO.output(110)

        time.sleep(0.5)

    except:

        print(‘‘)

def main():

    for tmp_a in range(60):

        LED_shining()

    GPIO.cleanup()

if __name__ == ‘__main__‘:

    main()

led正极接在11引脚上,负极我放在GND

获取天气并用百度语音转mp3文件


1

vim wulala.py


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

# -*- coding: utf-8 -*-

from aip import AipSpeech

import requests

import re

from bs4 import BeautifulSoup

import time

‘‘‘

爬取天气网-无锡

http://www.weather.com.cn/weather/101190201.shtml

‘‘‘

def getHtmlText(url,code=‘utf-8‘):

    try:

        = requests.get(url)

        r.raise_for_status()

        r.encoding = code

        return r.text

    except:

        return ‘‘

def makeSoup(html):

    wstr = ‘‘

    if html == ‘‘:

        return ‘哎呀~今天我也不知道无锡天气了‘

    else:

        soup = BeautifulSoup(html,‘html.parser‘)

        soup1 = soup.find_all(‘li‘,attrs = {‘class‘:‘on‘})[1]

        str1 = re.findall(r‘>(.*)</‘,str(soup1))

        = ‘‘

        try:

            slist = re.findall(r‘^(.*)</span>(.*)<i>(.*)$‘,str1[4])

            for in range(len(slist[0])):

                += slist[0][x]

        except:

            = str1[4]

        if ‘/‘ in b:

            = b.replace(‘/‘,‘-‘)

        str1[4= ‘无锡的温度是‘+b

        #print(str1[4])

        str1[6= ‘小风风是‘+str1[6]

        for in str1:

            if i != ‘‘:

                wstr = wstr +i

        if ‘雨‘ in wstr:

            wstr += ‘今天别忘记带雨伞哦!‘

        #print(wstr)

        return wstr

‘‘‘

用百度的AIP

把文字变成mp3文件

‘‘‘

def stringToMp3(strings_txt):

    strings_txt = ‘起床呀~懒虫~起床啊~死肥宅~起床啦~要上班啦!今天是‘ + strings_txt

    APPID = ‘9***3**8‘

    APIKey = ‘QC*****UK*****nP***b‘

    SecretKey = ‘e8***6******25*****56‘

    aipSpeech = AipSpeech(APPID,APIKey,SecretKey)

    result = aipSpeech.synthesis(strings_txt,‘zh‘,‘1‘,\

                                {‘vol‘:8,

                                ‘per‘:4,

                                ‘spd‘:5})

    if not isinstance(result,dict):

        with open(‘test_tmp.mp3‘,‘wb‘) as f:

            f.write(result)

‘‘‘

执行的主函数

‘‘‘

def main():

    url = ‘http://www.weather.com.cn/weather/101190201.shtml‘

    html=getHtmlText(url)

    stringToMp3(makeSoup(html))

if __name__ == ‘__main__‘:

    main()

去创建新应用,看开发文档,查看key,复制进去,就可以使用百度语音api了。
百度语音合成-开发文档
天气网选择你的城市,把main函数下的url改了,如果html结构都是一样的,那就都可以执行,如果不一样需要更改makeSoup函数了。

最后设置定时运行

首先看时区(中国的是CST)、时间对不对


1

date

时区不对:


1

2

sudo dpkg-reconfigure tzdata

#选择亚洲-上海就可以了

时间不对:


1

sudo ntpd -s -d

定时


1

crontab -e

第一次运行需要指定您的编辑器(随意选)
在最后添加


1

2

3

50,53,55 7 * * * /home/pi/naozhong/naoz/bin/python3 /home/pi/naozhong/LEDShining.py

45 7 * * * /home/pi/naozhong/naoz/bin/python3 /home/pi/naozhong/wulala.py > /home/pi/naozhong/wulala.log 2>&1

50,53,55 7 * * * `mplayer /home/pi/naozhong/tmp.mp3`

前面的python3,就是virtualenv下的python
后面的文件也需要使用绝对路径
mpalyer命令有’`’这个符合不要忘记加上

原文地址:https://www.cnblogs.com/zhengAloha/p/8727177.html

时间: 2024-10-29 02:46:19

Crontab 简单实现树莓派语音闹钟的相关文章

树莓派-语音聊天机器人+语音控制引脚电平高低

最近和几位本学院的研究生师兄师姐参加研究生电子设计大赛,自己也来折腾下之前没有搞完的语音控制小车.恰巧自己负责的是语音控制这部分,折腾了几天也差不多搞定啦…把自己的折腾套路总结一下,给一起折腾的小伙伴点经验之谈… 一.配置树莓派 我们这次使用的最新的树莓派3,镜像直接是官网下载的Raspbian.这也是让我感觉最有树莓派感觉的一个系统.主要是sudo raspi-config的配置. 1和2最好都是设置一下,然后3看自己爱好吧:4的里面我都是重新设置的,包括时区.语言和字体.字体最好下载(apt

简单剖析智能语音交互技术

机器学习和自然语言处理技术的进步为语音与人工智能的交互提供了可能.人们可以通过对话获得信息,并与机器互动,而机器将不再只存在于科幻小说中.语音交互是未来的发展方向.智能扬声器是语音交互着陆的第一代产品. 以市面上面流行的智能电话机器人为例,他的AI模块主要包含了4部分自动语音识别(Automatic Speech Recognition, ASR),自然语言理解(Natural Language Understanding, NLU),自然语言生成(Natural Language Genera

crontab简单使用

crontab用于设置周期性被执行的指令,最近有在工作中尝试着编辑了一个命令,所以决定将这个命令编辑整理一下保存起来,以便以后会用到 使用权限:所有用户 参数: -e [UserName]: 编辑目前的时程表 -r [UserName]: 删除目前的时程表 -l [UserName]: 列出目前的时程表 -v [UserName]:列出用户cron作业的状态 基本格式 :  f1 f2 f3 f4 f5 program f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月

Linux 下crontab简单使用

0.个人标记 caicongyang http://blog.csdn.net/caicongyang 1.crontab crontab是linux下的一个定时任务,在sping中也有该机制 2.基本格式 * * * * * command 分 时 日  月 周  命令 3.命令 usage: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1003.2)

linux 计划任务 crontab 简单用法

添加计划任务: 方法1: crontab -e 方法2: vim /etc/crontab #这种方式进去的文件有个sample可供参考 查看已经启动的任务:crontab -l 查看运行状态:service crond status /sbin/service crond start /sbin/service crond stop /sbin/service crond restart /sbin/service crond reload 以上1-4行分别为启动.停止.重启服务和重新加载配置

30 智能音箱

Crontab 简单实现树莓派语音闹钟 http://shumeipai.nxez.com/2017/10/27/crontab-and-raspberry-pi-voice-alarm-clock.html 离线音响 叮当:一个开源的树莓派中文智能音箱项目 http://shumeipai.nxez.com/2017/07/25/use-the-dingdang-sound-control-the-fan.html 使用叮当声控智米电风扇 http://shumeipai.nxez.com/2

手机小闹钟需求分析

Android 手机小闹钟 日常生活工作中,时常会有一些重要事情或日程安排,而闹钟作为一种提醒人们的工具,成为很多人生活中不可或缺的一部分. 本软件包括的功能有闹钟设置.闹钟创建.闹钟关闭等模块.本应用使用简单,容易学容易会,非常容易上手,主要是在UI设计上使用了移动平台上最主流的设计理念:简单和引导,虽然界面相对传统PC界面显得简单,但是其功能是豪不逊色的,在保留其功能全面性的基础上,设计了最简单的界面而进行展示和操作,使得用户能够不需要事先的任何学习,就可以熟练的进行操作. 1) N (Ne

使用crontab进行Android代码的自动更新和构建

引子 最近的工作是一个在Android平台上进行开发的项目,我个人基本是不改动Android部分的代码,但是我所在的项目需要使用到Android编译出来的很多目标文件.另一方面,我又不是开发apk等基于通用Android平台的项目,即Android部分的代码是有其他同事在进行维护.那么就会有这样的场景:我需要保持Android部分代码的更新和并构建出来. 编译过整个Android工程的人都知道编译一次的时间大概要30分钟以上(如果你是独占服务器且内存超大,那么请默默走开~),要是整个工程全部进行

【自动语音识别课程】第二课 语音信号分析

[传送门] [自动语音识别课程]第一课 统计语音识别介绍 原文地址:http://blog.csdn.net/joey_su/article/details/36414877 转载请注明出处,欢迎交流. 概述 针对ASR的语音信号分析 特征 频谱分析 倒谱分析 标准特征:MFCC和PLP分析 动态特征 第一课的结尾提到了语音识别的框图,下图展示了信号分析技术在语音识别系统中的位置: 我们先来认识下语音的产生过程: 语音是在发音器官和声道共同作用下产生的.说话时,声带振动发出具有一定周期特性(基音