Có cách nào, trong C#, trên .NET, để xử lý âm thanh "on-fly" không? Ví dụ, nếu tôi muốn đánh giá cường độ trung bình của âm thanh tại thời điểm ghi âm (cho rằng, tôi sẽ cần phải có vài mili giây cuối cùng).Xử lý âm thanh "on-fly" (C#, WP7)
11
A
Trả lời
17
khởi của một micro, và xử lý âm thanh ghi:
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();
}
Biên độ của tín hiệu tổng thể. Bạn có thể tìm thấy trung bình không phải trong mọi mảng byte, nhưng trong cửa sổ nhỏ để có được đường cong biên độ:
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;
}
thứ khác để tạo ra âm thanh on-the-fly mà có thể giúp đỡ bạn trong tương lai:
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);
}
Các vấn đề liên quan
- 1. Xử lý âm thanh C++
- 2. Xử lý âm thanh - Nhận dạng âm
- 3. Xử lý âm thanh: Chơi với mức âm lượng
- 4. Bất kỳ thư viện C/C++ giống như OpenCV nào để xử lý Âm thanh?
- 5. Xử lý gián đoạn với Hàng đợi âm thanh
- 6. Xử lý âm thanh theo thời gian thực trong Android
- 7. OpenAL Real Time Xử lý âm thanh từ Microphone
- 8. Lập trình 'Nghe' với Âm thanh (Xử lý Tín hiệu?)
- 9. Làm thế nào để viết các ứng dụng xử lý âm thanh C++?
- 10. Hợp âm âm thanh trong C#?
- 11. Âm thanh máy trong C#
- 12. Xử lý thanh toán Django
- 13. Nơi để bắt đầu tìm hiểu về xử lý âm thanh?
- 14. Âm thanh âm thanh định tuyến iPhone
- 15. Xử lý thanh toán qua PayPal "thanh toán đang chờ xử lý" với IPN
- 16. Ghi Âm thanh Đầu ra Trong C#
- 17. Xử lý Dữ liệu Âm thanh bằng Biến đổi Fourier trong Java
- 18. Sử dụng nhiều bộ xử lý âm thanh IO bằng giọng nói trong iOS
- 19. s3 không bao giờ kết thúc yêu cầu âm thanh đang chờ xử lý
- 20. Xử lý âm thanh AVFayer bằng AVTAayer's MTAudioProcessingTap với các URL từ xa
- 21. Dự án mã nguồn mở tốt nhất để xử lý tín hiệu âm thanh?
- 22. Nhận mảng byte âm thanh với API âm thanh HTML5?
- 23. Tắt âm thanh mặc định khi hiển thị MessageBox trong WP7
- 24. c chương trình phát tệp âm thanh
- 25. Hình ảnh hóa âm thanh C#
- 26. Cách tạo âm thanh từ đầu C#
- 27. Khung tổng hợp âm thanh trong C/C++/Objective-C?
- 28. Đệm luồng âm thanh
- 29. Âm thanh trên iPhone
- 30. Phát âm thanh và âm thanh thuật toán
http : //msdn.microsoft.com/en-us/library/dd231917.aspx http://www.un4seen.com/ – vulkanino
oh. Streaming Audio, đó là những gì nó được gọi. – nicks
cũng có, tôi muốn biết, nếu có một cách để thực sự LÀM VIỆC với âm thanh, có quyền truy cập vào các mẫu riêng lẻ. có API cho điều đó không? – nicks