Exemple #1
0
        private void StreamFile(string path, CancellationToken token)
        {
            var audioSource = new AudioSourceCollection(new IAudioSource[] {
                new WavFileAudioSource(path, true),
                new WavSilenceAudioSource(2000),
            });

            int  audioChunkSizeInMs    = 100;
            var  handle                = new AutoResetEvent(true);
            long audioChunkSizeInTicks = TimeSpan.TicksPerMillisecond * (long)(audioChunkSizeInMs);
            long tnext = DateTime.Now.Ticks + audioChunkSizeInMs;
            int  wait  = audioChunkSizeInMs;

            foreach (var chunk in audioSource.Emit(audioChunkSizeInMs))
            {
                if (token.IsCancellationRequested)
                {
                    return;
                }
                // Send chunk to speech translation service
                this.OnAudioDataAvailable(chunk);
                // Send chunk to local audio player via the mixer
                playerAudioInputWaveProvider.AddSamples(chunk.Array, chunk.Offset, chunk.Count);

                handle.WaitOne(wait);
                tnext = tnext + audioChunkSizeInTicks;
                wait  = (int)((tnext - DateTime.Now.Ticks) / TimeSpan.TicksPerMillisecond);
                if (wait < 0)
                {
                    wait = 0;
                }
            }
        }
Exemple #2
0
        private async Task <int> StreamFile(string path, CancellationToken token, int initChunks)
        {
            var wavFile = new WavFileAudioSource(path);
            await wavFile.LoadFile();

            var audioSource = new AudioSourceCollection(new IAudioSource[] {
                wavFile,
                new WavSilenceAudioSource(2000),
            });

            var  handle = new AutoResetEvent(true);
            int  wait   = AudioChunkSizeInMs;
            long audioChunkSizeInTicks = TimeSpan.TicksPerMillisecond * (long)(AudioChunkSizeInMs);
            long tnext      = DateTime.Now.Ticks + AudioChunkSizeInMs;
            int  chunksSent = initChunks;

            foreach (var chunk in audioSource.Emit(AudioChunkSizeInMs))
            {
                if (token.IsCancellationRequested)
                {
                    return(chunksSent);
                }

                // Send chunk to speech translation service
                this.OnAudioDataAvailable(chunk);
                ++chunksSent;
                handle.WaitOne(wait);
                tnext = tnext + audioChunkSizeInTicks;
                wait  = (int)((tnext - DateTime.Now.Ticks) / TimeSpan.TicksPerMillisecond);
                if (wait < 0)
                {
                    wait = 0;
                }
            }
            return(chunksSent);
        }
 private void Awake()
 {
     current_bowstring_count = start_bowstring_count;
     shoot_arrow_audio       = GetComponent <AudioSource>();
     audio_source_collection = GetComponent <AudioSourceCollection>();
 }
Exemple #4
0
 public AudioPlayer()
 {
     Shuffle = false;
     Playlist = new AudioSourceCollection();
     AudioSource.MediaEnded += new EventHandler(AudioSource_MediaEnded);
 }