Module xform_feature_vec
[frames] | no frames]

Source Code for Module xform_feature_vec

 1  #!/usr/bin/env python 
 2   
 3  """This simulates re-running feature_vec.py with the -xform or -XFORM flags. 
 4  It reads in a feature vector, then transforms it by a matrix multiplication, 
 5  and writes it back out. 
 6  """ 
 7   
 8  import os 
 9  import sys 
10  import math 
11  from gmisclib import chunkio 
12  from gmisclib import die 
13  import gpkimgclass 
14  from gmisclib import avio 
15  from gmisclib import Num 
16  # from gpk_voicing import feature_vec as FV 
17   
18  PLOT = False 
19   
20  XFORM = None 
21   
22   
23 -def fiddle(h):
24 o = {} 25 for (k, v) in h.items(): 26 if k.startswith('F_INFO'): 27 o['OLD_%s' % k] = v 28 elif k.startswith('RMS'): 29 pass 30 elif k.startswith('TTYPE'): 31 pass 32 elif k.startswith('TUNITS'): 33 pass 34 else: 35 o[k] = v 36 return o
37 38
39 -def process(d, Xform):
40 fac = chunkio.datachunk(open(Xform, 'r')).read_NumArray() 41 o = Num.matrixmultiply(data.d, fac) 42 hdr = fiddle( data.hdr ) 43 hdr['XFORM'] = Xform 44 for i in range( fac.shape[1] ): 45 hdr['TTYPE%d' % (i+1)] = 'Mixture%d' % i 46 d = ','.join(['%g' % q for q in fac[:,i] ]) 47 hdr['F_INFO%d' % (i+1)] = d 48 hdr['RMS%d' % (i+1)] = math.sqrt(Num.average(o[:,i]**2)) 49 gpkimgclass.gpk_img(hdr, o).write(ofile)
50 51 52 53 if __name__ == '__main__': 54 ofile = '-' 55 arglist = sys.argv[1:] 56 while arglist and arglist[0].startswith('-'): 57 arg = arglist.pop(0) 58 if arg == '--': 59 break 60 elif arg == '-o': 61 ofile = arglist.pop(0) 62 elif arg == '-xform': 63 fxd = os.environ['OXIVOICE'] 64 XFORM = '%s/xform.chunk' % fxd 65 elif arg == '-Xform': 66 XFORM = arglist.pop(0) 67 else: 68 die.die('Unrecognized flag: %s' % arg) 69 assert XFORM, "Nothing to do!" 70 fname = arglist[0] 71 data = gpkimgclass.read(fname) 72 process(data, XFORM) 73