此叫床器大概功能就是实现在网页端远程给我发送摩斯电码或者语音,我家的树莓派收到后会大声播放出来。体验地址:https://aoaoao.me/rasp
网页部分截图如下:
实际执行效果我拍成视频传到秒拍了:http://www.miaopai.com/show/aEiPEgybaIkkK6-6~4Uf3zaaPmzKtCnv.htm
硬件部分
硬件部分非常简单,只是一个树莓派接了一个扬声器:
软件部分
语音播报
语音播报使用的是百度翻译的TTS api,效果还不错,接口URL为:http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=3&text=
树莓派获取到用户输入的文字后,使用此API转换为音频,保存后播放出。这里我使用pygame库来播放MP3,可能是因为采样率还是什么的没设置好,所以播放出来的音频是加快的,也就是视频中那个滑稽的声音。
此部分代码:
# -*- coding: UTF-8 -*-
import sys
import pygame
import time
import requests
s = time.time()
r = requests.get("http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=3&text="+str(sys.$
with open(str(s)+".mp3", "wb") as code:
code.write(r.content)
pygame.mixer.init()
pygame.mixer.music.load(str(s)+".mp3")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
i=1
`</pre>
### 摩斯电码播报
原本打算使用Python直接发出特定频率的声音,在Windows下试验成功但在Linux下在发现winsound这个发声库只能在win下工作。所以我采用了一种笨拙的方式:生成一段600Hz的音频,使用pygame播放这段音频,通过调整音量来实现“滴答”的效果。似乎是因为Python本身的执行速率问题,如果将发生间隔设置太短,人的主观感受就是一直在响,所以最终的播报还是比较缓慢的,不太像正宗的发报机的声音。
代码如下:
<pre class="language-python">`import pygame
import time
import sys
pygame.mixer.init()
pygame.mixer.music.load("/home/dot.mp3")
time.sleep(2)
pygame.mixer.music.play()
pygame.mixer.music.set_volume(0)
t=str(sys.argv[1])
for letter in t:
if letter == ".":
pygame.mixer.music.set_volume(1)
time.sleep(0.2)
pygame.mixer.music.set_volume(0)
time.sleep(0.3)
elif letter == "-":
pygame.mixer.music.set_volume(1)
time.sleep(0.4)
pygame.mixer.music.set_volume(0)
time.sleep(0.2)
else:
time.sleep(1)
收到的内容
如果我闲的话,会把收到的内容在这更新(~ ̄▽ ̄)~
- 苟利国家生死以
- 所以,这是啥
- 好好学习
- 哈哈哈哈哈哈