本文基于ido-sbc3968 ubuntu 系统通过python脚本实现录音和播放功能。
ido-sbc3968采用rk3399国产六核64位cpu高性能处理器,支持4k hdmi2.0显示,接口丰富,拥有千兆以太网,全协议typec接口,usb3.0 ,edp 和 双通道lvds 屏幕接口,支持4g/5g模块和wifi蓝牙,支持6轴g-sensor,支持linux/android系统,适用于高端商显,银行自助终端,工业计算机,机器人等诸多行业。
产品规格书:ido-sbc3968 产品手册
安装依赖库
配置前需要安装好相应的依赖库。
#apt-get update
#apt-get install python3
#apt-get install portaudio19-dev python-all-dev python3-all-dev
#apt-get install libasound-dev libportaudio2 libportaudiocpp0
#apt-get install python3-pip
#pip3 install pyaudio
录音脚本
在编辑脚本前需要知道使用的是哪个声卡。
可以通过“aplay -l ”获取。
#aplay -l
**** list of playback hardware devices ****
card 0: rockchipes8316c [rockchip,es8316-codec], device 0: ff880000.i2s-es8316 hifi es8316 hifi-0 []
subdevices: 1/1
subdevice #0: subdevice #0
card 1: audio [usb audio], device 0: usb audio [usb audio]
subdevices: 1/1
subdevice #0: subdevice #0
由上面的打印可知usb声卡是card1。
编辑python 录音脚本。
#vi record.py
import pyaudio
import wave
import os
chunk = 44100 #采样频率
format = pyaudio.paint16
channels = 1 #声卡通道
rate = 44100
record_seconds = 5 #时长
wave_output_filename = output.wav #导出的音频文件
audio = pyaudio.pyaudio()
# start recording
stream = audio.open(format=format, channels=channels,
rate=rate, input=true,
input_device_index = 1,
frames_per_buffer=chunk)
print(recording...)
frames = []
count=0
for i in range(0, int(rate / chunk * record_seconds)):
#for i in range(0, 5):
#while count < 5:
data = stream.read(chunk)
frames.append(data)
# count += 1
print(finished recording)
# stop recording
stream.stop_stream()
stream.close()
audio.terminate()
wavefile = wave.open(wave_output_filename, 'wb')
wavefile.setnchannels(channels)
wavefile.setsampwidth(audio.get_sample_size(format))
wavefile.setframerate(rate)
wavefile.writeframes(b''.join(frames))
wavefile.close()
录音
#python3 ./record.py
录音结束后我们就可以得到 output.wav 录音文件了。
播放脚本
编辑python 播放脚本。#vi play.py
import pyaudio
import wave
chunk = 44100
filename = './output.wav'
def play(filename = filename):
wf = wave.open(filename, 'rb')
p = pyaudio.pyaudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output_device_index=0,
output=true)
data = wf.readframes(chunk)
while data != b'':
stream.write(data)
data = wf.readframes(chunk)
stream.stop_stream()
stream.close()
p.terminate()
play()
播放
#python3 ./play.py
通过以上指令,就可以播放刚录的音频文件了。
电子产品设计中功率转换拓朴架构重要吗?
韩国电信已发布新一代灾难与安全管理平台SKYSHIP
PCB的简单分类
带远传磁翻板液位计的常见故障及处理
基于TensorFlow的数据导入机制
RK3399 Ubuntu通过Python实现录音和播放功能
区块链在医疗行业中的应用有哪些
学习机器学习的方法及如何运用Python
电气工程原理图合辑
iPad想挑战PC和Macook Pro,还需在iOS软件开发上大步迈进啊!
SPI总线学习笔记
指纹解锁安全吗? 用橡皮泥就能开Iphone
PCB丝印的重要性_PCB丝印网板制作工艺详解
LED灯具失效分析
简述基于金刚石量子技术的医疗成像应用
区块链对于实体经济有什么影响
安全缆绳挂锁在日常运用中一般会遇见什么问题
湖南大学:二维碳材料成键形式对热导率的影响规律!
开放领域问答的基本背景和系统介绍
OpenAI已向微软授予GPT-3的独家许可