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; } } }
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>(); }
public AudioPlayer() { Shuffle = false; Playlist = new AudioSourceCollection(); AudioSource.MediaEnded += new EventHandler(AudioSource_MediaEnded); }