【技術分享】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.pswp.cn/news/168001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168001.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis高并發緩存架構

前言&#xff1a; 針對緩存我們并不陌生&#xff0c;而今天所講的是使用redis作為緩存工具進行緩存數據。redis緩存是將數據保存在內存中的&#xff0c;而內存的珍貴性是不可否認的。所以在緩存之前&#xff0c;我們需要明確緩存的對象&#xff0c;是否有必要緩存&#xff0c;怎…

ElasticSearch之配置

ElasticSearch主要的配置文件&#xff0c;如下&#xff1a; elasticsearch.yml&#xff0c;ElasticSearch的相關參數。jvm.options&#xff0c;JVM的相關參數。log4j2.properties&#xff0c;日志的相關參數。 默認情況下&#xff0c;ElasticSearch從$ES_HOME/config目錄下讀…

1 動態規劃解不同的子序列

來源&#xff1a; LeetCode第115題 難度&#xff1a; 困難 問題描述 給定一個字符串S和一個字符串t&#xff0c;計算在S的子序列中t出現的個數。 注解&#xff1a; 字符串的一個子序列是指&#xff0c;通過刪除一些(也可以不刪除)字符且不干擾剩余字符的相對位置所組成的…

2022年03月 Scratch(三級)真題解析#中國電子學會#全國青少年軟件編程等級考試

Scratch等級考試(1~4級)全部真題?點這里 一、單選題(共25題,每題2分,共50分) 第1題 以下四個選項中,運行哪個積木塊,可能得到523這個數值? A: B: C: D: 答案:B 四個選項都遵循統一的公式:隨機數ⅹ10+3=523,因此可以得出隨

ZXing創建二維碼位圖

Android生成二維碼通常使用ZXing庫&#xff0c;其中提供了QRCodeWriter類。QRCodeWriter可將字符串編譯為位矩陣BitMatrix&#xff0c;然后我們可以將位矩陣轉為Int數組&#xff0c;通過bitmap.setPixels()方法將數組繪制于位圖上。 1. 添加依賴 //Gradle Scripts -> buil…

和數集團出席中科院上海高研院?第三十三期“高研交叉論壇”信息能源融合專場

2023年11月21日&#xff0c;中國科學院上海高等研究院第三十三期“高研交叉論壇”信息能源融合專場在上海高研院成功舉辦。本次論壇由中國科學院上海高等研究院智能信息通信技術研究與發展中心、中國科學院低碳轉化科學與工程重點實驗室、中科院和數智能區塊鏈與能源系統應用聯…

【文末送書】機器學習高級實踐

2023年初是人工智能爆發的里程碑式的重要階段&#xff0c;以OpenAI研發的GPT為代表的大模型大行其道&#xff0c;NLP領域的ChatGPT模型火爆一時&#xff0c;引發了全民熱議。而最新更新的GPT-4更是實現了大型多模態模型的飛躍式提升&#xff0c;它能夠同時接受圖像和文本的輸入…

仿 美圖 / 餓了么,店鋪詳情頁功能

前言 UI有所不同&#xff0c;但功能差不多&#xff0c;商品添加購物車功能 正在寫&#xff0c;寫完會提交倉庫。 效果圖一&#xff1a;左右RecyclerView 聯動 效果圖二&#xff1a;通過點擊 向上偏移至最大值 效果圖三&#xff1a;通過點擊 或 拖動 展開收縮公告 效果圖四&…

SpringBoot3核心原理

SpringBoot3核心原理 事件和監聽器 生命周期監聽 場景&#xff1a;監聽應用的生命周期 可以通過下面步驟自定義SpringApplicationRunListener來監聽事件。 ①、編寫SpringApplicationRunListener實現類 ②、在META-INF/spring.factories中配置org.springframework.boot.Sprin…

上市公司-股權性質數據(國企、央企)2003-2022年

上市公司-股權性質數據&#xff08;國企、央企&#xff09;是一個針對上市公司的數據集&#xff0c;主要涵蓋了A股公司股權性質的詳細信息&#xff0c;區分了公司是否為民營企業、國企或央企。這份數據集提供了每家上市公司的股權結構背景&#xff0c;對投資者、市場分析師和經…

