当前位置: 首页 > 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/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

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

相关文章:

  • 重新开启GPT Plus充值通道——基于前端开发者工具
  • 电脑技巧:电脑常见蓝屏、上不了网等故障及解决办法
  • 用户与组管理:如何在服务器系统中管理用户和权限
  • npm,yarn,pnpm 清理缓存
  • 【鬼鬼鬼iiARPG开发记录】
  • webpack打包三方库直接在html里面使用
  • ios打包,证书获取
  • 分布式篇---第六篇
  • 【中间件】服务化中间件理论intro
  • LeetCode Hot100 105.从前序与中序遍历序列构造二叉树
  • Django同时连接多种数据库
  • Python 测试框架 Pytest 的入门
  • 如何将本地websocket发布至公网并实现远程访问?
  • 十大排序之计数排序、桶排序、基数排序(详解)
  • Android YUV存储方式
  • 百度AI布局:从财报看百度的核心竞争力和未来发展方向
  • 如何找出excel中两列数据中不同的值(IF函数的用法)
  • 分布式事务seata的AT模式介绍
  • 【点云surface】Poisson表面重建
  • 【opencv】计算机视觉:实时目标追踪
  • OpenAI与微软正谈判修改合作条款,以推进未来IPO
  • 汇源果汁发文:经营情况一切正常
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?
  • 第19届威尼斯建筑双年展开幕,中国案例呈现“容·智慧”
  • 一生要出片的年轻人,买爆相机
  • 印称一名高级官员在巴基斯坦发动的袭击中死亡