このエントリーをはてなブックマークに追加

The Snack Sound Toolkitの、フォルマンと取得、ピッチ取得・スペクトログラム取得の機能を

akJのソフトから使うために、exe化したもの - 用途があればご自由に改造・再配布してください。

ライセンスはApache2.0とします。


pitch2.exe - ピッチを取得

formant.exe - フォルマントとを取得

spectram.exe - スペクトラグラムを取得


スクリプトの中身

これらのexeはpythonスクリプトから変換して作りました。

pitch2.exe

#! /usr/bin/env python

from Tkinter import *
from tkSnack import *
root = Tkinter.Tk()

initializeSnack(root);
import sys;

length=len(sys.argv);

if length>1:
	path=sys.argv[1];
else:
	print "pitch2.py input [start end min max framelength]";
	sys.exit();

if length>2:
	startsample=int(sys.argv[2]);
else:
	startsample=0;

if length>3:
	endsample=int(sys.argv[3]);
else:
	endsample=0;

if length>4:
	min=int(sys.argv[4]);
else:
	min=60;

if length>5:
	max=int(sys.argv[5]);
else:
	max=600;

if length>6:
	flength=float(sys.argv[6]);
else:
	flength=0.01;

#guess min is 0.01
if(flength>0.01):
	flength=0.01;


mysound=Sound(load=path);
mysound.convert(encoding='Lin16',channels='1');

if endsample == 0:
	endsample=mysound.length();
elif endsample <0:
	endsample=mysound.length()+endsample;

#print endsample;
#framelength=0.01, 0.1 has error 
#windowlength=0.025,0 has error
resultList=mysound.pitch(method='ESPS',framelength=flength,minpitch=min,maxpitch=max,start=startsample,end=endsample);


for i in resultList:
	print i;

spectram.exe

#! /usr/bin/env python

from Tkinter import *
from tkSnack import *
root = Tkinter.Tk()

initializeSnack(root);


import sys;

path=sys.argv[1];
height=int(sys.argv[2])*2;
persample=float(sys.argv[3]);
startValue=int(sys.argv[4]);
endValue=int(sys.argv[5]);

#print(path);
mysound=Sound(load=path);

#mysound.convert(encoding='Lin16',channels='1');

#resultList=mysound.dBPowerSpectrum(fftlength='64',windowlength='64',start=startValue,end=endValue);
#resultList=mysound.dBPowerSpectrum(fftlength='64',windowlength='64',start=startValue);

v=startValue;
filelength=mysound.length();

if endValue==0:
	endValue=filelength;

prevValue=0;
while v < filelength :
	#print "ok";
	at=int(v);
	resultList=mysound.dBPowerSpectrum(fftlength=height,windowlength=height,start=at);
	for i in resultList:
		intV=int(i);
		print prevValue-intV;
		prevValue=intV;
	v=v+persample;
	#print v;
	if v+height>=endValue:
		break;

formant.exe

#! /usr/bin/env python

from Tkinter import *
from tkSnack import *
root = Tkinter.Tk();

initializeSnack(root);


import sys;

path=sys.argv[1];
startsample=int(sys.argv[2]);
endsample=int(sys.argv[3]);

#startsample=0;
#endsample=0;
#endsample=430; #should bigger 1024 like 2048.

#mysound=Sound(file=path);
#formant only work memory.
mysound=Sound(load=path);
#mysound.convert(encoding='Lin16',channels='1');



#sample like 11025
if endsample == 0:
	endsample=mysound.length();
elif endsample <0:
	endsample=mysound.length()+endsample;

#print endsample;

resultList=mysound.formant(framelength='0.01',start=startsample,end=endsample);

#print len(resultList);

for i in resultList:
	print i;

サイト
Android情報サイト | Youtube サイト | Java サイト | Google 活用サイト | Google 情報サイト | 無料ソフト活用 サイト |写真活用のPicasa2 サイト |新サイト

Blog
Android ブログ


Copyright (c)2004 - 2012 Aki. All rights reserved.