Có ai biết cách lấy biên độ trung bình của tệp .wav bằng C# (ngay cả khi nó có nghĩa là gọi chương trình dòng lệnh ngoài và phân tích cú pháp đầu ra)? Cảm ơn!Biên độ trung bình của một .wav trong C#
Trả lời
Đây là một snip đọc trong phần âm thanh nổi và đặt dữ liệu vào hai mảng. Đó là chưa được kiểm tra bởi vì tôi đã phải loại bỏ một số mã (chuyển sang mono và tính toán một đường trung bình)
/// <summary>
/// Read in wav file and put into Left and right array
/// </summary>
/// <param name="fileName"></param>
private void ReadWavfiles(string fileName)
{
byte[] fa = File.ReadAllBytes(fileName);
int startByte = 0;
// look for data header
{
var x = 0;
while (x < fa.Length)
{
if (fa[x] == 'd' && fa[x + 1] == 'a' &&
fa[x + 2] == 't' && fa[x + 3] == 'a')
{
startByte = x + 8;
break;
}
x++;
}
}
// Split out channels from sample
var sLeft = new short[fa.Length/4];
var sRight = new short[fa.Length/4];
{
var x = 0;
var length = fa.Length;
for (int s = startByte; s < length; s = s + 4)
{
sLeft[x] = (short)(fa[s + 1] * 0x100 + fa[s]);
sRight[x] = (short)(fa[s + 3] * 0x100 + fa[s + 2]);
x++;
}
}
// do somthing with the wav data in sLeft and sRight
}
Nếu tệp wav là mono, tôi có thể chỉ nhận xét ra sRight [x] = (ngắn) (fa [s + 3] * 0x100 + fa [s + 2]) hay không; dòng và thay đổi s = s + 4 đến s = s +2? Tôi không quen với định dạng wav. Cảm ơn! – BarrettJ
Không phải tôi, nhưng tôi nghĩ bạn có thể bỏ qua sRight. – Nifle
Thực hiện các thay đổi mà tôi đã liệt kê ở trên và tuyên bố sLeft là "var sLeft = new short [fa.Length/2];" thực sự làm việc cho các tệp đơn. – BarrettJ
Thông thường, phương pháp root-mean-squared được sử dụng để tính toán biên độ "trung bình" của tín hiệu sin (x).
Thư viện cho các âm thanh .NET như đặt cược tốt nhất của bạn. Nó cho phép truy cập vào dạng sóng của một tệp âm thanh, có thể lặp lại để tính giá trị của ampltiude trung bình.
- 1. Tính trung bình trong C#
- 2. Cách lấy trung bình trong C++?
- 3. Tính trung bình di chuyển trong C++
- 4. trung bình của các bộ
- 5. Bộ lọc nhanh trung bình trong C++
- 6. Đánh giá độ lệch tuyệt đối trung bình của một tập hợp các số trong Oracle
- 7. Tính trung bình trong Ruby
- 8. Mức trung bình của một số trong truy vấn Mysql
- 9. Làm cách nào để xác định mức độ lớn của một tệp WAV?
- 10. Làm cách nào để có được trung bình (trung bình) của các cột được chọn
- 11. Thuật toán OpenMp C++ cho tối thiểu, tối đa, trung bình, trung bình
- 12. Sắp xếp boxplot bởi trung bình (và không phải trung bình) trong R
- 13. Mảng đơn giản (di chuyển trung bình) trong C#
- 14. Hiểu "trung bình của trung vị" thuật toán
- 15. thay đổi độ dày đường trung bình geom_boxplot()
- 16. Chức năng trung bình trong Thư viện Toán C?
- 17. Python: Tìm trung bình của một danh sách lồng nhau
- 18. Độ trễ trung bình từ các lần nhấn phím
- 19. SQLAlchemy subquery - trung bình của khoản tiền
- 20. Tìm giá trị trung bình của một mảng?
- 21. NHibernate 2.1.2 với độ tin cậy trung bình
- 22. Trung bình trên một số() trong cùng một truy vấn
- 23. Làm cách nào để xác định độ dài của tệp .wav trong C#?
- 24. LINQ - tính nhiều điểm trung bình trong một truy vấn
- 25. trung bình của hai góc với bọc xung quanh
- 26. Tính trung bình di chuyển trong F #
- 27. Tính trung bình hàng ngày trong R
- 28. trung bình mỗi 16 cột trong r
- 29. Trung bình khoảng thời gian của dữ liệu 1D
- 30. Tính trung bình di chuyển theo hàm mũ trên một hàng đợi trong C#
Quên đề cập đến rằng .wav là mono, nếu điều đó làm cho tình hình bất kỳ dễ dàng hơn/khác nhau. – BarrettJ