資料介紹
描述
介紹
ChatterPi 是一個將 Raspberry Pi 變成音頻伺服控制器的軟件包。換句話說,Pi 根據音頻輸入的音量輸出命令來控制伺服。輸入可以是存儲的音頻文件(單聲道或立體聲.wav 格式)或來自外部源,例如麥克風或線路電平輸入。用途之一是驅動電子動畫道具,例如頭骨或會說話的鳥。
[這篇文章已經更新以反映最新版本中添加的新功能。]
背景:會說話的顱骨控制簡史
仍然產生良好影響的常見道具是會說話的物體,無論是頭骨還是動物。一些成本較低的商業道具使用馬達和彈簧。另一種方法是預先編程一個完整的序列來匹配人聲,但這非常耗時,如果你想改變人聲,或者只是稍微編輯一下,你需要重新編程整個序列。出于這個原因,使用音頻伺服控制器來驅動控制顎的伺服電機是一種非常流行的方法。有幾種變體。最早使用硬件之一來檢測音頻何時超過閾值,然后開始將下頜移動到完全打開的位置,當音頻低于閾值時,它將開始關閉下頜。“可怕的特里”西蒙斯可能是第一個開發電子硬件板的人為此,Cowlacious Designs繼續改進和銷售商業版本,增加了許多附加功能,例如內置音頻播放器、各種觸發選項以及控制 LED 作為眼睛的能力。
后來,一個名叫 Mike(無親屬關系)的人將 Arduino 與硬件音量級板結合起來生產了Jawduino 。這從只有 2 個級別變為 4 個級別。原始項目只是接收音頻并控制伺服,但其他項目添加了擴展以播放存儲的 mp3 文件和/或隨機移動其他伺服(例如,http://batbuddy.org/資源/Halloweenstuff/TalkingSkull.php )。
幾年前,來自 Haunt Hackers 的 Steve Bjork 將專用硬件與螺旋槳微控制器相結合,將級別數增加到近 256 個,并濾除不會導致口語聲音出現下巴移動的低頻和高頻。結果是Wee Little Talker 。該商業板還具有板載 mp3 播放器,可以從外部觸發,控制 LED“眼睛”,并增加了包括語音反饋菜單系統在內的多種功能。
我突然想到,憑借當前的單板計算機功能和強大的軟件庫,應該可以將所有這些中的大部分最佳功能整合到一個在 Raspberry Pi 上運行的基于軟件的單一系統中。結果是 ChatterPi。ChatterPi 是使用 Python 語言從頭開始開發的,但功能和特性的想法是從以前的音頻伺服控制器項目中自由借鑒的。
特征
ChatterPI 的設計非常強大和靈活,無需用戶修改任何代碼(盡管高級用戶當然也可以這樣做)。手冊的“操作”小節中描述了所有功能和選項。
演示視頻
該視頻展示了 ChatterPi 的運行情況,同時使用了已保存的.wav 文件和麥克風輸入。ChatterPi 正在控制下巴的運動。其他頭骨運動被預先編程為在Pololu Maestro 伺服控制器上運行的腳本。
使用 ChatterPi
本節介紹如何設置和安裝使用 ChatterPi 和使用它的硬件和軟件。
硬件
ChatterPi 是在 Pi 3 A+ 和 Pi Zero W 上開發和測試的。鑒于它適用于 Pi Zero,它應該適用于任何 Pi。[2020 年 7 月 13 日更新:原始代碼在音量提取代碼中有一個緩慢的部分,導致它無法在 Pi Zero 上運行。這已在最新版本中修復。]
除了 Raspberry Pi,您還需要一個 USB 聲卡。出于幾個原因需要這樣做。首先,如果您打算使用外部聲源,則需要一種將音頻輸入 Pi 的方法。其次,除了不能產生很好的聲音外,音頻輸出連接器可能與驅動伺服所需的脈沖寬度調制 (PWM) 代碼共享時序,從而產生沖突。使用便宜的 USB 聲卡可以解決這兩個問題。我用過 Adafruit 的一款,售價不到 5 美元,效果很好(見https://www.adafruit.com/product/1475)。您需要將 TRS(標準立體聲)插頭或適配器插入聲卡上的耳機和麥克風插孔。該卡不適用于 TRRS(組合麥克風/立體聲耳機插頭。如果您想使用麥克風或其他外部聲源,則只需要一個。否則,您可以使用保存在 Raspberry Pi 上的 audio.wav 文件。您但是,仍然需要 USB 聲卡進行音頻輸出。
這就是音頻伺服控制器所需要的一切。當然,如果你想用一個來觸發你的道具,你需要一個電源和一個你想要控制的伺服器,例如一個配備伺服器的說話頭骨和一個被動紅外傳感器 (PIR)。我使用 Parallax 的這個(https://www.parallax.com/product/555-28027 )進行開發,因為我已經有一個備用的。如果您不想使用外部傳感器,還可以將 ChatterPi 設置為觸發重復計時器或僅打開并運行。
圖 1 顯示了用于測試操作的測試臺設置。紅色 LED 連接到“TRIGGER_OUT”引腳以進行測試。可以移動它或將另一個 LED 和電阻器連接到“EYES_PIN”以測試該功能。觸發控制器時,TRIGGER_OUT 引腳變為高電平 0.5 秒。這可用于觸發另一個道具或控制器。只要音頻播放,EYES_PIN 就會保持高電平。
默認 PIN 選擇(可在 config.ini 文件中更改)為:
- 爪伺服:18
- PIR輸入觸發:23
- 觸發輸出:16
- 眼睛:25
圖 2 是我的測試設置的照片。面包板上的接線位置略有不同,因為我用它來測試各種項目以及 3 線伺服控制器線,但原理圖連接是相同的。
軟件概述
操作或使用 ChatterPi 不需要了解或理解軟件代碼。ChatterPi 包由八個 Python 3 模塊和一個配置文件組成,如圖 3 所示。
配置文件 config.ini 包含所有用戶可選擇的參數,包括哪些引腳用于哪些功能、音頻源是麥克風輸入還是存儲的 .wav 文件、應使用哪種伺服控制模式以及伺服閾值水平。config.py 程序只是讀取這些值并在運行時使它們在內存中可用。
main.py 程序本質上只是在啟動時加載配置參數并調用 control.py。control.py 中的函數沒有折疊到 main.py 中,以避免子模塊必須導入主程序,這可能會出現問題。
大多數處理發生在 control.py 和 audio.py 模塊中。control.py 程序使用 config.ini 文件中指定的方法處理大部分觸發(定時器、外部觸發(如 PIR)或在啟動時立即使用 config.ini 文件中指定的方法。它使用 GPIO Zero 和 PiGPIO 庫來監控觸發傳感器并將輸出發送到輸出觸發器和 LED 引腳。PiGPIO 用作 GPIO 零下面的 GPIO 層,因為它使用 DMA 控制來控制用于控制伺服的脈沖寬度調制 (PWM) 控制。其他一些庫,包括GPIO Zero 使用的默認一個,使用軟件 PWM,這對于控制 LED 亮度等任務來說是足夠的,但對于伺服控制來說不夠精確。
除非觸發模式為 START,否則文件將進入無限循環,等待計時器到期(TIMER 模式)或生成外部觸發(PIR 模式)。等待功能滿足要求,在開發過程中,中斷驅動的方法干擾了音頻輸出,可能是由于時序沖突。在 TIMER 模式下,在音頻文件完成播放(如果源是 FILES)或在可配置的預設時間(如果源是 MICROPHONE)之后重新啟動定時器。
觸發時,會調用一個事件處理程序,根據設置,觸發 TRIGGER_OUT 以觸發另一個道具或設備并打開 LED 眼睛或其他低功耗設備。然后,如果音頻源是 FILES,它將調用 track.py,它將選擇下一個要播放的 .wav 文件并調用 audio.py,傳遞要播放的 .wav 文件的名稱。如果音頻源是 MICROPHONE,則調用 audio.py 時不傳遞文件名。當對 audio.py 的調用返回時,事件處理程序關閉 LED 眼睛并返回。
音頻播放、音頻分析和伺服控制都由 audio.py 模塊執行。它定義了一個類,AUDIO。當調用 audio.play 函數時,它會檢查音頻源是 MICROPHONE 還是 FILES 并適當地打開 PyAudio 流。流調用在單獨的線程中運行(這由 PyAudio 自動處理)。對于輸入流的每個塊,都會調用一個回調函數。這個回調函數是分析音頻流音量的地方。計算每個塊的平均音量,并根據該平均音量和用戶在配置文件中指定的閾值水平命令伺服器到適當的位置。波形庫用于從存儲中讀取波形文件,結構庫用于幫助解構波形數據以計算音量,并幫助分別分析立體聲文件的左右聲道。級別數、具體閾值以及在計算音量之前是否應用帶通濾波器取決于用戶在配置文件中設置的 STYLE 設置。除了官方文檔,我還找到了一個幻燈片演示,Jean Cruypenynck 的 PyAudio簡介非常有幫助。
如果 STYLE 設置為 2,則調用 bandpassFilter.py 來處理數字音頻流并返回應用了帶通濾波器的修改后的流。該程序非常簡短。它使用 scipy 信號處理庫中的兩個函數來過濾掉低于 500 Hz 和超過 2500 Hz 的音頻輸入。沒有為 STYLE 0 或 STYLE 1 應用帶通濾波器。
當 AMBIENT 設置為 ON 時,audio.py 中的環境播放函數還必須監視觸發事件(計時器或傳感器),因為它需要在發生此類事件時中斷自身并將控制權傳遞回 control.py。
config.ini 文件可以直接編輯,也可以通過名為 controlPanel.py 的 GUI 程序進行編輯。如果在執行過程中更改了伺服或控制器參數子集,則更改將在下次觸發聲軌時反映出來。其他更改在 ChatterPi 停止然后重新啟動后才會生效。
maxVol.py 是一個可以從控制面板啟動的實用程序。它讀取和分析人聲或環境子目錄中的每個波形文件,并將它們寫回,并將音量增加到可能的最大值,而不會出現削波或失真。
軟件安裝和設置
有關完整說明,請參閱GitHub 上的用戶手冊。
項目路線圖
此版本 0.9 包括當前為 ChatterPi 計劃的所有功能。也就是說,以后可能會添加兩個附加功能(或者如果有人愿意將它們添加到這個開源項目中:
- 使用 .mp3 文件的能力。簡單地在樹莓派上播放 MP3 文件很容易,但必須將它們作為流實時處理以驅動伺服控制器。
- 為控制面板中的許多選項添加下拉選擇列表,并允許輸入小寫值,自動更正為大寫。
- 添加從控制面板啟動和停止執行 ChatterPi 的功能。
包起來
該代碼是開源的并發布在 GitHub ( https://github.com/ViennaMike/ChatterPi)上,我歡迎任何想要添加這些高級功能的人。
要報告錯誤、提出建議或提出問題,請轉到項目的 GitHub 存儲庫 ( https://github.com/ViennaMike/ChatterPi)并打開一個問題。為此,首先單擊問題選項卡,然后使用綠色的“新問題”按鈕。最好先瀏覽或搜索其他報告的問題,看看是否有人已經報告了相同的問題或提出了相同的問題。然后,您可以向現有問題添加評論或建議,而不是打開一個新的、重復的問題。
- 基于諾基亞5110的Raspberry Pi帽子 0次下載
- 適用于Raspberry Pi的24位立體聲音頻DAC
- 使用Raspberry Pi的音頻可視化器
- Raspberry Pi Pico:使用PIO驅動伺服
- 用于Raspberry Pi的DIN導軌安裝
- Raspberry pi零W音頻輸入/輸出和電源接口
- 適用于Raspberry Pi 4的Raspberry Pi Pico開發板
- 樹莓派 Raspberry Pi 設計的微控制器 RP2040迷你開發板Raspberry Pi Pico
- 可視頻直播的Raspberry Pi網絡控制機器人 14次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- 永磁伺服系統PI控制器參數整定方法 3次下載
- Instant Raspberry Pi Gaming 6次下載
- 如何配置 Raspberry Pi 3 和 BeagleBoards 的無線連接 5次下載
- PMSM伺服系統速度環PI控制器參數自整定及優化 16次下載
- raspberry_pi各版本差別 0次下載
- 西門子PLC與伺服控制器如何通訊 1057次閱讀
- 伺服控制器的工作原理和基本結構 847次閱讀
- 伺服驅動器和伺服控制器的區別 979次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發物聯網應用 1671次閱讀
- 用于測試項目的4個最佳樹莓派Raspberry Pi模擬器 5985次閱讀
- 如何通過Raspberry Pi設置CE電流監視器 2120次閱讀
- 樹莓派之路:Arduino和Raspberry-Pi 1815次閱讀
- 基于樹莓派產品 Raspberry Pi微控制器板的優缺點 2710次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡介 2873次閱讀
- digilentchipKIT Pi主板介紹 1213次閱讀
- 一文了解Raspberry Pi 4各項性能跑分 2.9w次閱讀
- 關于伺服電機、驅動器、控制器的一些原理詳解 4.3w次閱讀
- 伺服定位控制在PLC中實現和在伺服控制器中實現解答 1w次閱讀
- 伺服驅動器的工作原理及其控制方式 5.2w次閱讀
- 視覺享受!用Raspberry Pi實現圣誕樹燈光秀 8127次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多