private void OnButtonStartRecordingClick(object sender, EventArgs e)
        {
            if (writer != null)
            {
                writer.Close();
                writer.Dispose();
                writer = null;
            }

            DisableButtons();
            buttonStopRecording.Enabled = true;

            captureDevice = new WaveIn();

            captureDevice.DataAvailable    += OnDataAvailable;
            captureDevice.RecordingStopped += OnRecordingStopped;

            //if(MainForm.savingWaveProvider != null)
            //{
            //    MainForm.savingWaveProvider.ClearWriterFileHandles();
            //}

            // Forcibly turn on the microphone (some programs (Skype) turn it off).
            inputDevice.AudioEndpointVolume.Mute = false;

            outputFilename = $"{recordingNameText.Text}.wav";
            writer         = new WaveFileWriter(Path.Combine(outputFolder, outputFilename), captureDevice.WaveFormat);
            captureDevice.StartRecording();
            SetControlStates(true);
        }
Exemple #2
0
 public void Dispose()
 {
     mWaveIn.DataAvailable -= On_AudioDataAvailable;
     mWaveIn.StopRecording();
     mWaveIn.Dispose();
     mWaveFileWriter.Close();
     mWaveFileWriter.Dispose();
 }
Exemple #3
0
 /// <summary>
 /// 停止录音
 /// </summary>
 public void StopRecord()
 {
     mWavIn?.StopRecording();
     mWavIn?.Dispose();
     mWavIn = null;
     mWavWriter?.Close();
     mWavWriter = null;
 }
Exemple #4
0
        static async Task Main()
        {
            Console.WriteLine("SIPSorcery Getting Started Demo");

            AddConsoleLogger();

            _waveFile = new WaveFileWriter("output.mp3", _waveFormat);

            var sipTransport = new SIPTransport();
            var userAgent    = new SIPUserAgent(sipTransport, null);

            userAgent.ClientCallFailed += (uac, err, resp) =>
            {
                Console.WriteLine($"Call failed {err}");
                _waveFile?.Close();
            };
            userAgent.OnCallHungup += (dialog) => _waveFile?.Close();

            WindowsAudioEndPoint winAudioEP  = new WindowsAudioEndPoint(new AudioEncoder());
            VoIPMediaSession     voipSession = new VoIPMediaSession(winAudioEP.ToMediaEndPoints());

            voipSession.OnRtpPacketReceived += OnRtpPacketReceived;

            // Ctrl-c will gracefully exit the call at any point.
            Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e)
            {
                e.Cancel = true;

                if (userAgent.IsCallActive)
                {
                    Console.WriteLine("Hanging up.");
                    userAgent.Hangup();
                }
                else
                {
                    Console.WriteLine("Cancelling call");
                    userAgent.Cancel();
                }
            };

            // Place the call and wait for the result.
            bool callResult = await userAgent.Call(DESTINATION, null, null, voipSession);

            Console.WriteLine($"Call result {((callResult) ? "success" : "failure")}.");

            Console.WriteLine("press any key to exit...");
            Console.Read();

            if (userAgent.IsCallActive)
            {
                Console.WriteLine("Hanging up.");
                userAgent.Hangup();
            }

            // Clean up.
            sipTransport.Shutdown();
        }
        private void CreateNewTempFile()
        {
            _waveFileWriter.Flush();
            _waveFileWriter.Close();

            _tempFileList.Add(_tempWavPath);

            _tempWavPath    = _tempDirPath + "automix_" + (_tempFileList.Count + 1) + ".wav";
            _waveFileWriter = new WaveFileWriter(_tempWavPath, AudioIO.TempWaveFormat);
        }
Exemple #6
0
 public void Dispose()
 {
     if (_waveIn != null)
     {
         _waveIn.StopRecording();
         _waveIn.DataAvailable -= OnDataAvailable;
         _waveIn.Dispose();
     }
     _writer?.Close();
 }
Exemple #7
0
 void waveIn_RecordingStopped(object sender, EventArgs e)
 {
     try
     {
         waveIn.Dispose();
         waveIn = null;
         writer.Close();
         writer = null;
     }
     catch
     {
     }
 }