Shell循環:for(二)

一、通過用戶列表文件創建用戶 需求&#xff1a;通過用戶列表文件創建用戶 [rootlocalhost ~]# cat user.txt qian yoa huang演示&#xff1a; [rootlocalhost ~]# vim foruser.sh #編寫腳本 #!/bin/bash for i in cat user.txt do useradd $i if [ $? -eq 0 ] thenech…

2023年亞太杯數學建模C題新能源汽車成品文章(思路模型代碼成品)

一、翻譯 新能源汽車是指采用先進的技術原理、新技術和新結構&#xff0c;以非常規車用燃料&#xff08;非常規車用燃料是指汽油和柴油以外的燃料(非常規車用燃料是指汽油和柴油以外的燃料&#xff09;&#xff0c;并集成了汽車動力控制和驅動等先進技術的汽車。新能源汽車包括…

C++入門第九篇---Stack和Queue模擬實現,優先級隊列

前言&#xff1a; 我們已經掌握了string vector list三種最基本的數據容器模板&#xff0c;而對于數據結構的內容來說&#xff0c;其余的數據結構容器基本都是這三種容器的延申和擴展&#xff0c;在他們的基礎上擴展出更多功能和用法&#xff0c;今天我們便來模擬實現一下C庫中…

superset 后端增加注冊接口

好煩啊-- &#xff1a;< 1.先定義modes: superset\superset\models\user.py # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information…

Tars框架 Tars-Go 學習

Tars 框架安裝 網上安裝教程比較多&#xff0c;官方可以參數這個 TARS官方文檔 (tarsyun.com) 本文主要介紹部署應用。 安裝完成后Tars 界面 增加應用amc 部署申請 amc.GoTestServer.GoTestObj 名稱不知道的可以參考自己創建的app config 點擊刷新可以看到自己部署的應用 服…

獲取當日的日期三個月后的日期

使用 java.time.LocalDate 類進行計算 import java.time.LocalDate;public class ThreeMonthsLaterExample {public static void main(String[] args) {// 獲取當前日期LocalDate currentDate LocalDate.now();// 添加三個月LocalDate threeMonthsLater currentDate.plusMont…

【阿里云服務器】2023安裝寶塔面板8.0.4

文章目錄 前言安裝寶塔遠程鏈接服務器輸入安裝寶塔命令放行寶塔端口 一鍵安裝環境附錄重裝系統Linux系統卸載寶塔方式一方式二 遇見的問題 前言 鏡像是CentOS 7.9.4 安裝寶塔 遠程鏈接服務器 輸入安裝寶塔命令 yum install -y wget && wget -O install.sh https://…

Android 13.0 系統settings系統屬性控制一級菜單顯示隱藏

1.概述 在13.0的系統rom定制化開發中,系統settings的一級菜單有些在客戶需求中需要去掉不顯示,所以就需要通過系統屬性來控制顯示隱藏, 從而達到控制一級菜單的顯示的目的,而系統settings是通過靜態加載的方式負責顯示隱藏,接下來就來實現隱藏顯示一級菜單的 功能實現 2.…

2023年亞太杯數學建模A題水果采摘機器人的圖像識別功能(基于yolov5的蘋果分割)

注&#xff1a;.題中附錄并沒有給出蘋果的標簽集&#xff0c;所以需要我們自己通過前4問得到訓練的標簽集&#xff0c;采用的是yolov5 7.0 版本&#xff0c;該版本帶分割功能 一&#xff1a;關于數據集的制作&#xff1a; clc; close all; clear; %-----這個是生成yolov5 數據…

任務4-繪制圖形

python字典的使用方法 !echo $(date)‘開始下載并解壓’ && curl -o Task4.zip https://zyenv-1302342904.cos.ap-guangzhou.myqcloud.com/datas/TianJin/Task4_TJ_ZZ.zip && unzip -o Task4.zip > /dev/null 2>&1 && echo $(date)‘解壓完…