Close() public method

public Close ( ) : void
return void
示例#1
0
        private static void Conversion()
        {
            string filename = "audio_bin2";
            byte[] myBytes =File.ReadAllBytes(filename); // entre 0 et 255 short
            short[] myShort = new short[myBytes.Length]; // entre 0 et | 257
            short[] myShortDouble = new short[myBytes.Length*2];
            byte[] myBytes16MHz = new byte[myShortDouble.Length * 2];

            int short_intervalle = short.MaxValue - short.MinValue;
            int multiplieur = short_intervalle/Byte.MaxValue;
            for (int i = 0; i < myBytes.Length; i++)
            {
                short sh = myBytes[i];
                int tampon = short.MinValue + (sh * multiplieur);
                myShort[i] = (short)(tampon);
            }
            for (int i = 0; i < myShort.Length; i++)
            {
                myShortDouble[2*i] = myShort[i];
                if (i < myShort.Length-1)
                {
                    short half1 = (short)(myShort[i] / 2);
                    short half2 = (short)(myShort[i + 1] / 2);
                    myShortDouble[2 * i + 1] = (short)(half1 + half2);
                }
                if (i == myShort.Length - 1)
                {
                    myShortDouble[2 * i+1] = myShort[i];
                }
            }
            for (int i = 0; i < myShortDouble.Length; i++)
            {
                myBytes16MHz[2*i] = (byte)myShortDouble[i];
                myBytes16MHz[2*i+1] = (byte)(myShortDouble[i] >> 8);
            }
               /* DateTime d = DateTime.Now;
            string datePatt = @"Mdyyyyhhmmsstt";
            string filename2 = "audio_raw_" + d.ToString(datePatt);
            FileStream fileStream2 = new FileStream(filename2, FileMode.Create);
            fileStream2.Write((byte[])myBytes16MHz, 0, myBytes16MHz.Length);
            fileStream2.Close();*///MemoryStream get buffer
            DateTime d = DateTime.Now;
            string datePatt = @"Mdyyyyhhmmsstt";
            Console.WriteLine("Conversion finie !!");
            string outputFile = "audio_flac_" + d.ToString(datePatt) + ".flac";
            FlakeWriter flac = new FlakeWriter(null, 16, 1, 16000, File.Create(outputFile));
            //FlacWriter flac = new FlacWriter(File.Create(outputFile), 16, 1, 16000);
            //flac.Write(myBytes16MHz, 0, myBytes16MHz.Length);
            //flac.Write();
            flac.Close();
        }
 private static Tuple<int, string> WavToFlacHelper(WAVReader audioSource, string targetFlacPath)
 {
     int sampleRate;
     AudioBuffer buffer = new AudioBuffer(audioSource, 0x10000);
     FlakeWriterSettings settings = new FlakeWriterSettings();
     settings.PCM = audioSource.PCM;
     FlakeWriter audioDestination = new FlakeWriter(targetFlacPath, settings);
     while (audioSource.Read(buffer, -1) != 0)
     {
         audioDestination.Write(buffer);
     }
     sampleRate = settings.PCM.SampleRate;
     audioDestination.Close();
     audioSource.Close();
     return new Tuple<int, string>(sampleRate, targetFlacPath);
 }
