看板 Python 關於我們 聯絡資訊
各位好! (我沒有學過 python,所以下面的問題如果很蠢,請直接糾正我!) 我想要寫一段 C++ 程式碼, 讀入 .wav 檔案,把聲音訊號儲存在陣列裡面,然後進行一些訊號處理的工作。 因為 C++ 沒有內建這樣的函式庫,而 python 的函式庫相當豐富, 所以我就想到可以在 C++ 程式碼裡面,使用 python 來讀檔。 先用功能強大的 python 處理輸出入,後用效率較高的 C++ 進行運算,應該是個好方法! 可是我應該怎麼做呢?我連要安裝什麼軟體都弄不清楚... orz 我該閱讀哪些東西,才能學到所有必要的知識? 麻煩大家指點! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.225.136.213
uranusjr:C++ 使用 Python 函式庫是很困難的事情(甚至不可能), 12/20 23:49
uranusjr:一般都是反過來用 C++(或比較常見是用 C)擴充 Python 12/20 23:50
uranusjr:至於需要什麼...你需要完整的 Python 環境(官網安裝包裝 12/20 23:50
chchwy:反過來python用C函式庫則不難 關鍵字ctypes 12/20 23:51
uranusjr:下去就差不多了), 以及一個把 C++ 包起來送給 Python 的 12/20 23:51
uranusjr:工具 -- Boost.Python 是個常見的選擇 12/20 23:52
http://docs.python.org/2/extending/embedding.html 這個網頁應該是 C++ 使用 Python 吧? 所以這是很困難的事情囉... orz 困難的地方在於哪裡呢?例如環境設定之類的?
legnaleurc:... 為什麼不直接找 C++ 的工具就好了 12/21 00:09
因為 C++ 沒有內建相關函式庫,沒有統一標準, 而 python audio api 似乎是官方統一標準的?(不太確定) 因為我想寫教學文件,可能會有滿多人閱讀、動手做,所以有個統一標準可循會比較好! 另外也聽說 python 比較容易上手,適合非本科系學生, 國外一些計算機概論課程也是教 python,所以就想試看看 python!
uranusjr:Python.h 是 C API(當然 C++ 本來就可以用 C 是沒錯..) 12/21 10:57
uranusjr:除非你之前有寫過 C 的物件導向, 不然整個用起來就是很卡 12/21 10:58
我沒有寫過 C 的物件導向耶,老實說我對 C/C++ 都不是很熟... 如果這種方式,各位專家認為它會卡卡的, 那麼我應該會改用 python call c++ 而不是 c++ call python ~
rodion:應該就是看妳自己貼的官方文件吧 我晚點也要試試C++連py 12/21 14:44
如果有試出來麻煩也教我一下怎麼做 >"<
retard:google 一下就有了 12/21 16:40
retard:http://goo.gl/xlyec 12/21 16:41
retard:hmm 12/21 16:42
retard:我會錯意了 12/21 16:42
retard:我猜你要的是 cython 之類的 12/21 16:43
這個好像是另一種神奇的語言???
plover:可能要先確定你的需求 12/21 21:15
我的需求:就如正文所述,可以讀/播放聲音檔案就好了。有官方標準API就更好! 程式碼主要是用來教學/推廣用的。 我想了解看看,如果用 python 的話,會有哪些比較好的做法, 看看哪一種比較方便、比較容易操作,再決定用哪一種方式。 最後也可能決定直接整支程式都用 python 寫 XD
legnaleurc:要給非本科系教學那就別用 C++ 吧,嚇走一堆人 12/22 03:00
真的嗎?我一直以為一般民眾對 C/C++ 的接受程度應該是最高的了。 程式語言補習班也都有 C/C++ 的課程,python 相對之下比較小眾。 http://www.csie.ntu.edu.tw/train/course_program.php http://www.pcschool.com.tw/learnservice/courselist.aspx?id=31 正因為聽說 python 很強大卻不流行,才想說也許可以試試 python。
flarehunter:要做訊號處理的話 matlab也是一個不錯的選擇 12/22 10:37
我一開始學聲音訊號處理就是看 matlab 的程式碼!!! 推薦下面這網頁: http://mirlab.org/jang/books/audioSignalProcessing/ 最大缺憾就是 matlab 要錢 XD 還有一個缺憾就是 matlab 很多東西都已經包好好,沒辦法呈現太多細節。 至於好處是畫圖表很方便! 另外想偷偷問一下 openAL 好不好用 (這個問題好像不適合在這個板問 XD) ※ 編輯: DJWS 來自: 36.225.136.125 (12/22 10:54)
legnaleurc:知名度和上手度是兩回事 12/22 18:23
DJWS:有道理! 12/23 16:59
Reylod:matlab要錢就用octave,幾乎compatible 12/24 00:01
kdjf:不過速度真的有差... XD 12/24 09:47
uranusjr:除非有向後相容需求, 不然與其用 Octave 不如乾脆就用 12/24 10:00
uranusjr:Python 就好啦... 12/24 10:00
我也覺得直接用 python 比較單純一點~
marksmanz:swig應該可以滿足你的需求 12/25 00:33
marksmanz:但是最快的方式應該還是用python import openal ... 12/25 00:37
marksmanz:要畫圖的話可以用 matplotlib 12/25 00:39
感謝!長了很多知識! swig 看起來超猛,什麼語言通通都可以黏在一起,竟然有這麼神奇的工具... 另外一方面,既然要 python import openal,那我其實也可以 c++ import openal !? 我想我得研究一下 openal 到底好不好用,再來做決定。 ※ 編輯: DJWS 來自: 36.225.134.173 (12/25 23:48)