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