電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>用于說話頭骨的Raspberry Pi音頻伺服控制器

用于說話頭骨的Raspberry Pi音頻伺服控制器

2022-11-02 | zip | 0.40 MB | 次下載 | 免費

資料介紹

描述

介紹

ChatterPi 是一個將 Raspberry Pi 變成音頻伺服控制器的軟件包。換句話說,Pi 根據(jù)音頻輸入的音量輸出命令來控制伺服。輸入可以是存儲的音頻文件(單聲道或立體聲.wav 格式)或來自外部源,例如麥克風(fēng)或線路電平輸入。用途之一是驅(qū)動電子動畫道具,例如頭骨或會說話的鳥。

[這篇文章已經(jīng)更新以反映最新版本中添加的新功能。]

背景:會說話的顱骨控制簡史

仍然產(chǎn)生良好影響的常見道具是會說話的物體,無論是頭骨還是動物。一些成本較低的商業(yè)道具使用馬達和彈簧。另一種方法是預(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 個,并濾除不會導(dǎo)致口語聲音出現(xiàn)下巴移動的低頻和高頻。結(jié)果是Wee Little Talker 。該商業(yè)板還具有板載 mp3 播放器,可以從外部觸發(fā),控制 LED“眼睛”,并增加了包括語音反饋菜單系統(tǒng)在內(nèi)的多種功能。

我突然想到,憑借當前的單板計算機功能和強大的軟件庫,應(yīng)該可以將所有這些中的大部分最佳功能整合到一個在 Raspberry Pi 上運行的基于軟件的單一系統(tǒng)中。結(jié)果是 ChatterPi。ChatterPi 是使用 Python 語言從頭開始開發(fā)的,但功能和特性的想法是從以前的音頻伺服控制器項目中自由借鑒的。

特征

ChatterPI 的設(shè)計非常強大和靈活,無需用戶修改任何代碼(盡管高級用戶當然也可以這樣做)。手冊的“操作”小節(jié)中描述了所有功能和選項。

poYBAGNht4KAZQmKAADxgIPOU4c060.jpg
?

演示視頻

該視頻展示了 ChatterPi 的運行情況,同時使用了已保存的.wav 文件和麥克風(fēng)輸入。ChatterPi 正在控制下巴的運動。其他頭骨運動被預(yù)先編程為在Pololu Maestro 伺服控制器上運行的腳本。

?

使用 ChatterPi

本節(jié)介紹如何設(shè)置和安裝使用 ChatterPi 和使用它的硬件和軟件。

硬件

ChatterPi 是在 Pi 3 A+ 和 Pi Zero W 上開發(fā)和測試的。鑒于它適用于 Pi Zero,它應(yīng)該適用于任何 Pi。[2020 年 7 月 13 日更新:原始代碼在音量提取代碼中有一個緩慢的部分,導(dǎo)致它無法在 Pi Zero 上運行。這已在最新版本中修復(fù)。]

除了 Raspberry Pi,您還需要一個 USB 聲卡。出于幾個原因需要這樣做。首先,如果您打算使用外部聲源,則需要一種將音頻輸入 Pi 的方法。其次,除了不能產(chǎn)生很好的聲音外,音頻輸出連接器可能與驅(qū)動伺服所需的脈沖寬度調(diào)制 (PWM) 代碼共享時序,從而產(chǎn)生沖突。使用便宜的 USB 聲卡可以解決這兩個問題。我用過 Adafruit 的一款,售價不到 5 美元,效果很好(見https://www.adafruit.com/product/1475)。您需要將 TRS(標準立體聲)插頭或適配器插入聲卡上的耳機和麥克風(fēng)插孔。該卡不適用于 TRRS(組合麥克風(fēng)/立體聲耳機插頭。如果您想使用麥克風(fēng)或其他外部聲源,則只需要一個。否則,您可以使用保存在 Raspberry Pi 上的 audio.wav 文件。您但是,仍然需要 USB 聲卡進行音頻輸出。

這就是音頻伺服控制器所需要的一切。當然,如果你想用一個來觸發(fā)你的道具,你需要一個電源和一個你想要控制的伺服器,例如一個配備伺服器的說話頭骨和一個被動紅外傳感器 (PIR)。我使用 Parallax 的這個(https://www.parallax.com/product/555-28027 )進行開發(fā),因為我已經(jīng)有一個備用的。如果您不想使用外部傳感器,還可以將 ChatterPi 設(shè)置為觸發(fā)重復(fù)計時器或僅打開并運行。

圖 1 顯示了用于測試操作的測試臺設(shè)置。紅色 LED 連接到“TRIGGER_OUT”引腳以進行測試。可以移動它或?qū)⒘硪粋€ LED 和電阻器連接到“EYES_PIN”以測試該功能。觸發(fā)控制器時,TRIGGER_OUT 引腳變?yōu)楦唠娖?0.5 秒。這可用于觸發(fā)另一個道具或控制器。只要音頻播放,EYES_PIN 就會保持高電平。

pYYBAGNht4aAYmfGAALP9SLJ4mA209.png
圖 1. 全面測試 ChatterPi 的布局
?

默認 PIN 選擇(可在 config.ini 文件中更改)為:

  • 爪伺服:18
  • PIR輸入觸發(fā):23
  • 觸發(fā)輸出:16
  • 眼睛:25

圖 2 是我的測試設(shè)置的照片。面包板上的接線位置略有不同,因為我用它來測試各種項目以及 3 線伺服控制器線,但原理圖連接是相同的。

?
poYBAGNht4iAPw8LAADCkWQcjGQ315.png
圖 2. 用于開發(fā)的測試配置的圖片
?

軟件概述

操作或使用 ChatterPi 不需要了解或理解軟件代碼。ChatterPi 包由八個 Python 3 模塊和一個配置文件組成,如圖 3 所示。

pYYBAGNht4yAeTNhAABqO_xYQYg114.jpg
?

配置文件 config.ini 包含所有用戶可選擇的參數(shù),包括哪些引腳用于哪些功能、音頻源是麥克風(fēng)輸入還是存儲的 .wav 文件、應(yīng)使用哪種伺服控制模式以及伺服閾值水平。config.py 程序只是讀取這些值并在運行時使它們在內(nèi)存中可用。

main.py 程序本質(zhì)上只是在啟動時加載配置參數(shù)并調(diào)用 control.py。control.py 中的函數(shù)沒有折疊到 main.py 中,以避免子模塊必須導(dǎo)入主程序,這可能會出現(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 亮度等任務(wù)來說是足夠的,但對于伺服控制來說不夠精確。

除非觸發(fā)模式為 START,否則文件將進入無限循環(huán),等待計時器到期(TIMER 模式)或生成外部觸發(fā)(PIR 模式)。等待功能滿足要求,在開發(fā)過程中,中斷驅(qū)動的方法干擾了音頻輸出,可能是由于時序沖突。在 TIMER 模式下,在音頻文件完成播放(如果源是 FILES)或在可配置的預(yù)設(shè)時間(如果源是 MICROPHONE)之后重新啟動定時器。

觸發(fā)時,會調(diào)用一個事件處理程序,根據(jù)設(shè)置,觸發(fā) TRIGGER_OUT 以觸發(fā)另一個道具或設(shè)備并打開 LED 眼睛或其他低功耗設(shè)備。然后,如果音頻源是 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ù)、具體閾值以及在計算音量之前是否應(yīng)用帶通濾波器取決于用戶在配置文件中設(shè)置的 STYLE 設(shè)置。除了官方文檔,我還找到了一個幻燈片演示,Jean Cruypenynck 的 PyAudio簡介非常有幫助。

如果 STYLE 設(shè)置為 2,則調(diào)用 bandpassFilter.py 來處理數(shù)字音頻流并返回應(yīng)用了帶通濾波器的修改后的流。該程序非常簡短。它使用 scipy 信號處理庫中的兩個函數(shù)來過濾掉低于 500 Hz 和超過 2500 Hz 的音頻輸入。沒有為 STYLE 0 或 STYLE 1 應(yīng)用帶通濾波器。

當 AMBIENT 設(shè)置為 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
Chatter Pi 配置控制面板的屏幕截圖
?

軟件安裝和設(shè)置

有關(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)有問題添加評論或建議,而不是打開一個新的、重復(fù)的問題。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費