因為這次要處理wav檔案資料...
其實py audiolab能處理上不止算頻譜,
只是其他的項目用Java解決掉~
就只有頻譜圖是用python...
(一來不會算頻譜, 二來Java繪圖的套件過於艱澀, py找來的資源就已經相當漂亮了Q_Q)
環境安裝貼在上一篇文...
先貼一張結果圖~
程式沒幾行, 過程是挺心酸的...Q_Q...
整個重點大概在於:
python 與相關應用module安裝...
找一段可以用的程式碼來打底...
(google audiolab+spectrum 應該就會有~我也是google來的)
調好圖表版面, 對齊(因有上下圖需要對齊的需求), 間隔, 顏色
(sample是2分鐘的wav, 但因實務上只使用大約30s, 所以才用5s做單位x軸)
解決中文字的問題....
(python原生沒中文, 最後採用指定TTF解決, 跨平台機器安裝才方便Q_Q)
原始碼
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
from pylab import *
import wave
import matplotlib.pyplot as plt
myfont = matplotlib.font_manager.FontProperties(fname='/etc/xxxx/MSJH.TTF')
infile = None
outfile = None
secInterval = 5 #x-axis interval
def show_wave_n_spec():
if(len(sys.argv) < 2) :
print('err input, plz input argv[1] and argv[2]')
return
infile = sys.argv[1]
outfile = sys.argv[2]
spf = wave.open(infile,'r')
f = spf.getframerate()
sound_info = spf.readframes(-1)
sound_info = fromstring(sound_info, 'Int16')
spflength = round(spf.getnframes()/f)
#print(spflength)
#print(sound_info)
#---------------pic1
ax = subplot(211)
title(u'Waveform(波形圖)',fontproperties=myfont)
plot(sound_info, '#5755FF')
xlim(0, len(sound_info))
plt.axis([0, len(sound_info), -15000, 15000])
grid(True)
#change axis-x position/text
xlabel2 = range(0, int(spflength+1), secInterval)
xposition2 = []
for x in xlabel2:
xposition2.append(x*f)
#print(xposition2)
ax.set_xticks(xposition2)
ax.set_xticklabels(xlabel2)
#change axis-y
ylabel2 = []
for x in ax.get_yticks() :
ylabel2.append(str(x/1000)+'k')
ax.set_yticklabels(ylabel2)
#---------------pic2
ax2 = subplot(212)
title(u'Spectrogram(頻譜圖)',fontproperties=myfont)
spectrogram = specgram(sound_info, Fs = f, scale_by_freq=True,sides='default')
plt.axis([0, spflength, 0, 20000])
ax2.set_xticks(xlabel2)
ax2.set_xticklabels(xlabel2)
grid(True)
ylabel2 = []
for x in ax2.get_yticks() :
ylabel2.append(str(x/1000)+'k')
ax2.set_yticklabels(ylabel2)
#show()
savefig(outfile);
spf.close()
show_wave_n_spec()
2013年10月29日 星期二
centos 6.3 + python module scikits.audiolab
原本是想用Java處理就好~ 不過卡在頻譜圖一直畫不出來...
(叫一個工數只有20~40分的程度人來做真是太勉強了Orz...)
最後只好妥協用python的套件...
先講快樂windows安裝包(比起centos真的快樂很多, 前提是找得到)...
選用2.6版本~ 是因為當初找得比較齊的~
還好centos內建也是2.6, 至少轉移上去程式可以不用改...
windows快樂包~ 沒記錯的話應該是(依序安裝)
python-2.6.6rc2.amd64.msi
numpy-MKL-1.7.1.win-amd64-py2.6.exe
matplotlib-1.2.1.win-amd64-py2.6.exe
scikits.audiolab-0.10.2.win32-py2.6.exe
接著就是讓我非常意外的...centos安裝...
明明已經是內建python的環境, 怎麼會裝得那麼淒慘...
真的不知道要怎麼說...以下是到處解決xxx package not found後的統整結果~
可能裡面有多裝了一些什麼碗糕的~ 反正重點就是...能一路裝完就好了T___T...
至於重點應該還是在於
裝好gcc
裝好numpy module(1.6.2)
裝好matplotlib(1.1.1) <--原本想裝最新版的, 看到前置清單放棄...還好舊版的會動...無言
裝好audiolab(0.11.0)
只是為了裝好其中一個模組~ 大概就是要一直google, 試裝N次...Orz...
安裝像debug一樣~ 真是好樣的open source...喵的
su
yum install gcc
su
cd /etc/xxx/install
wget --no-check-certificate http://pypi.python.org/packages/source/d/distribute/distribute-0.6.27.tar.gz
tar -xvf distribute-0.6.27.tar.gz
cd distribute-0.6.27
python setup.py build
python setup.py install
yum install gcc-gfortran
yum install blas-devel
yum install lapack-devel
yum install python-dev python-devel
yum install gcc-c++
yum install libpng-devel
##install pip
#yum -y install python-setuptools
easy_install pip
pip install pil
##install numpy
cd /etc/xxx/install
#wget --no-check-certificate https://pypi.python.org/packages/source/n/numpy/numpy-1.7.1.tar.gz#md5=0ab72b3b83528a7ae79c6df9042d61c6
wget http://downloads.sourceforge.net/project/numpy/NumPy/1.6.2/numpy-1.6.2.tar.gz
tar -xvf numpy-1.6.2.tar.gz
cd numpy-1.6.2
python setup.py build
python setup.py install
##
wget http://downloads.sourceforge.net/project/scipy/scipy/0.11.0/scipy-0.11.0.tar.gz
tar -xzf scipy-0.11.0.tar.gz
cd scipy-0.11.0
python setup.py build
python setup.py install
##install freetype
cd /etc/xxx/install
wget http://sourceforge.net/projects/freetype/files/freetype2/2.5.0/freetype-2.5.0.1.tar.gz/download
tar -xzf freetype-2.5.0.1.tar.gz
cd freetype-2.5.0.1
./configure --without-png
make
make install
##install matplotlib(use 1.1.1 OK!! 1.3 fail...Orz)
#yum install python-matplotlib
wget http://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.1.1/matplotlib-1.1.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmatplotlib%2Ffiles%2Fmatplotlib%2Fmatplotlib-1.1.1%2F&ts=1351382082&use_mirror=jaist
tar -xvf matplotlib-1.1.1.tar.gz
cd matplotlib-1.1.1
python setup.py build
python setup.py install
##install wave module
wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz
tar -xzf libsndfile-1.0.25.tar.gz
cd libsndfile-1.0.25
./configure
make -j8
make -j8 install
wget --no-check-certificate https://pypi.python.org/packages/source/s/scikits.audiolab/scikits.audiolab-0.11.0.tar.gz#md5=f93f17211c7763d8631e0d10f37471b0
tar -xzf scikits.audiolab-0.11.0.tar.gz
cd scikits.audiolab-0.11.0
python setup.py build
python setup.py install
(叫一個工數只有20~40分的程度人來做真是太勉強了Orz...)
最後只好妥協用python的套件...
先講快樂windows安裝包(比起centos真的快樂很多, 前提是找得到)...
選用2.6版本~ 是因為當初找得比較齊的~
還好centos內建也是2.6, 至少轉移上去程式可以不用改...
windows快樂包~ 沒記錯的話應該是(依序安裝)
python-2.6.6rc2.amd64.msi
numpy-MKL-1.7.1.win-amd64-py2.6.exe
matplotlib-1.2.1.win-amd64-py2.6.exe
scikits.audiolab-0.10.2.win32-py2.6.exe
接著就是讓我非常意外的...centos安裝...
明明已經是內建python的環境, 怎麼會裝得那麼淒慘...
真的不知道要怎麼說...以下是到處解決xxx package not found後的統整結果~
可能裡面有多裝了一些什麼碗糕的~ 反正重點就是...能一路裝完就好了T___T...
至於重點應該還是在於
裝好gcc
裝好numpy module(1.6.2)
裝好matplotlib(1.1.1) <--原本想裝最新版的, 看到前置清單放棄...還好舊版的會動...無言
裝好audiolab(0.11.0)
只是為了裝好其中一個模組~ 大概就是要一直google, 試裝N次...Orz...
安裝像debug一樣~ 真是好樣的open source...喵的
su
yum install gcc
su
cd /etc/xxx/install
wget --no-check-certificate http://pypi.python.org/packages/source/d/distribute/distribute-0.6.27.tar.gz
tar -xvf distribute-0.6.27.tar.gz
cd distribute-0.6.27
python setup.py build
python setup.py install
yum install gcc-gfortran
yum install blas-devel
yum install lapack-devel
yum install python-dev python-devel
yum install gcc-c++
yum install libpng-devel
##install pip
#yum -y install python-setuptools
easy_install pip
pip install pil
##install numpy
cd /etc/xxx/install
#wget --no-check-certificate https://pypi.python.org/packages/source/n/numpy/numpy-1.7.1.tar.gz#md5=0ab72b3b83528a7ae79c6df9042d61c6
wget http://downloads.sourceforge.net/project/numpy/NumPy/1.6.2/numpy-1.6.2.tar.gz
tar -xvf numpy-1.6.2.tar.gz
cd numpy-1.6.2
python setup.py build
python setup.py install
##
wget http://downloads.sourceforge.net/project/scipy/scipy/0.11.0/scipy-0.11.0.tar.gz
tar -xzf scipy-0.11.0.tar.gz
cd scipy-0.11.0
python setup.py build
python setup.py install
##install freetype
cd /etc/xxx/install
wget http://sourceforge.net/projects/freetype/files/freetype2/2.5.0/freetype-2.5.0.1.tar.gz/download
tar -xzf freetype-2.5.0.1.tar.gz
cd freetype-2.5.0.1
./configure --without-png
make
make install
##install matplotlib(use 1.1.1 OK!! 1.3 fail...Orz)
#yum install python-matplotlib
wget http://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.1.1/matplotlib-1.1.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmatplotlib%2Ffiles%2Fmatplotlib%2Fmatplotlib-1.1.1%2F&ts=1351382082&use_mirror=jaist
tar -xvf matplotlib-1.1.1.tar.gz
cd matplotlib-1.1.1
python setup.py build
python setup.py install
##install wave module
wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz
tar -xzf libsndfile-1.0.25.tar.gz
cd libsndfile-1.0.25
./configure
make -j8
make -j8 install
wget --no-check-certificate https://pypi.python.org/packages/source/s/scikits.audiolab/scikits.audiolab-0.11.0.tar.gz#md5=f93f17211c7763d8631e0d10f37471b0
tar -xzf scikits.audiolab-0.11.0.tar.gz
cd scikits.audiolab-0.11.0
python setup.py build
python setup.py install
centos 6.3 + apache + php + tomcat
起因1是...Java系統都是tomcat...然後centos吵不是root不能bind 80....
我又不想用root跑tomcat...所以就只好加apache...
因2是...postgresql管理工具, 還是phpPgAdmin比較方便...
反正php都是活在apache下
因3是...因為網管議題乾脆都走http ws比較單純...
所以有東西會從內網proxy->DMZproxy->外網proxy
(喵的~ 我也不想搞成這樣)
因4是...apache(httpd)裝起來好快阿阿阿~~~
因5是...我已經在很努力的精簡過多的功能維護設定...
(之後維護的人接不起來...雖小的還是我~_~)
總之~ 基本架構就是apache+php+tomcat....
依不同的主機跟功能~ 會有兩兩配的情況, 還有os(centos, win server)配...
連安裝建置也要客制化真是要死了
(所以今年決定放棄之前比較熟悉ubuntu陣營了...主因是看到centos的桌面比ubuntu好很多...)
總之底下是php(以phpPgAdmin)安裝法...centos和win安裝差蠻多的~
su
##只要一行就裝完apache, 給個讚
yum -y install httpd
#change apache listen port
vim /etc/httpd/conf/httpd.conf
Listen 80 ( other port--> Listen *:9080)
/etc/rc.d/init.d/httpd start
###(if perssion deney check this)
getenforce
-->Enforcing
setenforce 0
getenforce
-->Permissive
service httpd start
#check log to see httpd is OK?
ps -ef | grep http
cat /var/log/httpd/error_log
##安裝PHP, 也是一行...好!
yum -y install php
##php test page
cd /var/www/html/
vim index.php
<?php
phpinfo();
?>
##restart httpd
service httpd restart
##test php
xxxx/index.php
##安裝phpPgAdmin...真好~
##不過有發生過yum找不到package...不知道是剛好被關掉還那邊網路檔掉??
yum install phpPgAdmin
#check conf, 預設就只開localhost, 不錯有sense...一般應用就是看情況再多加Allow
cat /etc/httpd/conf.d/phpPgAdmin.conf
<Location /phpPgAdmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
</Location>
cat /etc/php.ini
#如果不知道被東西被裝到那邊去~ search file一下
#check where? (test ok it is /usr/share/phpPgAdmin)
find / -name phpPgAdmin
exit;
### 安裝湯姆貓, 個人習慣使用zip安裝, yum資料夾結構亂跑很難處理
### 使用一般user, 裝在預設8080就好
mkdir tomcat
cd tomcat
cp ~/apache-tomcat-7.0.26.tar.gz .
tar -zxv -f apache-tomcat-7.0.26.tar.gz
cd apache-tomcat-7.0.26
bin/startup.sh
## open browser link xxxx:8080 to test
### more setting
vim bin/catalina.sh
add
JAVA_OPTS="-Xms128m -Xmx1024m"
### use 80(apache2 proxy, ajp)
su
vim /etc/httpd/conf/httpd.conf
##(G)加在最底下,
##不要用/根目錄 轉導~ 會導致php或其他apache目錄被搶走~
##依需要使用對應之路徑就好
<VirtualHost *:80>
ServerName mybestappp.com
ServerAlias www.mybestapp.com
ProxyRequests Off
ProxyPreserveHost On
ErrorLog /etc/xxx/log/httpd.tomcat.error.log
CustomLog /etc/xxx/log/httpd.tomcat.log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /tomcat ajp://localhost:8009/
ProxyPassReverse /tomcat ajp://localhost:8009/
ProxyPass /mywebapp ajp://localhost:8009/mywebapp
ProxyPassReverse /mywebapp ajp://localhost:8009/mywebapp
</VirtualHost>
service httpd restart
我又不想用root跑tomcat...所以就只好加apache...
因2是...postgresql管理工具, 還是phpPgAdmin比較方便...
反正php都是活在apache下
因3是...因為網管議題乾脆都走http ws比較單純...
所以有東西會從內網proxy->DMZproxy->外網proxy
(喵的~ 我也不想搞成這樣)
因4是...apache(httpd)裝起來好快阿阿阿~~~
因5是...我已經在很努力的精簡過多的功能維護設定...
(之後維護的人接不起來...雖小的還是我~_~)
總之~ 基本架構就是apache+php+tomcat....
依不同的主機跟功能~ 會有兩兩配的情況, 還有os(centos, win server)配...
連安裝建置也要客制化真是要死了
(所以今年決定放棄之前比較熟悉ubuntu陣營了...主因是看到centos的桌面比ubuntu好很多...)
總之底下是php(以phpPgAdmin)安裝法...centos和win安裝差蠻多的~
su
##只要一行就裝完apache, 給個讚
yum -y install httpd
#change apache listen port
vim /etc/httpd/conf/httpd.conf
Listen 80 ( other port--> Listen *:9080)
/etc/rc.d/init.d/httpd start
###(if perssion deney check this)
getenforce
-->Enforcing
setenforce 0
getenforce
-->Permissive
service httpd start
#check log to see httpd is OK?
ps -ef | grep http
cat /var/log/httpd/error_log
##安裝PHP, 也是一行...好!
yum -y install php
##php test page
cd /var/www/html/
vim index.php
<?php
phpinfo();
?>
##restart httpd
service httpd restart
##test php
xxxx/index.php
##安裝phpPgAdmin...真好~
##不過有發生過yum找不到package...不知道是剛好被關掉還那邊網路檔掉??
yum install phpPgAdmin
#check conf, 預設就只開localhost, 不錯有sense...一般應用就是看情況再多加Allow
cat /etc/httpd/conf.d/phpPgAdmin.conf
<Location /phpPgAdmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
</Location>
cat /etc/php.ini
#如果不知道被東西被裝到那邊去~ search file一下
#check where? (test ok it is /usr/share/phpPgAdmin)
find / -name phpPgAdmin
exit;
### 安裝湯姆貓, 個人習慣使用zip安裝, yum資料夾結構亂跑很難處理
### 使用一般user, 裝在預設8080就好
mkdir tomcat
cd tomcat
cp ~/apache-tomcat-7.0.26.tar.gz .
tar -zxv -f apache-tomcat-7.0.26.tar.gz
cd apache-tomcat-7.0.26
bin/startup.sh
## open browser link xxxx:8080 to test
### more setting
vim bin/catalina.sh
add
JAVA_OPTS="-Xms128m -Xmx1024m"
### use 80(apache2 proxy, ajp)
su
vim /etc/httpd/conf/httpd.conf
##(G)加在最底下,
##不要用/根目錄 轉導~ 會導致php或其他apache目錄被搶走~
##依需要使用對應之路徑就好
<VirtualHost *:80>
ServerName mybestappp.com
ServerAlias www.mybestapp.com
ProxyRequests Off
ProxyPreserveHost On
ErrorLog /etc/xxx/log/httpd.tomcat.error.log
CustomLog /etc/xxx/log/httpd.tomcat.log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /tomcat ajp://localhost:8009/
ProxyPassReverse /tomcat ajp://localhost:8009/
ProxyPass /mywebapp ajp://localhost:8009/mywebapp
ProxyPassReverse /mywebapp ajp://localhost:8009/mywebapp
</VirtualHost>
service httpd restart
2013年10月22日 星期二
centos 6.3 service auto start
對server來說~ 有很多service要開機啟動~ 以免發生搞笑的事情...
尤其是ssh !!...跑機房是很痛苦的T__T...
在安裝OS完, ssh 已經預設安裝成service~ 但是"並沒有被啟動", "也未開機啟動"
所以就是只要啟動加設定啟動就好了~~另外還有一個前題重點...
一定要開防火牆(習慣在centos安裝完後~ 反正都會登進GUI畫面~ 用GUI設定防火牆還蠻簡單易懂的~ 就順手先做一下)
另外開機啟動~ AP應該都被設定在level3 或 5啟動~ 各level的定義可以參考
http://ithelp.ithome.com.tw/question/10078093
RunLevel (SysV init) 啟動模式等級可以分為 7 種等級分別是 0 ~ 6,而這 7 個數字所分別代表的意義如下:
0 (halt):系統關機,若您將 RunLevel 設為此模式,則會發現當開機程式完成後系統就直接關機。
1 (Single user mode):單人模式,通常在系統發生問題需要維護時才會進入此一模式。
2 (Multiuser without NFS):多人模式但沒有 NFS 網路功能,通常用於多人多工但不需要網路功能時,才會進入此模式。
3 (Full multiuser mode):多人文字模式,此模式為不需要進入視窗模式,並且具備完整網路功能的管理者所使用的模式。
4 (unused):尚未使用,使用者可以自行定義。
5 (X11):多人圖形模式,此模式為習慣使用視窗模式,並且具備完整網路功能的管理者所使用的模式。
6 (reboot):重新啟動,若您將 RunLevel 設為此模式則會發現當開機程式完成後,系統就直接重新啟動。
##firewall setting
##open 5432(postgresql), 80(http), 22(ssh)
##start ssh
service sshd restart
## assign service auto start
su
chkconfig --list
chkconfig --level 5 sshd on
chkconfig --level 5 postgresql-9.1 on
chkconfig --level 5 httpd on
centos 6.3 + postgresql 9.1
centos 6.3 其實有內建 postgresql 8.4, 若不想升就不需要處理...
不過若要升就要先把舊的移除~
另外有一點要注意的是~ postgresql 會把 系統帳號(就是ssh用的帳號) 和 db內的帳號結合起來, 簡單的說~ 就是系統帳號和db帳號要用同一個~ 若db connect/owner不用super user(postgres), 就要注意!!(其實設定檔上也可以改設定的樣子~ localhost最上面那群~ 不過在建置時還要create 一大堆schema~ 還要橋那個設定是有點困擾Orz...)
習慣上我會使用centos上的基本user(就是安裝時會設定的那個普通user做 account, 比較沒問題)
另外試了很多次~ 雖然看網路上寫~ 安裝啟動似乎可以不用root, 但是~ 沒root九成都碰到權限問題(裝過五六次~就只有一次不知道未什麼不用XD)...後來就乾脆用root起~ 反正db都是做成service在跑~ root比較沒問題~ 至於權限就控管在db owner底下做處理就好...
user account我大概都是安裝用root, 改設定檔用postgres, psql看情況使用postgres或是自訂user, 設定檔的認證方式~若使用trust 會真的完全不認密碼..個人試過後還是md5比較好...
initdb失敗時~ 會產生一些log檔在data底下~ 基本上就是log看一看後就可以砍掉~ 因為initdb會要求要一個空空的資料夾(yum裝下去應該都是在 /var/lib/pgsql/9.1/data)
su
## remove postgresql inside(default is 8)
yum erase postgresql
## install postgresql 9.1
wget http://yum.postgresql.org/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-4.noarch.rpm
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm
yum install postgresql91-server (yum install postgresql91-server.x86_64)
adduser postgres
passwd postgres (xxxpwdxxx)
adduser myowner
passwd myowner (xxxpwdxxx)
### use psql to change pwd
###\password postgres
###\q
## init postgres db data
su postgres
cd /var/lib/pgsql/9.1/data (check owner must be postgres and EMPTY folder)
###if group not permission use root!!!
service postgresql-9.1 initdb
## config properties
su postgres
cd /var/lib/pgsql/9.1/data
vim pg_hba.conf (ident -> md5, add access ip range, ident means use another ident server check user/pwd)
#Add(local host ip must md5 for phpPgAdmin)
host all all 192.168.xx.1/24 md5
vim postgresql.conf
#Update
listen_addresses='*'
## restart postgresql
/etc/init.d/postgresql-9.1 restart
##or use service
service postgresql-9.1 restart
2013年10月15日 星期二
訂閱:
文章 (Atom)