本文基于IDO-SBC3968 Ubuntu 系統(tǒng)通過(guò)Python腳本實(shí)現(xiàn)錄音和播放功能。
IDO-SBC3968采用RK3399國(guó)產(chǎn)六核64位CPU高性能處理器,支持4KHDMI2.0顯示,接口豐富,擁有千兆以太網(wǎng),全協(xié)議TypeC接口,USB3.0 ,eDP 和 雙通道LVDS 屏幕接口,支持4G/5G模塊和WIFI藍(lán)牙,支持6軸G-Sensor,支持Linux/Android系統(tǒng),適用于高端商顯,銀行自助終端,工業(yè)計(jì)算機(jī),機(jī)器人等諸多行業(yè)。
產(chǎn)品規(guī)格書(shū):IDO-SBC3968 產(chǎn)品手冊(cè)


安裝依賴庫(kù)
配置前需要安裝好相應(yīng)的依賴庫(kù)。
#apt-getupdate
#apt-getinstall python3
#apt-getinstall portaudio19-dev python-all-dev python3-all-dev
#apt-getinstall libasound-dev libportaudio2 libportaudiocpp0
#apt-getinstall python3-pip
#pip3 install pyaudio
錄音腳本
在編輯腳本前需要知道使用的是哪個(gè)聲卡。
可以通過(guò)“aplay -l ”獲取。
#aplay-l
**** ListofPLAYBACKHardwareDevices****
card0: rockchipes8316c[rockchip,es8316-codec], device0: ff880000.i2s-ES8316HiFiES8316HiFi-0[]
Subdevices: 1/1
Subdevice#0: subdevice#0
card1: Audio[USB Audio], device0: USBAudio[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#時(shí)長(zhǎng)
WAVE_OUTPUT_FILENAME = "output.wav"#導(dǎo)出的音頻文件
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
fori 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")
# stopRecording
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
錄音結(jié)束后我們就可以得到 output.wav 錄音文件了。
播放腳本
編輯python 播放腳本。
#vi play.py
importpyaudio
importwave
CHUNK = 44100
FILENAME = './output.wav'
defplay(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)
whiledata != b'':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
play()
播放
#python3 ./play.py
通過(guò)以上指令,就可以播放剛錄的音頻文件了。
-
處理器
+關(guān)注
關(guān)注
68文章
20250瀏覽量
252192 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90022 -
RK3399
+關(guān)注
關(guān)注
2文章
216瀏覽量
26961
發(fā)布評(píng)論請(qǐng)先 登錄
Ubuntu 25升級(jí)全解析!即將移植RK系列芯片,技術(shù)實(shí)踐搶先預(yù)告
Ubuntu系統(tǒng)音頻調(diào)試指南:解決錄音異常問(wèn)題
RK3399 Android12自動(dòng)調(diào)節(jié)屏幕亮度問(wèn)題排查與解決
一文打通Rockchip DP調(diào)試:從原理到實(shí)戰(zhàn),覆蓋RK3399/RK3576/RK3588全平臺(tái)
基于rk3576開(kāi)發(fā)debian、ubuntu、android
速通音頻處理:掌握TTS播放、文件播放與錄音核心,實(shí)現(xiàn)完整功能
新手速成:掌握TTS/文件播放/錄音核心,構(gòu)建完整音頻處理功能
33A66-B1 rk3399開(kāi)發(fā)板規(guī)格書(shū)
RK3399:性能與能效的嵌入式先鋒,解鎖多場(chǎng)景應(yīng)用潛力
系統(tǒng)適配 | RK3588 Ubuntu22.04正式發(fā)布
如何調(diào)用mpp硬解+ffmpeg本地播放視頻,RK3576
干貨分享 | RK3588 Ubuntu系統(tǒng)Docker容器使用指南
技術(shù)分享|iTOP-RK3588開(kāi)發(fā)板Ubuntu20系統(tǒng)旋轉(zhuǎn)屏幕方案
RK3399 Ubuntu通過(guò)Python實(shí)現(xiàn)錄音和播放功能
評(píng)論