Exemple #8
0
 public void Dispose()
 {
     if (_waveIn != null)
     {
         _waveIn.StopRecording();
         _waveIn.Dispose();
         _waveIn = null;
     }
     if (_writer != null)
     {
         _writer.Close();
         _writer = null;
     }
 }
 public void Dispose()
 {
     if (wave_in != null)
     {
         wave_in.StopRecording();
         wave_in.Dispose();
         wave_in = null;
     }
     if (writer != null)
     {
         writer.Close();
         writer = null;
     }
 }
Exemple #10
0
 private void waveIn_RecordingStopped(object sender, EventArgs e)
 {
     if (this.InvokeRequired)
     {
         this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
     }
     else
     {
         waveIn.Dispose();
         waveIn = null;
         writer.Close();
         writer = null;
     }
 }
Exemple #11
0
        void sourceInStream_RecordingStopped(object sender, StoppedEventArgs e)
        {
            if (sourceInStream != null)
            {
                sourceInStream.Dispose();
                sourceInStream = null;
            }

            if (waveWriter != null)
            {
                waveWriter.Close();
                waveWriter.Dispose();
                waveWriter = null;
            }
        }
Exemple #12
0
 private void button1_Click_1(object sender, EventArgs e)
 {
     if (waveIn == null)
     {
         waveIn = new WaveIn();
         int sampleRate = 22000;
         int channels   = 2;
         waveIn.WaveFormat     = new WaveFormat(sampleRate, channels);
         waveIn.DeviceNumber   = 2;
         waveIn.DataAvailable += new EventHandler <WaveInEventArgs>(waveIn_DataAvailable);
         iii++;
         var fname = "test" + iii + ".wav";
         writer = new WaveFileWriter(fname, waveIn.WaveFormat);
         waveIn.StartRecording();
         button1.Text = "stop " + fname;
     }
     else
     {
         waveIn.StopRecording();
         waveIn.Dispose();
         writer.Close();
         waveIn       = null;
         writer       = null;
         button1.Text = "start";
     }
 }
