電子發(fā)燒友App

硬聲App

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

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

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

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

2022-11-02 | zip | 0.40 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

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

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

背景:會(huì)說(shuō)話的顱骨控制簡(jiǎn)史

仍然產(chǎn)生良好影響的常見(jiàn)道具是會(huì)說(shuō)話的物體,無(wú)論是頭骨還是動(dòng)物。一些成本較低的商業(yè)道具使用馬達(dá)和彈簧。另一種方法是預(yù)先編程一個(gè)完整的序列來(lái)匹配人聲,但這非常耗時(shí),如果你想改變?nèi)寺?,或者只是稍微編輯一下,你需要重新編程整個(gè)序列。出于這個(gè)原因,使用音頻伺服控制器來(lái)驅(qū)動(dòng)控制顎的伺服電機(jī)是一種非常流行的方法。有幾種變體。最早使用硬件之一來(lái)檢測(cè)音頻何時(shí)超過(guò)閾值,然后開(kāi)始將下頜移動(dòng)到完全打開(kāi)的位置,當(dāng)音頻低于閾值時(shí),它將開(kāi)始關(guān)閉下頜。“可怕的特里”西蒙斯可能是第一個(gè)開(kāi)發(fā)電子硬件板的人為此,Cowlacious Designs繼續(xù)改進(jìn)和銷售商業(yè)版本,增加了許多附加功能,例如內(nèi)置音頻播放器、各種觸發(fā)選項(xiàng)以及控制 LED 作為眼睛的能力。

后來(lái),一個(gè)名叫 Mike(無(wú)親屬關(guān)系)的人將 Arduino 與硬件音量級(jí)板結(jié)合起來(lái)生產(chǎn)了Jawduino 。這從只有 2 個(gè)級(jí)別變?yōu)?4 個(gè)級(jí)別。原始項(xiàng)目只是接收音頻并控制伺服,但其他項(xiàng)目添加了擴(kuò)展以播放存儲(chǔ)的 mp3 文件和/或隨機(jī)移動(dòng)其他伺服(例如,http://batbuddy.org/資源/Halloweenstuff/TalkingSkull.php )。

幾年前,來(lái)自 Haunt Hackers 的 Steve Bjork 將專用硬件與螺旋槳微控制器相結(jié)合,將級(jí)別數(shù)增加到近 256 個(gè),并濾除不會(huì)導(dǎo)致口語(yǔ)聲音出現(xiàn)下巴移動(dòng)的低頻和高頻。結(jié)果是Wee Little Talker 。該商業(yè)板還具有板載 mp3 播放器,可以從外部觸發(fā),控制 LED“眼睛”,并增加了包括語(yǔ)音反饋菜單系統(tǒng)在內(nèi)的多種功能。

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

特征

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

poYBAGNht4KAZQmKAADxgIPOU4c060.jpg
?

演示視頻

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

?

使用 ChatterPi

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

硬件

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

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

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

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

pYYBAGNht4aAYmfGAALP9SLJ4mA209.png
圖 1. 全面測(cè)試 ChatterPi 的布局
?

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

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

圖 2 是我的測(cè)試設(shè)置的照片。面包板上的接線位置略有不同,因?yàn)槲矣盟鼇?lái)測(cè)試各種項(xiàng)目以及 3 線伺服控制器線,但原理圖連接是相同的。

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

軟件概述

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

pYYBAGNht4yAeTNhAABqO_xYQYg114.jpg
?

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

main.py 程序本質(zhì)上只是在啟動(dòng)時(shí)加載配置參數(shù)并調(diào)用 control.py。control.py 中的函數(shù)沒(méi)有折疊到 main.py 中,以避免子模塊必須導(dǎo)入主程序,這可能會(huì)出現(xiàn)問(wèn)題。

大多數(shù)處理發(fā)生在 control.py 和 audio.py 模塊中。control.py 程序使用 config.ini 文件中指定的方法處理大部分觸發(fā)(定時(shí)器、外部觸發(fā)(如 PIR)或在啟動(dòng)時(shí)立即使用 config.ini 文件中指定的方法。它使用 GPIO Zero 和 PiGPIO 庫(kù)來(lái)監(jiān)控觸發(fā)傳感器并將輸出發(fā)送到輸出觸發(fā)器和 LED 引腳。PiGPIO 用作 GPIO 零下面的 GPIO 層,因?yàn)樗褂?DMA 控制來(lái)控制用于控制伺服的脈沖寬度調(diào)制 (PWM) 控制。其他一些庫(kù),包括GPIO Zero 使用的默認(rèn)一個(gè),使用軟件 PWM,這對(duì)于控制 LED 亮度等任務(wù)來(lái)說(shuō)是足夠的,但對(duì)于伺服控制來(lái)說(shuō)不夠精確。

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

