1*a58d3d2aSXin Li 2*a58d3d2aSXin Liimport numpy as np 3*a58d3d2aSXin Liimport math 4*a58d3d2aSXin Li 5*a58d3d2aSXin Liscale = 255.0/32768.0 6*a58d3d2aSXin Liscale_1 = 32768.0/255.0 7*a58d3d2aSXin Lidef ulaw2lin(u): 8*a58d3d2aSXin Li u = u - 128 9*a58d3d2aSXin Li s = np.sign(u) 10*a58d3d2aSXin Li u = np.abs(u) 11*a58d3d2aSXin Li return s*scale_1*(np.exp(u/128.*math.log(256))-1) 12*a58d3d2aSXin Li 13*a58d3d2aSXin Li 14*a58d3d2aSXin Lidef lin2ulaw(x): 15*a58d3d2aSXin Li s = np.sign(x) 16*a58d3d2aSXin Li x = np.abs(x) 17*a58d3d2aSXin Li u = (s*(128*np.log(1+scale*x)/math.log(256))) 18*a58d3d2aSXin Li u = np.clip(128 + np.round(u), 0, 255) 19*a58d3d2aSXin Li return u.astype('int16') 20