資料介紹
描述
介紹
ChatterPi 是一個將 Raspberry Pi 變成音頻伺服控制器的軟件包。換句話說,Pi 根據(jù)音頻輸入的音量輸出命令來控制伺服。輸入可以是存儲的音頻文件(單聲道或立體聲.wav 格式)或來自外部源,例如麥克風或線路電平輸入。用途之一是驅(qū)動電子動畫道具,例如頭骨或會說話的鳥。
[這篇文章已經(jīng)更新以反映最新版本中添加的新功能。]
背景:會說話的顱骨控制簡史
仍然產(chǎn)生良好影響的常見道具是會說話的物體,無論是頭骨還是動物。一些成本較低的商業(yè)道具使用馬達和彈簧。另一種方法是預先編程一個完整的序列來匹配人聲,但這非常耗時,如果你想改變?nèi)寺?,或者只是稍微編輯一下,你需要重新編程整個序列。出于這個原因,使用音頻伺服控制器來驅(qū)動控制顎的伺服電機是一種非常流行的方法。有幾種變體。最早使用硬件之一來檢測音頻何時超過閾值,然后開始將下頜移動到完全打開的位置,當音頻低于閾值時,它將開始關(guān)閉下頜。“可怕的特里”西蒙斯可能是第一個開發(fā)電子硬件板的人為此,Cowlacious Designs繼續(xù)改進和銷售商業(yè)版本,增加了許多附加功能,例如內(nèi)置音頻播放器、各種觸發(fā)選項以及控制 LED 作為眼睛的能力。
后來,一個名叫 Mike(無親屬關(guān)系)的人將 Arduino 與硬件音量級板結(jié)合起來生產(chǎn)了Jawduino 。這從只有 2 個級別變?yōu)?4 個級別。原始項目只是接收音頻并控制伺服,但其他項目添加了擴展以播放存儲的 mp3 文件和/或隨機移動其他伺服(例如,http://batbuddy.org/資源/Halloweenstuff/TalkingSkull.php )。
幾年前,來自 Haunt Hackers 的 Steve Bjork 將專用硬件與螺旋槳微控制器相結(jié)合,將級別數(shù)增加到近 256 個,并濾除不會導致口語聲音出現(xiàn)下巴移動的低頻和高頻。結(jié)果是Wee Little Talker 。該商業(yè)板還具有板載 mp3 播放器,可以從外部觸發(fā),控制 LED“眼睛”,并增加了包括語音反饋菜單系統(tǒng)在內(nèi)的多種功能。
我突然想到,憑借當前的單板計算機功能和強大的軟件庫,應該可以將所有這些中的大部分最佳功能整合到一個在 Raspberry Pi 上運行的基于軟件的單一系統(tǒng)中。結(jié)果是 ChatterPi。ChatterPi 是使用 Python 語言從頭開始開發(fā)的,但功能和特性的想法是從以前的音頻伺服控制器項目中自由借鑒的。
特征
ChatterPI 的設計非常強大和靈活,無需用戶修改任何代碼(盡管高級用戶當然也可以這樣做)。手冊的“操作”小節(jié)中描述了所有功能和選項。
![poYBAGNht4KAZQmKAADxgIPOU4c060.jpg](https://file.elecfans.com/web2/M00/76/BB/poYBAGNht4KAZQmKAADxgIPOU4c060.jpg)
演示視頻
該視頻展示了 ChatterPi 的運行情況,同時使用了已保存的.wav 文件和麥克風輸入。ChatterPi 正在控制下巴的運動。其他頭骨運動被預先編程為在Pololu Maestro 伺服控制器上運行的腳本。
使用 ChatterPi
本節(jié)介紹如何設置和安裝使用 ChatterPi 和使用它的硬件和軟件。
硬件
ChatterPi 是在 Pi 3 A+ 和 Pi Zero W 上開發(fā)和測試的。鑒于它適用于 Pi Zero,它應該適用于任何 Pi。[2020 年 7 月 13 日更新:原始代碼在音量提取代碼中有一個緩慢的部分,導致它無法在 Pi Zero 上運行。這已在最新版本中修復。]
除了 Raspberry Pi,您還需要一個 USB 聲卡。出于幾個原因需要這樣做。首先,如果您打算使用外部聲源,則需要一種將音頻輸入 Pi 的方法。其次,除了不能產(chǎn)生很好的聲音外,音頻輸出連接器可能與驅(qū)動伺服所需的脈沖寬度調(diào)制 (PWM) 代碼共享時序,從而產(chǎn)生沖突。使用便宜的 USB 聲卡可以解決這兩個問題。我用過 Adafruit 的一款,售價不到 5 美元,效果很好(見https://www.adafruit.com/product/1475)。您需要將 TRS(標準立體聲)插頭或適配器插入聲卡上的耳機和麥克風插孔。該卡不適用于 TRRS(組合麥克風/立體聲耳機插頭。如果您想使用麥克風或其他外部聲源,則只需要一個。否則,您可以使用保存在 Raspberry Pi 上的 audio.wav 文件。您但是,仍然需要 USB 聲卡進行音頻輸出。
這就是音頻伺服控制器所需要的一切。當然,如果你想用一個來觸發(fā)你的道具,你需要一個電源和一個你想要控制的伺服器,例如一個配備伺服器的說話頭骨和一個被動紅外傳感器 (PIR)。我使用 Parallax 的這個(https://www.parallax.com/product/555-28027 )進行開發(fā),因為我已經(jīng)有一個備用的。如果您不想使用外部傳感器,還可以將 ChatterPi 設置為觸發(fā)重復計時器或僅打開并運行。
圖 1 顯示了用于測試操作的測試臺設置。紅色 LED 連接到“TRIGGER_OUT”引腳以進行測試。可以移動它或?qū)⒘硪粋€ LED 和電阻器連接到“EYES_PIN”以測試該功能。觸發(fā)控制器時,TRIGGER_OUT 引腳變?yōu)楦唠娖?0.5 秒。這可用于觸發(fā)另一個道具或控制器。只要音頻播放,EYES_PIN 就會保持高電平。
![pYYBAGNht4aAYmfGAALP9SLJ4mA209.png](https://file.elecfans.com/web2/M00/77/4D/pYYBAGNht4aAYmfGAALP9SLJ4mA209.png)
默認 PIN 選擇(可在 config.ini 文件中更改)為:
- 爪伺服:18
- PIR輸入觸發(fā):23
- 觸發(fā)輸出:16
- 眼睛:25
圖 2 是我的測試設置的照片。面包板上的接線位置略有不同,因為我用它來測試各種項目以及 3 線伺服控制器線,但原理圖連接是相同的。
![poYBAGNht4iAPw8LAADCkWQcjGQ315.png](https://file.elecfans.com/web2/M00/76/BB/poYBAGNht4iAPw8LAADCkWQcjGQ315.png)
軟件概述
操作或使用 ChatterPi 不需要了解或理解軟件代碼。ChatterPi 包由八個 Python 3 模塊和一個配置文件組成,如圖 3 所示。
![pYYBAGNht4yAeTNhAABqO_xYQYg114.jpg](https://file.elecfans.com/web2/M00/77/4D/pYYBAGNht4yAeTNhAABqO_xYQYg114.jpg)
配置文件 config.ini 包含所有用戶可選擇的參數(shù),包括哪些引腳用于哪些功能、音頻源是麥克風輸入還是存儲的 .wav 文件、應使用哪種伺服控制模式以及伺服閾值水平。config.py 程序只是讀取這些值并在運行時使它們在內(nèi)存中可用。
main.py 程序本質(zhì)上只是在啟動時加載配置參數(shù)并調(diào)用 control.py。control.py 中的函數(shù)沒有折疊到 main.py 中,以避免子模塊必須導入主程序,這可能會出現(xiàn)問題。
大多數(shù)處理發(fā)生在 control.py 和 audio.py 模塊中。control.py 程序使用 config.ini 文件中指定的方法處理大部分觸發(fā)(定時器、外部觸發(fā)(如 PIR)或在啟動時立即使用 config.ini 文件中指定的方法。它使用 GPIO Zero 和 PiGPIO 庫來監(jiān)控觸發(fā)傳感器并將輸出發(fā)送到輸出觸發(fā)器和 LED 引腳。PiGPIO 用作 GPIO 零下面的 GPIO 層,因為它使用 DMA 控制來控制用于控制伺服的脈沖寬度調(diào)制 (PWM) 控制。其他一些庫,包括GPIO Zero 使用的默認一個,使用軟件 PWM,這對于控制 LED 亮度等任務來說是足夠的,但對于伺服控制來說不夠精確。
除非觸發(fā)模式為 START,否則文件將進入無限循環(huán),等待計時器到期(TIMER 模式)或生成外部觸發(fā)(PIR 模式)。等待功能滿足要求,在開發(fā)過程中,中斷驅(qū)動的方法干擾了音頻輸出,可能是由于時序沖突。在 TIMER 模式下,在音頻文件完成播放(如果源是 FILES)或在可配置的預設時間(如果源是 MICROPHONE)之后重新啟動定時器。
觸發(fā)時,會調(diào)用一個事件處理程序,根據(jù)設置,觸發(fā) TRIGGER_OUT 以觸發(fā)另一個道具或設備并打開 LED 眼睛或其他低功耗設備。然后,如果音頻源是 FILES,它將調(diào)用 track.py,它將選擇下一個要播放的 .wav 文件并調(diào)用 audio.py,傳遞要播放的 .wav 文件的名稱。如果音頻源是 MICROPHONE,則調(diào)用 audio.py 時不傳遞文件名。當對 audio.py 的調(diào)用返回時,事件處理程序關(guān)閉 LED 眼睛并返回。
音頻播放、音頻分析和伺服控制都由 audio.py 模塊執(zhí)行。它定義了一個類,AUDIO。當調(diào)用 audio.play 函數(shù)時,它會檢查音頻源是 MICROPHONE 還是 FILES 并適當?shù)卮蜷_ PyAudio 流。流調(diào)用在單獨的線程中運行(這由 PyAudio 自動處理)。對于輸入流的每個塊,都會調(diào)用一個回調(diào)函數(shù)。這個回調(diào)函數(shù)是分析音頻流音量的地方。計算每個塊的平均音量,并根據(jù)該平均音量和用戶在配置文件中指定的閾值水平命令伺服器到適當?shù)奈恢谩?/font>波形庫用于從存儲中讀取波形文件,結(jié)構(gòu)庫用于幫助解構(gòu)波形數(shù)據(jù)以計算音量,并幫助分別分析立體聲文件的左右聲道。級別數(shù)、具體閾值以及在計算音量之前是否應用帶通濾波器取決于用戶在配置文件中設置的 STYLE 設置。除了官方文檔,我還找到了一個幻燈片演示,Jean Cruypenynck 的 PyAudio簡介非常有幫助。
如果 STYLE 設置為 2,則調(diào)用 bandpassFilter.py 來處理數(shù)字音頻流并返回應用了帶通濾波器的修改后的流。該程序非常簡短。它使用 scipy 信號處理庫中的兩個函數(shù)來過濾掉低于 500 Hz 和超過 2500 Hz 的音頻輸入。沒有為 STYLE 0 或 STYLE 1 應用帶通濾波器。
當 AMBIENT 設置為 ON 時,audio.py 中的環(huán)境播放函數(shù)還必須監(jiān)視觸發(fā)事件(計時器或傳感器),因為它需要在發(fā)生此類事件時中斷自身并將控制權(quán)傳遞回 control.py。
config.ini 文件可以直接編輯,也可以通過名為 controlPanel.py 的 GUI 程序進行編輯。如果在執(zhí)行過程中更改了伺服或控制器參數(shù)子集,則更改將在下次觸發(fā)聲軌時反映出來。其他更改在 ChatterPi 停止然后重新啟動后才會生效。
maxVol.py 是一個可以從控制面板啟動的實用程序。它讀取和分析人聲或環(huán)境子目錄中的每個波形文件,并將它們寫回,并將音量增加到可能的最大值,而不會出現(xiàn)削波或失真。
![poYBAGNht6GAbTjqAADZtRPpiek068.png](https://file.elecfans.com/web2/M00/76/BB/poYBAGNht6GAbTjqAADZtRPpiek068.png)
軟件安裝和設置
有關(guān)完整說明,請參閱GitHub 上的用戶手冊。
項目路線圖
此版本 0.9 包括當前為 ChatterPi 計劃的所有功能。也就是說,以后可能會添加兩個附加功能(或者如果有人愿意將它們添加到這個開源項目中:
- 使用 .mp3 文件的能力。簡單地在樹莓派上播放 MP3 文件很容易,但必須將它們作為流實時處理以驅(qū)動伺服控制器。
- 為控制面板中的許多選項添加下拉選擇列表,并允許輸入小寫值,自動更正為大寫。
- 添加從控制面板啟動和停止執(zhí)行 ChatterPi 的功能。
包起來
該代碼是開源的并發(fā)布在 GitHub ( https://github.com/ViennaMike/ChatterPi)上,我歡迎任何想要添加這些高級功能的人。
要報告錯誤、提出建議或提出問題,請轉(zhuǎn)到項目的 GitHub 存儲庫 ( https://github.com/ViennaMike/ChatterPi)并打開一個問題。為此,首先單擊問題選項卡,然后使用綠色的“新問題”按鈕。最好先瀏覽或搜索其他報告的問題,看看是否有人已經(jīng)報告了相同的問題或提出了相同的問題。然后,您可以向現(xiàn)有問題添加評論或建議,而不是打開一個新的、重復的問題。
- 基于諾基亞5110的Raspberry Pi帽子 0次下載
- 適用于Raspberry Pi的24位立體聲音頻DAC
- 使用Raspberry Pi的音頻可視化器
- Raspberry Pi Pico:使用PIO驅(qū)動伺服
- 用于Raspberry Pi的DIN導軌安裝
- Raspberry pi零W音頻輸入/輸出和電源接口
- 適用于Raspberry Pi 4的Raspberry Pi Pico開發(fā)板
- 樹莓派 Raspberry Pi 設計的微控制器 RP2040迷你開發(fā)板Raspberry Pi Pico
- 可視頻直播的Raspberry Pi網(wǎng)絡控制機器人 14次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- 永磁伺服系統(tǒng)PI控制器參數(shù)整定方法 3次下載
- Instant Raspberry Pi Gaming 6次下載
- 如何配置 Raspberry Pi 3 和 BeagleBoards 的無線連接 5次下載
- PMSM伺服系統(tǒng)速度環(huán)PI控制器參數(shù)自整定及優(yōu)化 16次下載
- raspberry_pi各版本差別 0次下載
- 西門子PLC與伺服控制器如何通訊 2530次閱讀
- 伺服控制器的工作原理和基本結(jié)構(gòu) 1749次閱讀
- 伺服驅(qū)動器和伺服控制器的區(qū)別 2338次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網(wǎng)應用 2180次閱讀
- 用于測試項目的4個最佳樹莓派Raspberry Pi模擬器 6823次閱讀
- 如何通過Raspberry Pi設置CE電流監(jiān)視器 2342次閱讀
- 樹莓派之路:Arduino和Raspberry-Pi 1992次閱讀
- 基于樹莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點 2983次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡介 3141次閱讀
- digilentchipKIT Pi主板介紹 1348次閱讀
- 一文了解Raspberry Pi 4各項性能跑分 3w次閱讀
- 關(guān)于伺服電機、驅(qū)動器、控制器的一些原理詳解 4.3w次閱讀
- 伺服定位控制在PLC中實現(xiàn)和在伺服控制器中實現(xiàn)解答 1w次閱讀
- 伺服驅(qū)動器的工作原理及其控制方式 5.3w次閱讀
- 視覺享受!用Raspberry Pi實現(xiàn)圣誕樹燈光秀 8344次閱讀
下載排行
本周
- 1DeepSeek:從入門到精通
- 5.36 MB | 25次下載 | 1 積分
- 2中興通訊的PCB設計規(guī)范
- 23.03 MB | 2次下載 | 5 積分
- 3IP6823 支持 qi 認證的無線充電發(fā)射控制 SOC
- 1.01 MB | 1次下載 | 免費
- 4IP6824? 全集成QI?無線充電發(fā)射控制SOC
- 1.22 MB | 1次下載 | 免費
- 5工程師入門必學的二十個模擬電路
- 0.37 MB | 1次下載 | 1 積分
- 6PESD18VY1BBIF保護二極管規(guī)格書
- 4.56MB | 次下載 | 免費
- 774HC4050緩沖器規(guī)格書
- 217.58KB | 次下載 | 免費
- 874HC73-Q100雙JK觸發(fā)器規(guī)格書
- 220.85KB | 次下載 | 免費
本月
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 41次下載 | 1 積分
- 3PIC12F629/675 數(shù)據(jù)手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 4DeepSeek:從入門到精通
- 5.36 MB | 25次下載 | 1 積分
- 5PIC16F716 數(shù)據(jù)手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 6GD32F4xx用戶手冊
- 14.49MB | 14次下載 | 免費
- 7dsPIC33EDV64MC205電機控制開發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費
- 8STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935124次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73813次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論