8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

参考:

配置:

喇叭:3.5音频口

麦克风:摄像头自带麦克风(Usb)

1. 安装需要的软件1

2sudo apt-get install python-pip mplayer flac python2.7-dev libcurl4-gnutls-dev

sudo pip install requests pycurl

2. 配置配置麦克风和音箱1

2

3

4

5

6

7

8

9

10$ cat /proc/asound/cards

0 [ALSA ]: bcm2835 - bcm2835 ALSA

bcm2835 ALSA

1 [Camera ]: USB-Audio - USB 2.0 Camera

Sonix Technology Co., Ltd. USB 2.0 Camera at usb-3f980000.usb-1.2, high speed

$ cat /proc/asound/modules

0 snd_bcm2835

1 snd_usb_audio

第一个命令查看声卡是否存在

第二个命令应该是看声卡的驱动的

调整输入输出音频工具alsamixer:sudo alsamixer

3. 播放声音aplay make.wav

结果声音没有播放

网上查了,

By default output will be automatic (hdmi if hdmi supports audio, otherwise analogue). You can force it with:amixer cset numid=3 where n is 0=auto, 1=headphones, 2=hdmi.

If you have pulseaudio installed you need to also specify the card number:amixer -c 0 cset numid=3

所以运行amixer cset numid=3 1

就可以听到3.5输出了

4. 麦克风测试sudo arecord –duration=10 –device=plughw:1,0 –format=cd aaa.wav

指令中的’–device=plughw:1,0’ 选项指派特定的录音设备,而Raspberry Pi的内置音效设备是’plughw:0,0’

使用百度api进行语音播放:

5. 使用百度API进行语音识别和播放

测试取的token:1

2

3

4

5

6

7

8

9

10

11import requests

import json

url = 'https://openapi.baidu.com/oauth/2.0/token'

payload = {'grant_type':'client_credentials',

'client_id':'ZEzwlE2gipnqoE3jqiCKN7SN',

'client_secret':'KOyWkyE57qWnDnFoc5afwIk0zBMw2X1p'}

r = requests.post(url,data=payload)

print json.loads(r.text)['access_token']

测试ok后,开始正式写:

大致思路:

将请求的token保存到文件中,然后读取文件中的accesstoken,判断token的日期是否有效,无效重新请求token。

代码:

app.py1

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

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131# -*- coding:utf8 -*-

import requests

import os

import json

import time

import uuid

import base64

class API(object):

def __init__(self):

dic = {

'hello':'欢迎使用语音播放',

'error':'识别错误',

}

for key in dic:

self.txt2audio(dic[key],key)

if key == 'hello':

self.play(key)

pass

def get_token(self):

token = None

if os.path.exists('token'):

file = open('token','r')

token = file.read()

file.close()

if json.loads(token)['expires'] < time.time():

token = self.req_token()

else:

print "load cache token"

pass

else:

token = self.req_token()

return json.loads(token)['access_token']

def req_token(self):

print "request new token"

token = None

url = 'https://openapi.baidu.com/oauth/2.0/token'

key = 'ZEzwlE2gipnqoE3jqiCKN7SN'

secret = 'KOyWkyE57qWnDnFoc5afwIk0zBMw2X1p'

payload = {'grant_type':'client_credentials',

'client_id':key,

'client_secret':secret}

r = requests.post(url,data=payload)

token = r.text

jtoken = json.loads(token)

jtoken['expires'] = jtoken['expires_in'] + time.time()

token = json.dumps(jtoken)

file = open('token','w')

file.write(token)

file.close()

return token

def txt2audio(self,txt,audio='tmp'):

access_token = self.get_token()

url = "http://tsn.baidu.com/text2audio"

payload = {

'tex':txt,

'lan':'zh',

'tok':access_token,

'ctp':1,

'cuid':uuid.UUID(int = uuid.getnode()).hex,

'spd':5,

'pit':8,

'vol':9,

'per':1,

}

r = requests.post(url,payload)

if r.headers['Content-Type'] == 'audio/mp3':

file = open(audio + '.mp3','w')

file.write(r.content)

file.close()

else:

self.play('error')

print r.text

pass

def audio2txt(self,file='rec'):

access_token = self.get_token()

url="http://vop.baidu.com/server_api"

self.txt2audio('请说:')

self.play('tmp')

os.system('arecord --duration=2 -c 1 --device=plughw:1,0 -f S16_LE -t wav -v --rate=16000 ' + file + '.wav')

f = open(file + '.wav','r')

sound = f.read()

f.close()

payload = {

'format':'wav',

'rate':16000,

'channel':1,

'cuid':uuid.UUID(int = uuid.getnode()).hex,

'token':access_token,

'lan':'zh',

'speech':base64.b64encode(sound),

'len':len(sound),

}

header = {'Content-Type':'application/json'}

r = requests.post(url,data=json.dumps(payload),headers=header)

print r.text

jret = json.loads(r.text)

if jret.has_key('result'):

ret = json.loads(r.text)['result'][0].split(',')[0]

else:

ret = ""

return ret

pass

def play(self,file='tmp'):

# can not play the mp3 by aplay

# os.system("aplay " + file + ".mp3")

os.system("mpg321 " + file + ".mp3")

pass

baidu.py1

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# -*- coding:utf8 -*-

from baidu import API

import RPi.GPIO as GPIO

import time

import requests

import uuid

import json

pin = 13

GPIO.setmode(GPIO.BCM)

GPIO.setup(pin, GPIO.IN)

baidu = API()

# baidu.txt2audio("你好")

# baidu.play('tmp')

def get_tuling(text):

url='http://www.tuling123.com/openapi/api'

data={'key':'fa78fe2fbb85c914c7126d42bc7c3ebb','info':text,'userid':str(uuid.UUID(int = uuid.getnode()).hex,)}