觸發(fā)時(shí),會(huì)調(diào)用一個(gè)事件處理程序,根據(jù)設(shè)置,觸發(fā) TRIGGER_OUT 以觸發(fā)另一個(gè)道具或設(shè)備并打開(kāi) LED 眼睛或其他低功耗設(shè)備。然后,如果音頻源是 FILES,它將調(diào)用 track.py,它將選擇下一個(gè)要播放的 .wav 文件并調(diào)用 audio.py,傳遞要播放的 .wav 文件的名稱。如果音頻源是 MICROPHONE,則調(diào)用 audio.py 時(shí)不傳遞文件名。當(dāng)對(duì) audio.py 的調(diào)用返回時(shí),事件處理程序關(guān)閉 LED 眼睛并返回。

音頻播放、音頻分析和伺服控制都由 audio.py 模塊執(zhí)行。它定義了一個(gè)類,AUDIO。當(dāng)調(diào)用 audio.play 函數(shù)時(shí),它會(huì)檢查音頻源是 MICROPHONE 還是 FILES 并適當(dāng)?shù)卮蜷_(kāi) PyAudio 流。流調(diào)用在單獨(dú)的線程中運(yùn)行(這由 PyAudio 自動(dòng)處理)。對(duì)于輸入流的每個(gè)塊,都會(huì)調(diào)用一個(gè)回調(diào)函數(shù)。這個(gè)回調(diào)函數(shù)是分析音頻流音量的地方。計(jì)算每個(gè)塊的平均音量,并根據(jù)該平均音量和用戶在配置文件中指定的閾值水平命令伺服器到適當(dāng)?shù)奈恢谩?/font>波形庫(kù)用于從存儲(chǔ)中讀取波形文件,結(jié)構(gòu)庫(kù)用于幫助解構(gòu)波形數(shù)據(jù)以計(jì)算音量,并幫助分別分析立體聲文件的左右聲道。級(jí)別數(shù)、具體閾值以及在計(jì)算音量之前是否應(yīng)用帶通濾波器取決于用戶在配置文件中設(shè)置的 STYLE 設(shè)置。除了官方文檔,我還找到了一個(gè)幻燈片演示,Jean Cruypenynck 的 PyAudio簡(jiǎn)介非常有幫助。

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

當(dāng) AMBIENT 設(shè)置為 ON 時(shí),audio.py 中的環(huán)境播放函數(shù)還必須監(jiān)視觸發(fā)事件(計(jì)時(shí)器或傳感器),因?yàn)樗枰诎l(fā)生此類事件時(shí)中斷自身并將控制權(quán)傳遞回 control.py。

config.ini 文件可以直接編輯,也可以通過(guò)名為 controlPanel.py 的 GUI 程序進(jìn)行編輯。如果在執(zhí)行過(guò)程中更改了伺服或控制器參數(shù)子集,則更改將在下次觸發(fā)聲軌時(shí)反映出來(lái)。其他更改在 ChatterPi 停止然后重新啟動(dòng)后才會(huì)生效。

maxVol.py 是一個(gè)可以從控制面板啟動(dòng)的實(shí)用程序。它讀取和分析人聲或環(huán)境子目錄中的每個(gè)波形文件,并將它們寫回,并將音量增加到可能的最大值,而不會(huì)出現(xiàn)削波或失真。

poYBAGNht6GAbTjqAADZtRPpiek068.png
Chatter Pi 配置控制面板的屏幕截圖
?

軟件安裝和設(shè)置

有關(guān)完整說(shuō)明,請(qǐng)參閱GitHub 上的用戶手冊(cè)。

項(xiàng)目路線圖

此版本 0.9 包括當(dāng)前為 ChatterPi 計(jì)劃的所有功能。也就是說(shuō),以后可能會(huì)添加兩個(gè)附加功能(或者如果有人愿意將它們添加到這個(gè)開(kāi)源項(xiàng)目中:

  • 使用 .mp3 文件的能力。簡(jiǎn)單地在樹(shù)莓派上播放 MP3 文件很容易,但必須將它們作為流實(shí)時(shí)處理以驅(qū)動(dòng)伺服控制器。
  • 為控制面板中的許多選項(xiàng)添加下拉選擇列表,并允許輸入小寫值,自動(dòng)更正為大寫。
  • 添加從控制面板啟動(dòng)和停止執(zhí)行 ChatterPi 的功能。

包起來(lái)

該代碼是開(kāi)源的并發(fā)布在 GitHub ( https://github.com/ViennaMike/ChatterPi)上,我歡迎任何想要添加這些高級(jí)功能的人。

要報(bào)告錯(cuò)誤、提出建議或提出問(wèn)題,請(qǐng)轉(zhuǎn)到項(xiàng)目的 GitHub 存儲(chǔ)庫(kù) ( https://github.com/ViennaMike/ChatterPi)并打開(kāi)一個(gè)問(wèn)題。為此,首先單擊問(wèn)題選項(xiàng)卡,然后使用綠色的“新問(wèn)題”按鈕。最好先瀏覽或搜索其他報(bào)告的問(wèn)題,看看是否有人已經(jīng)報(bào)告了相同的問(wèn)題或提出了相同的問(wèn)題。然后,您可以向現(xiàn)有問(wèn)題添加評(píng)論或建議,而不是打開(kāi)一個(gè)新的、重復(fù)的問(wèn)題。


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

評(píng)論

查看更多

下載排行

本周

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

本月

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

總榜

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