Exemple #13
0
        public void SaveRecord()
        {
            try
            {
                waveOut.Stop();
                waveIn.StopRecording();

                if (File.Exists(outputFile))
                {
                    File.Delete(outputFile);
                }

                writer = new WaveFileWriter(outputFile, waveIn.WaveFormat);

                byte[] buffer = new byte[bwp.BufferLength];
                int    offset = 0;
                int    count  = bwp.BufferLength;

                var read = bwp.Read(buffer, offset, count);
                if (count > 0)
                {
                    writer.Write(buffer, offset, read);
                }

                waveIn.Dispose();
                waveIn = null;
                writer.Close();
                writer = null;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
Exemple #14
0
        private void WriteFile2(CMyTask task)
        {
            string         filename = string.Format("{0}\\{1}", TestDir, task.Name);
            WaveFileWriter writer   = new WaveFileWriter(filename, new WaveFormat(8000, 16, 1));

            foreach (var item in task.BufferList)
            {
                writer.Write(item, 0, item.Length);
            }

            //偷看一下task與其property的generation : 通通都是generation 2 (包括task自己)
            //writer是generation 0
            //if (Counter % 1000 == 0)
            //{
            //    ShowGeneration(task);
            //    ShowGeneration(task.Name);
            //    ShowGeneration(task.BufferList);
            //    ShowGeneration(writer);
            //}
            writer.Close();
            writer.Dispose();
            writer = null;
            //GC似乎只會自動回收 generation 最新的那層
            //所以這函式內要是有做new,傳入的那個List就不會被快速回收到,要等很久
            //傳入的參數跨thread,測驗過它的generation==2
            if (Counter % 1000 == 0)
            {
                GC.Collect(2);
            }
            Interlocked.Decrement(ref Counter);
        }
Exemple #15
0
        private void record_loop()
        {
            while (cSamplePos < mSamplePos)
            {
                if (stop_flag)
                {
                    break;
                }

                if (sampleQueue.Count > 0)
                {
                    check_diskspace();

                    byte[] packet = (byte[])sampleQueue.Dequeue();

                    SoundPacket p = new SoundPacket(packet);
                    form.Invoke(form.myDelegate, new object[] { p.averageDB });

                    writer.Write(packet, 0, packet.Length);
                }
            }
            this.isRecording = false;
            writer.Close();


            PortAudio.Pa_StopStream(stream);
        }
Exemple #16
0
        /// <summary>
        /// Finish recording and close WAV file.
        /// </summary>
        public void StopRecording()
        {
            if (!_isRecording)
            {
                return;
            }

            if (_captureInput != null)
            {
                _captureInput.DataAvailable -= _OnDataAvailable;
                _captureInput.StopRecording();
                GC.SuppressFinalize(_captureInput);
                _captureInput.Dispose();
                _captureInput = null;
            }
            if (_waveWriter != null)
            {
                _waveWriter.Flush();
                _waveWriter.Close();
                _waveWriter.Dispose();
                GC.SuppressFinalize(_waveWriter);
                Debug.WriteLine("Recording finished.\n\tFile=" + _tempWavFilePath + "\n");
                _waveWriter = null;
            }
            _isRecording = false;
            _state       = RecorderState.RecordingFinsihed;
            Debug.WriteLine("Recording of " + _tempWavFilePath + " stopped");
        }
Exemple #17
0
 //Окончание записи
 private void WaveIn_RecordingStopped(object sender, StoppedEventArgs e)
 {
     waveIn.Dispose();
     waveIn = null;
     writer.Close();
     writer = null;
 }
Exemple #18
0
        public static void StopRecording(bool saveFile)
        {
            Recording = false;

            loopback?.StopRecording();
            loopback?.Dispose();
            loopback = null;

            writer?.Close();

            if (saveFile)
            {
                SaveFileDialog dialog = new SaveFileDialog();
                dialog.Filter = "Wav Files|*.wav";
                if (dialog.ShowDialog() == true)
                {
                    File.Move("temp.wav", dialog.FileName);
                }
            }

            if (File.Exists("temp.wav"))
            {
                File.Delete("temp.wav");
            }

            writer?.Dispose();
            writer = null;
        }
        void WaveInRecordingStopped(object sender, EventArgs e)
        {
            waveIn.Dispose(); //останавливаем запись
            waveIn = null;
            writer.Close();   //сбрасываем экземпляр класс, который отвечает за запись
            writer = null;

            byte[] record = File.ReadAllBytes(outputFilename); //загружаем нашу запись из файла
            results = GetResultsFromYandex(record);            //получаем варианты расшифровки того что мы мсказали

            //textBox1.Text = results[0];

            foreach (var line in results)
            {
                textBox1.Text += line + "\r\n"; //отображаем результаты в текстовом поле
            }

            button1.Text    = "Начать запись";                               //сбрасываем название кнопки
            button1.Enabled = true;                                          //и делаем её активной

            if (results.Exists(x => x.ToLower() == textBox2.Text.ToLower())) //если есть совпадения (при помощи linq выражений)
            {
                label2.Text = "Правильно!";
                Points++;
            }
            else
            {
                label2.Text = "Неправильно!";
            }
            File.AppendAllText(Directory.GetCurrentDirectory() + @"/teacher/test.txt", textBox2.Text + "\r\n" + "\r\n");
            File.AppendAllLines(Directory.GetCurrentDirectory() + @"/teacher/test.txt", results);
            File.AppendAllText(Directory.GetCurrentDirectory() + @"/teacher/test.txt", "------------------" + "\r\n");
            File.Delete(outputFilename);
            File.Delete(bufferFile);
        }
Exemple #20
0
        XSample ConvertSample(int count, SSampleHeader sh, byte [] sample, Zone izone)
        {
            // Indices in sf2 are numbers of samples, not byte length. So double them.
            var xs = new XSample();

            xs.Extension = ".wav";
            xs.LoopStart = sh.StartLoop - sh.Start;
            xs.LoopEnd   = sh.EndLoop - sh.Start;
            int sampleModes = izone.SampleModes();

            xs.LoopMode = sampleModes == 0 ? InstrumentSampleLoopMode.Off : InstrumentSampleLoopMode.Forward;
            xs.Name     = String.Format("Sample{0:D02} ({1})", count, sh.SampleName);
            xs.BaseNote = (sbyte)izone.OverridingRootKey();
//			xs.Volume = (izone.VelocityRange () & 0xFF00 >> 8); // low range
            if (xs.BaseNote == 0)
            {
                xs.BaseNote = (sbyte)sh.OriginalPitch;
            }
//Console.WriteLine ("{0} ({1}/{2}/{3}/{4}) {5}:{6}:{7}:{8}", xs.Name, sh.Start, sh.StartLoop, sh.EndLoop, sh.End, sh.SampleRate != 0xAC44 ? sh.SampleRate.ToString () : "", sh.OriginalPitch != 60 ? sh.OriginalPitch.ToString () : "", sh.PitchCorrection != 0 ? sh.PitchCorrection.ToString () : "", sampleModes);
            xs.FileName = xs.Name + ".wav";
            var ms  = new MemoryStream();
            var wfw = new WaveFileWriter(ms, new WaveFormat((int)sh.SampleRate, 16, 1));

            wfw.WriteData(sample, 2 * (int)sh.Start, 2 * (int)(sh.End - sh.Start));
            wfw.Close();
            xs.Buffer = ms.ToArray();

            return(xs);
        }
        private void recButton_callback(object sender, RoutedEventArgs e)
        {
            Button clickedButton = (Button)sender;
            var    outF          = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SoundCount");

            if (cycle == 0)
            {
                Directory.CreateDirectory(outF);
            }

            cycle++;
            if (cycle % 2 == 0)
            {
                waveSource.StopRecording();
                waveFile.Close();
                send_request();
                clickedButton.Content = "Record";
            }
            else
            {
                waveSource                   = new WaveIn();
                waveSource.WaveFormat        = new WaveFormat();
                waveSource.DataAvailable    += new EventHandler <WaveInEventArgs>(waveSource_DataAvailable);
                waveSource.RecordingStopped += new EventHandler <StoppedEventArgs>(waveSource_RecordingStopped);

                waveFile = new WaveFileWriter(@"rec.wav", waveSource.WaveFormat);

                waveSource.StartRecording();

                clickedButton.Content = "Stop";
            }
        }
Exemple #22
0
 /// <summary>
 /// 停止录音
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnRecordingStopped(object sender, StoppedEventArgs e)
 {
     if (this.InvokeRequired)
     {
         this.BeginInvoke(new EventHandler <StoppedEventArgs>(OnRecordingStopped), sender, e);
     }
     else
     {
         if (waveIn != null) // 关闭录音对象
         {
             waveIn.Dispose();
             waveIn = null;
         }
         if (writer != null)//关闭文件流
         {
             writer.Close();
             writer = null;
         }
         if (e.Exception != null)
         {
             MessageBox.Show(String.Format("出现问题 {0}",
                                           e.Exception.Message));
         }
     }
 }
Exemple #23
0
        static void Main(string[] args)
        {
            var option = new Dictionary <string, object>()
            {
                { "spd", 5 }, // 语速
                { "vol", 5 }, // 音量
                { "per", 0 }  // 发音人,4:情感度丫丫童声
            };
            var            text   = "滴,滴,答,10,9,8,7,6,5,4,3,2,1";
            WaveFileWriter writer = null;
            Stream         output = null;

            foreach (var s in text.Split(','))
            {
                var result = _ttsClient.Synthesis(s, option);
                if (!result.Success)
                {
                    Console.WriteLine(result.ErrorMsg);
                }
                var ret = WriteSpeech(result.Data, 1, ref writer);
                if (ret != null)
                {
                    output = ret;
                }
            }
            writer?.Flush();
            output?.Seek(0, SeekOrigin.Begin);
            using (var fs = new FileStream("test.wav", FileMode.Create)) {
                output?.CopyTo(fs);
                fs.Close();
            }
            writer?.Close();
            Console.ReadLine();
        }
Exemple #24
0
        static void Main()
        {
            Console.WriteLine("SIPSorcery Getting Started Demo");

            Log = AddConsoleLogger();

            _waveFile = new WaveFileWriter("output.mp3", _waveFormat);

            _sipTransport = new SIPTransport();
            _sipTransport.AddSIPChannel(new SIPUDPChannel(new IPEndPoint(IPAddress.Any, SIP_LISTEN_PORT)));

            var userAgent = new SIPUserAgent(_sipTransport, null, true);

            userAgent.ServerCallCancelled += (uas) => Log.LogDebug("Incoming call cancelled by remote party.");
            userAgent.OnCallHungup        += (dialog) => _waveFile?.Close();
            userAgent.OnIncomingCall      += async(ua, req) =>
            {
                WindowsAudioEndPoint winAudioEP       = new WindowsAudioEndPoint(new AudioEncoder());
                VoIPMediaSession     voipMediaSession = new VoIPMediaSession(winAudioEP.ToMediaEndPoints());
                voipMediaSession.AcceptRtpFromAny     = true;
                voipMediaSession.OnRtpPacketReceived += OnRtpPacketReceived;

                var uas = userAgent.AcceptCall(req);
                await userAgent.Answer(uas, voipMediaSession);
            };

            Console.WriteLine("press any key to exit...");
            Console.Read();

            // Clean up.
            _sipTransport.Shutdown();
        }
 private void ReleaseResource()
 {
     if (_waveWriter != null)
     {
         _waveWriter.Close();
         _waveWriter.Dispose();
         _waveWriter = null;
     }
     if (_inputStream != null)
     {
         _inputStream.StopRecording();
         _inputStream.DataAvailable -= InputStreamOnDataAvailable;
         _inputStream.Dispose();
         _inputStream = null;
     }
     if (_waveOut != null)
     {
         _waveOut.Stop();
         _waveOut.PlaybackStopped -= WaveOutOnPlaybackStopped;
         _waveOut.Dispose();
         _waveOut = null;
     }
     if (_waveChanel != null)
     {
         _waveChanel.Dispose();
     }
     if (_waveReader != null)
     {
         _waveReader.Dispose();
     }
 }
Exemple #26
0
        static void Main(string[] args)
        {
            string s = "";

            while (s != "q")
            {
                Thread thread = new Thread(delegate()
                {
                    init();
                });

                thread.Start();
                Console.ReadLine();

                s_WaveIn.StopRecording();
                writer.Close();

                convert();

                System.Threading.Thread.Sleep(500);


                Console.WriteLine(Send("test.flac"));
                s = Console.ReadLine();
            }
        }
Exemple #27
0
 private void StopRecording()
 {
     this.Invoke(new Action(() => waveIn.Dispose()));
     waveIn = null;
     this.Invoke(new Action(() => writer.Close()));
     writer = null;
 }
Exemple #28
0
 private void HandleFile(string filename)
 {
     try
     {
         FileInfo file = new FileInfo(filename);
         string   path = System.IO.Path.Combine(file.Directory.FullName, "output");
         if (!Directory.Exists(path))
         {
             Directory.CreateDirectory(path);
         }
         AudioFileReader waveFileReader      = new AudioFileReader(filename);
         int             bytesPerMillisecond = waveFileReader.WaveFormat.AverageBytesPerSecond / 1000;
         int             startPos            = GetSilenceTime(waveFileReader, SilenceLocation.Start, config.Config.SilenceThreshold);
         int             endPos2             = GetSilenceTime(waveFileReader, SilenceLocation.End, config.Config.SilenceThreshold);
         endPos2 -= endPos2 % 4;
         WaveFileWriter waveFileWriter = new WaveFileWriter(filename + ".temp.wav", waveFileReader.WaveFormat);
         TrimSound(waveFileReader, waveFileWriter, startPos, endPos2);
         byte[] temp = new byte[bytesPerMillisecond * 500];
         waveFileWriter.Write(temp, 0, temp.Length);
         waveFileWriter.Close();
         waveFileReader.Close();
         WaveFileReader           filereader = new WaveFileReader(filename + ".temp.wav");
         WaveFormat               format     = new WaveFormat(8000, 16, 1);
         MediaFoundationResampler resample   = new MediaFoundationResampler(filereader, format);
         WaveFileWriter.CreateWaveFile(System.IO.Path.Combine(path, file.Name.Replace(file.Extension, ".wav")), resample);
         resample.Dispose();
         filereader.Close();
         File.Delete(filename + ".temp.wav");
     }
     catch (Exception)
     {
     }
 }
Exemple #29
0
        //Once we stop recording, clean up and store recording end date/time
        //INPUT: sender and StoppedEventArgs
        //OUTPUT:
        public void OnRecordingStopped(object sender, StoppedEventArgs e)
        {
            functionResult result = new functionResult();

            try
            {
                //Clean up everytyhing used within the recording
                if (waveIn != null)
                {
                    waveIn.Dispose();
                    waveIn = null;
                }

                if (writer != null)
                {
                    writer.Close();
                    writer = null;
                }

                //Store the date/time the recording ended to be used for calculating the sample length
                recordingEnded = DateTime.Now;
            }
            catch (Exception ex)
            {
                result.Result  = false;
                result.Message = "ERROR - OnDataAvailable - " + ex.ToString();
            }
        }
Exemple #30
0
 //Окончание записи
 private void waveIn_RecordingStopped(object sender, EventArgs e)
 {
     if (InvokeRequired)
     {
         BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
     }
     else
     {
         _www.Dispose();
         _www = null;
         _writer.Close();
         _writer.Dispose();
         try
         {
             using (var reader = new AudioFileReader(_writer.Filename))
             {
                 using (var write = new LameMP3FileWriter(@"D:\MP3\gg.mp3", reader.WaveFormat, 128))
                 {
                     reader.CopyTo(write);
                     write.Flush();
                 }
                 reader.Flush();
             }
         }
         catch (Exception ev)
         {
             MessageBox.Show(ev.Message);
         }
     }
 }
		/// <summary>
		/// Write the stored audio data as a WAVE file.
		/// </summary>
		public void SaveAsWav(string filePath)
		{
			// Make sure we have data.
			if (String.IsNullOrEmpty(_tempfile))
			{
				_cbWritten = 0;
				return;
			}
			if (!File.Exists(_tempfile))
			{
				_tempfile = null;
				_cbWritten = 0;
				return;
			}
			if (_cbWritten == 0)
			{
				File.Delete(_tempfile);
				_tempfile = null;
				return;
			}
			FileInfo fi = new FileInfo(_tempfile);
			Debug.Assert(fi.Length == _cbWritten);
			WaveFileWriter writer = new WaveFileWriter(filePath);
			writer.WriteFileHeader((int)fi.Length);
			WaveFormatChunk format = new WaveFormatChunk();
			format.chunkId = "fmt ";
			format.chunkSize = 16;				// size of the struct in bytes - 8
			format.audioFormat = WAV_FMT_PCM;
			format.channelCount = _channelCount;
			format.sampleRate = _sampleRate;
			format.byteRate = (uint)(_sampleRate * _channelCount * _bitsPerFrame / 8);
			format.blockAlign = (ushort)(_channelCount * _bitsPerFrame / 8);
			format.bitsPerSample = _bitsPerFrame;
			writer.WriteFormatChunk(format);
			writer.WriteDataHeader((int)fi.Length);
			byte[] data = File.ReadAllBytes(_tempfile);
			Debug.Assert(data.Length == _cbWritten);
			writer.WriteData(data);
			writer.Close();
			// Clean up the temporary data from the recording process.
			File.Delete(_tempfile);
			_tempfile = null;
			_cbWritten = 0;
		}