当前位置: 首页 > news >正文

【技术分享】RK3399 Ubuntu通过Python实现录音和播放功能

​本文基于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系统,适用于高端商显,银行自助终端,工业计算机,机器人等诸多行业。

产品规格书可查看深圳触觉智能官网产品中心

安装依赖库

配置前需要安装好相应的依赖库。

#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/1Subdevice #0: subdevice #0
card 1: Audio [USB Audio], device 0: USB Audio [USB Audio]Subdevices: 1/1Subdevice #0: subdevice #0

由上面的打印可知USB声卡是Card1。

编辑python 录音脚本。

#vi record.py
import pyaudio
import wave
import osCHUNK = 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 += 1print("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 waveCHUNK = 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

通过以上指令,就可以播放刚录的音频文件了。

http://www.lryc.cn/news/241639.html

相关文章:

  • 关于vs code Debug调试时候出现“找不到任务C/C++: g++.exe build active file” 解决方法
  • 交叉导轨在光学工作台起什么重要作用?
  • 易点易动固定资产管理系统:实现固定资产与财务系统的高效对接
  • 做亚马逊多久可以赚钱?做亚马逊需要多少资金?——站斧浏览器
  • 计算机应用基础_错题集_基础知识---网络教育统考工作笔记006
  • C#面试题3
  • MariaDB(基础信息)
  • SpringBoot + 通义千问 + 自定义React组件,支持EventStream数据解析!
  • Redis中文结果查看方式
  • 计算机组成原理-磁盘存储器
  • 连接docker swarm和凌鲨
  • Qt实现画的图片移动
  • 比较2个点的3种结构在不规则平面上的占比
  • 最小二乘线性回归
  • 【django+vue】连接数据库、登录功能
  • NX二次开发UF_CSYS_edit_matrix_of_object 函数介绍
  • 封装公共el-form表单
  • OpenHarmony-4.0-Release 源码编译记录
  • HTML新手入门笔记整理:块元素和行内元素
  • Hook+jsdom 解决cookie逆向
  • 【封装UI组件库系列】封装Icon图标组件
  • STM32:基本定时器原理和定时程序
  • EntityFramework 批量删除操作
  • springboot使用的设计模式
  • IP地址定位技术发展与未来趋势
  • AI与交通运输
  • window.requestAnimationFrame+localStorage+canvas实现跨窗口小球连线效果
  • 使用AndResGuard报错:copy res file not in resources.arsc file:Ezi.xml
  • 插入排序(形象类比)
  • ElasticSearch 同步的方式