r = requests.post(url,data=data)

ans = json.loads(r.text)

return ans

while True:

change = False

while GPIO.input(pin) == GPIO.LOW:

change = True

time.sleep(0.005)

if change == True:

#baidu.txt2audio('我听着,请说指令:')

text = baidu.audio2txt()

print text

if len(text) > 0:

rep = get_tuling(text)

rep = rep['text']

print rep

else:

rep = "我没有听清"

baidu.txt2audio(rep)

baidu.play()

change = False

time.sleep(1)

遇到坑:mp3格式只能通过mpg321播放

读取文件token = file.readlines()[0],是一个列表,所以需要先取第一个再用json转。

树莓派c语言百度语音识别,树莓派语音识别相关推荐

  1. 树莓派c语言人脸识别,树莓派实现简单的人脸识别

    前言 这篇文章属于此系列: 一个用树莓派做的会聊天,能人脸识别(支持云台追踪)和发送邮件的小玩具 https://blog.csdn.net/yonglisikao/article/details/8 ...

  2. 树莓派c语言led,用树莓派实现RGB LED的颜色控制——C语言版本号

    用树莓派实现RGB LED的颜色控制 RGB色彩模式是工业界的一种颜色标准.是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代 表红.绿. ...

  3. 树莓派c语言运行_树莓派完成简单的编程(四)

    在上一篇文章中,我们学习了Vi文本编辑器,那么用它可以实现什么功能呢? 树莓派python以及c语言编程 这里我选择了最简单和很流行的两种编程语言: C语言和Python.实现最简单的功能,输出hel ...

  4. 树莓派c语言按键开关,树莓派 GPIO按钮开关 原理与实现

    本以为GPIO接一个开关是很简单的事情,但实际上需要学会很多前置的知识才能搞得下去,所以我把整个事情的原理和实现流程全部记录下来,希望帮助到像我一样的电路小白. 硬件 树莓派 * 1(我的是1B型号) ...

  5. 树莓派c语言pca9685,使用树莓派控制16路舵机驱动板(pca9685)

    使用RPI.GPIO 创建一个 PWM 实例: 启用 PWM: 更改频率: 更改占空比: 停止 PWM: 但当你同时使用多个舵机时,PWM输出就变得困难了.这时可以借助舵机控制板来进行多路PWM控制. ...

  6. 树莓派C语言pca9685代码,树莓派,PCA9685 pwm控制

    硬件: 1> 树莓派2/3  B板 2> PCA9685 16路驱动板: http://duinopeak.com/wiki/index.php?title=PCA9685_16%E8%B ...

  7. 树莓派c语言访问mariadb,树莓派之MariaDB

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 安装MariaDB MariaDB是MySQL的一个分支 直接命令行敲入:1sudo apt-get install m ...

  8. Android语音识别——谷歌语音识别与百度语音识别

    Android语音识别,简单的理解就是把语音转化为文字. 在日常中,语音识别,车载导航.语音输入等,虽然不一定准确,但用途广泛. 这里就介绍下谷歌原生的语音识别与百度的语音识别 谷歌语音识别 谷歌语音 ...

  9. python通过调用百度api实现语音识别(超详细)

    python通过调用百度api实现语音识别(超详细) 2021.04.18:该文章是在18年,初学Python时写的,所以功能仅限于当时可用,至于现在(貌似依然可用)和以后就不确定了.完整的demo也 ...

最新文章

  1. Activiti——管理流程定义(四)
  2. 年度盘点!必看AI顶会论文、Github高星项目大合集(附链接)
  3. R语言Kmeans聚类、抽取聚类簇:fpc包clusterboot函数通过bootstrap重采样的方法评估Kmeans聚类的稳定性、fpc包的kmeansruns函数通过CH准则和ASW获取最优K值
  4. NeurIPS 2020 | 微软亚洲研究院论文摘录之强化学习GAN篇
  5. 王者归来:分布式调度解决方案 ElasticJob 重启!
  6. python文件输出-python文件流
  7. WIN8、WIN7访问Windows Server 2003服务器的数据库速度很慢、远程速度很慢的解决方法...
  8. MATLAB从入门到精通-Matlab R2020b新功能 | 子标题和标题/标签对齐功能!
  9. C语言中声明和定义的区别
  10. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数
  11. Mysql执行计划含义,mysql执行计划介绍
  12. jquery ajax php中 css样式不显示,Chrome浏览器在Ajax同步调用之前不会显示Jquery的动态css Propery更改...
  13. 【资源下载】512页IBM沃森研究员Charu最新2018著作《神经网络与深度学习》(附下载链接)
  14. 【干货】一张蓝图九大行动领域,实现AI赋能的企业转型-IBM.pdf(附下载链接)...
  15. [转]关于computer vision的会议及vision guys
  16. 正向代理、透明代理、反向代理的理解示意图
  17. 《Java从入门到精通》(第六版)配套资源分享
  18. AD19快速制作多管脚元件符号
  19. 别了,Easy微博!
  20. 火星编年史_雷.布拉德伯里

热门文章

  1. ES 根据查询条件求和sum
  2. word页边距调整步骤
  3. SONET/SDH技术讲解
  4. python分析数据的相关性_使用Python进行相关性分析
  5. 商品订单管理系统java_Javaweb的实例--订单管理系统--设计数据库
  6. springboot+redis实现微博热搜排行榜
  7. 玩纸牌游戏计算机教案,小班数学活动好玩的扑克牌教案
  8. 汉堡王什么汉堡好吃_汉堡王什么汉堡好吃?隐藏的点单攻略快来看
  9. 实习渗透工程师面试记录
  10. Debian设置合上笔记本盖子不休眠