def read_audio_file_new( self , file_name , target ): time_a = time.time() full_command = self.__cmd (head, file) = os.path.split( file_name ) tmp_dir = tempfile.gettempdir() tmp_file = os.path.join( tmp_dir , file ) + ".wav" file_name = re.sub( "(\"|`|\$)" , r"\\\1" , file_name ) tmp_file = re.sub( "(\"|`|\$)" , r"_xyz_" , tmp_file ) full_command = full_command + " " + self.get_cmd_options( file_name , tmp_file ) #print_msg( full_command ) r = subprocess.call( full_command , shell=True , stderr=subprocess.PIPE , stdout=subprocess.PIPE ) #read_wav.read_wav( tmp_file ) ret_f = self.read_wav( tmp_file , target ) if os.path.exists( tmp_file ) : os.remove( tmp_file ) else: print_msg( file_name + ": unsupported encoder" ) time_b = time.time() dr14_log_info( "AudioFileReader.read_audio_file_new: Clock: %2.8f" % (time_b - time_a ) ) return ret_f
def read_wav(self, file_name, target): time_a = time.time() convert_8_bit = numpy.float32(2**8 + 1.0) convert_16_bit = numpy.float32(2**15 + 1.0) convert_32_bit = numpy.float32(2**31 + 1.0) try: wave_read = wave.open(file_name, 'r') target.channels = wave_read.getnchannels() target.Fs = wave_read.getframerate() target.sample_width = wave_read.getsampwidth() nframes = wave_read.getnframes() #print_msg( file_name + "!!!!!!!!!!!!: " + str(target.channels) + " " + str(target.sample_width ) + " " + str( target.Fs ) + " " + str( nframes ) ) X = wave_read.readframes(wave_read.getnframes()) sample_type = "int%d" % (target.sample_width * 8) target.Y = numpy.fromstring(X, dtype=sample_type).reshape( nframes, target.channels) wave_read.close() if sample_type == 'int16': target.Y = target.Y / (convert_16_bit) elif sample_type == 'int32': target.Y = target.Y / (convert_32_bit) else: target.Y = target.Y / (convert_8_bit) #print_msg( "target.Y: " + str(target.Y.dtype) ) except: self.__init__() print_msg("Unexpected error: %s" % str(sys.exc_info())) print_msg("\n - ERROR ! ") return False time_b = time.time() dr14_log_info("AudioFileReader.read_wav: Clock: %2.8f" % (time_b - time_a)) return True
def read_wav( self , file_name , target ): time_a = time.time() convert_8_bit = numpy.float32( 2**8 + 1.0 ) convert_16_bit = numpy.float32( 2**15 + 1.0 ) convert_32_bit = numpy.float32( 2**31 + 1.0 ) try: wave_read = wave.open( file_name , 'r' ) target.channels = wave_read.getnchannels() target.Fs = wave_read.getframerate() target.sample_width = wave_read.getsampwidth() nframes = wave_read.getnframes() #print_msg( file_name + "!!!!!!!!!!!!: " + str(target.channels) + " " + str(target.sample_width ) + " " + str( target.Fs ) + " " + str( nframes ) ) X = wave_read.readframes( wave_read.getnframes() ) sample_type = "int%d" % ( target.sample_width * 8 ) target.Y = numpy.fromstring(X, dtype=sample_type ).reshape( nframes , target.channels ) wave_read.close() if sample_type == 'int16': target.Y = target.Y / ( convert_16_bit ) elif sample_type == 'int32': target.Y = target.Y / ( convert_32_bit ) else : target.Y = target.Y / ( convert_8_bit ) #print_msg( "target.Y: " + str(target.Y.dtype) ) except: self.__init__() print_msg ( "Unexpected error: %s" % str( sys.exc_info() ) ) print_msg ( "\n - ERROR ! " ) return False time_b = time.time() dr14_log_info( "AudioFileReader.read_wav: Clock: %2.8f" % (time_b - time_a ) ) return True
def read_audio_file_new(self, file_name, target): time_a = time.time() full_command = self.__cmd (head, file) = os.path.split(file_name) tmp_dir = tempfile.gettempdir() tmp_file = os.path.join(tmp_dir, file) + ".wav" file_name = re.sub("(\"|`|\$)", r"\\\1", file_name) tmp_file = re.sub("(\"|`|\$)", r"_xyz_", tmp_file) full_command = full_command + " " + \ self.get_cmd_options(file_name, tmp_file) #print_msg( full_command ) r = subprocess.Popen(full_command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) stdout_data, stderr_data = r.communicate() #read_wav.read_wav( tmp_file ) ret_f = self.read_wav(tmp_file, target) if os.path.exists(tmp_file): os.remove(tmp_file) else: print_msg(file_name + ": unsupported encoder") time_b = time.time() dr14_log_info("AudioFileReader.read_audio_file_new: Clock: %2.8f" % (time_b - time_a)) return ret_f