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
Example #3
0
    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