示例#3
0
        public async Task TestWriting()
        {

            var wavStream =
                await
                (await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///test.wav")))
                    .OpenStreamForReadAsync();

            var expectedBytes =
                ReadFully(await
               (await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///flake.flac")))
                   .OpenStreamForReadAsync());


            var buff = WAVReader.ReadAllSamples(wavStream);
            FlakeWriter target;

            var outputStream = new MemoryStream();

            target = new FlakeWriter(outputStream, new FlakeWriterSettings { PCM = buff.PCM, EncoderMode = "7" });
            target.Settings.Padding = 1;
            target.DoSeekTable = false;
            target.Write(buff);
            target.Close();

            outputStream.Seek(0, SeekOrigin.Begin);

            var resultContent = outputStream.ToArray();
            var outStream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync("out.flac",
                                                                        CreationCollisionOption.ReplaceExisting);
            outStream.Write(resultContent, 0, resultContent.Length);
            outStream.Dispose();
            Debug.WriteLine(ApplicationData.Current.LocalFolder.Path);
            

            CollectionAssert.AreEqual(expectedBytes, outputStream.ToArray(), "result and expected doesn't match.");
        }
示例#4
0
        public void TestWriting()
        {
            AudioBuffer buff = WAVReader.ReadAllSamples("test.wav", null);
            FlakeWriter target;

            target = new FlakeWriter("flakewriter0.flac", null, new FlakeWriterSettings { PCM = buff.PCM, EncoderMode = "7" });
            target.Settings.Padding = 1;
            target.DoSeekTable = false;
            //target.Vendor = "CUETools";
            //target.CreationTime = DateTime.Parse("15 Aug 1976");
            target.FinalSampleCount = buff.Length;
            target.Write(buff);
            target.Close();
            //CollectionAssert.AreEqual(File.ReadAllBytes("flake.flac"), File.ReadAllBytes("flakewriter0.flac"), "flakewriter0.flac doesn't match.");

            target = new FlakeWriter("flakewriter1.flac", null, new FlakeWriterSettings { PCM = buff.PCM, EncoderMode = "7" });
            target.Settings.Padding = 1;
            target.DoSeekTable = false;
            //target.Vendor = "CUETools";
            //target.CreationTime = DateTime.Parse("15 Aug 1976");
            target.Write(buff);
            target.Close();
            CollectionAssert.AreEqual(File.ReadAllBytes("flake.flac"), File.ReadAllBytes("flakewriter1.flac"), "flakewriter1.flac doesn't match.");
        }
 private void ConvertToFlac(Stream sourceStream, Stream destinationStream) {
   var audioSource = new WAVReader(null, sourceStream);
   try {
     if (audioSource.PCM.SampleRate != 16000) {
       throw new InvalidOperationException("Incorrect frequency - WAV file must be at 16 KHz.");
     }
     var buff = new AudioBuffer(audioSource, 0x10000);
     var flakeWriter = new FlakeWriter(null, destinationStream, audioSource.PCM);
     // flakeWriter.CompressionLevel = 8;
     while (audioSource.Read(buff, -1) != 0) {
       flakeWriter.Write(buff);
     }
     flakeWriter.Close();
   }
   finally {
     audioSource.Close();
   }
 }
        /// <summary>
        /// Convert stream of wav to flac format and send it to google speech recognition service.
        /// </summary>
        /// <param name="stream">wav stream</param>
        /// <returns>recognized result</returns>
        /// // Step 1- Converts wav stream to flac 
        public static string WavStreamToGoogle(Stream stream)
        {
            FlakeWriter audioDest = null;
            IAudioSource audioSource = null;
            string answer;
            try
            {
                var outStream = new MemoryStream();

                stream.Position = 0;

                audioSource = new WAVReader("", stream);

                var buff = new AudioBuffer(audioSource, 0x10000);

                audioDest = new FlakeWriter("", outStream, audioSource.PCM);

                var sampleRate = audioSource.PCM.SampleRate;

                while (audioSource.Read(buff, -1) != 0)
                {
                    audioDest.Write(buff);
                }

                answer = GoogleRequest(outStream, sampleRate);

            }
            finally
            {
                if (audioDest != null) audioDest.Close();
                if (audioSource != null) audioSource.Close();
            }
            return answer;
        }
        /// <summary>
        /// Convert .wav file to .flac file with the same name
        /// </summary>
        /// <param name="WavName">path to .wav file</param>
        /// <returns>Sample Rate of converted .flac</returns>
        public static int Wav2Flac(string WavName)
        {
            int sampleRate;
            var flacName = Path.ChangeExtension(WavName, "flac");

            FlakeWriter audioDest = null;
            IAudioSource audioSource = null;
            try
            {
                audioSource = new WAVReader(WavName, null);

                AudioBuffer buff = new AudioBuffer(audioSource, 0x10000);

                audioDest = new FlakeWriter(flacName, audioSource.PCM);

                sampleRate = audioSource.PCM.SampleRate;

                while (audioSource.Read(buff, -1) != 0)
                {
                    audioDest.Write(buff);
                }
            }
            finally
            {
                if (audioDest != null) audioDest.Close();
                if (audioSource != null) audioSource.Close();
            }
            return sampleRate;
        }