Czy istnieje sposób, w języku C# na .NET, do przetwarzania dźwięku "w locie"? Na przykład, jeśli chcę ocenić średnią intensywność dźwięku AT w momencie nagrywania (do tego będę potrzebował ostatnich kilku milisekund).Przetwarzanie dźwięku "w locie" (C#, WP7)
11
A
Odpowiedz
17
Inicjacja mikrofonu oraz rejestrowane przetwarzania dźwięków:
private void Initialize()
{
Microphone microphone = Microphone.Default;
// 100 ms is a minimum buffer duration
microphone.BufferDuration = TimeSpan.FromMilliseconds(100);
DispatcherTimer updateTimer = new DispatcherTimer()
{
Interval = TimeSpan.FromMilliseconds(0.1)
};
updateTimer.Tick += (s, e) =>
{
FrameworkDispatcher.Update();
};
updateTimer.Start();
byte[] microphoneSignal = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
microphone.BufferReady += (s, e) =>
{
int microphoneDataSize = microphone.GetData(microphoneSignal);
double amplitude = GetSignalAmplitude(microphoneSignal);
// do your stuff with amplitude here
};
microphone.Start();
}
Amplituda całkowitego sygnału. Można znaleźć średnie nie we wszystkich tablicy bajtów, ale w mniejszych okien, aby uzyskać krzywą Amplituda:
private double GetSignalAmplitude(byte[] signal)
{
int BytesInSample = 2;
int signalSize = signal.Length/BytesInSample;
double Sum = 0.0;
for (int i = 0; i < signalSize; i++)
{
int sample = Math.Abs(BitConverter.ToInt16(signal, i * BytesInSample));
Sum += sample;
}
double amplitude = Sum/signalSize;
return amplitude;
}
inne rzeczy do generowania dźwięków on-the-fly to możliwe pomóc w przyszłości:
DynamicSoundEffectInstance generatedSound = new DynamicSoundEffectInstance(SampleRate, AudioChannels.Mono);
generatedSound.SubmitBuffer(buffer);
private void Int16ToTwoBytes(byte[] output, Int16 value, int offset)
{
output[offset + 1] = (byte)(value >> 8);
output[offset] = (byte)(value & 0x00FF);
}
Powiązane problemy
- 1. WebRTC - wyłącz wszystkie przetwarzanie dźwięku
- 2. Odtwarzanie dźwięku w .Net/C#
- 3. Przetwarzanie pliku w C++
- 4. Przetwarzanie tekstu w C
- 5. C# 4.0, Metody w locie?
- 6. Przechwytywanie dźwięku Wyjście w C#
- 7. Równoległe przetwarzanie terminali C++
- 8. C: Przekazywanie tablicy do funkcji "w locie"
- 9. Niepożądane preprocesorowe wstępne przetwarzanie C
- 10. WP7 Zakup w aplikacji
- 11. Jak odtwarzać dźwięki załadowane w locie
- 12. Tworzenie metody w locie
- 13. Konwertuj na typ w locie w języku C# .NET
- 14. Lista wszystkich funkcji/symboli w locie w C?
- 15. Odczytywanie i przetwarzanie danych pliku WAV w języku C/C++
- 16. Transponowanie SASS w locie z SystemJS
- 17. Algorytm AI gry w locie?
- 18. HttpWebRequest Limit czasu w WP7
- 19. Zmienić stronę w aplikacji WP7?
- 20. Jak zmienić VisualState w WP7
- 21. Deserializowanie JSON w pakiecie WP7
- 22. Wykryj DesignTime w kodzie WP7
- 23. Przetwarzanie CSV
- 24. Napisz plik "w locie" do klienta za pomocą C#
- 25. Czy C++ 11 oferuje lepszy sposób łączenia łańcuchów w locie?
- 26. implementacja stylu czatu WP7
- 27. WP7 HttpWebRequest bez buforowania
- 28. WP7 sposób oceny utworu
- 29. Nagrywanie dźwięku w przeglądarce
- 30. Nagrywanie dźwięku w Xamarin.forms
http : //msdn.microsoft.com/en-us/library/dd231917.aspx http://www.un4seen.com/ – vulkanino
oh. Streaming Audio, tak to się nazywa. – nicks
również chciałbym wiedzieć, czy istnieje sposób, aby rzeczywiście PRACOWAĆ z dźwiękiem, mieć dostęp do poszczególnych próbek. czy jest tam API? – nicks