¿Hay alguna manera, en un C#, en .NET, para procesar el audio "en marcha"? Por ejemplo, si quiero evaluar la intensidad promedio del audio AT en el momento de la grabación (para eso, necesitaré tener un par de milisegundos).Procesamiento de audio "en marcha" (C#, WP7)
11
A
Respuesta
17
inicialización de un micrófono, y grabado de procesamiento de sonidos:
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();
}
amplitud de la señal global. Puede encontrar las medias no en todo el conjunto de bytes, pero en ventanas más pequeñas para obtener la curva de amplitud:
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;
}
Otras cosas para generar sonidos en la marcha que es posible que ayuda en el futuro:
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);
}
Cuestiones relacionadas
- 1. Cómo escribir aplicaciones de procesamiento de audio en C++?
- 2. MediaElement interrumpir Audio Podcast (MediaPlayer) en WP7
- 3. WP7 Selector de archivos de audio/video
- 4. Procesamiento de audio en tiempo real en Android
- 5. Procesamiento de audio - Reconocimiento de tono
- 6. ¿Cualquier biblioteca C/C++ de tipo OpenCV para procesamiento de audio?
- 7. ¿Por dónde empezar a aprender sobre el procesamiento de audio?
- 8. Procesamiento UTF8 en C
- 9. Procesamiento de audio: Reproducción con nivel de volumen
- 10. Reproducción de audio en .Net/C#
- 11. Cadenas mutables en WP7 C#/XNA?
- 12. marcha atrás diccionario utilizando LINQ en C#
- 13. Bibliotecas de procesamiento de imágenes en C#
- 14. C# Yaml Procesamiento
- 15. C principiante: procesamiento de cadenas
- 16. procesamiento de señal: C++ vs C#
- 17. C# Audio Library
- 18. biblioteca de audio para C#
- 19. Procesamiento de datos de audio usando transformadas de Fourier en Java
- 20. C# 4.0, ¿Métodos sobre la marcha?
- 21. ¿Cómo emular el efecto Scratch de vinilo en el procesamiento de audio?
- 22. Librería de compresión sobre la marcha en C para transmisión
- 23. Enum.GetValues en WP7
- 24. HttpWebRequest Timeout en WP7
- 25. CameraCaptureTask en WP7
- 26. Deserialización de JSON en WP7
- 27. WP7 Shoutcast con MediaStreamSource
- 28. Biblioteca C++ para procesamiento de señales
- 29. C++ procesamiento de cadenas (estilo pitón)
- 30. Procesamiento complejo de eventos con C#
http : //msdn.microsoft.com/en-us/library/dd231917.aspx http://www.un4seen.com/ – vulkanino
oh. Streaming Audio, así se llama. – nicks
también, me gustaría saber, si hay una forma de REALMENTE TRABAJAR con audio, tener acceso a muestras individuales. ¿hay una API para eso? – nicks