2012-01-02 61 views
12

Tôi đang sử dụng API âm thanh web HTML5 để phân tích bài hát và tạo điểm đánh dấu khi tần số âm thanh trung bình giảm xuống dưới một giá trị nhất định. Sử dụng cơ sở hạ tầng AudioNode hiện có, tôi đã quản lý để làm điều này nhưng âm thanh chỉ được phân tích và chỉ khi bài hát được phát.Trích xuất tần suất bài hát của tệp mp3 bằng API âm thanh web HTML5

Điều tôi muốn, là phân tích bài hát trước, vì vậy tôi có thể trích xuất các điểm đánh dấu im lặng và chuyển chúng thành các nút CUE mà người dùng có thể sử dụng để di chuyển trong toàn bộ bài hát.

Rõ ràng, nó sẽ rất chậm để dựa vào chơi toàn bộ bài hát lúc đầu, để phân tích nó, đặc biệt là, nếu bài hát là một cái gì đó giống như một podcast 50 phút. Tôi đã thử tăng tốc độ phát lại lên 10x, nhưng điều đó không giúp ích gì.

Tôi cho rằng giải pháp nằm trong bỏ qua API âm thanh trên web và phân tích ArrayBuffer thô, tuy nhiên, tôi thực sự không biết bắt đầu từ đâu.

Đề xuất? Ý tưởng?

Trả lời

5

tôi đã có thể tìm thấy một slide trong một bài thuyết trình trong đó mô tả chính xác này: here

sử dụng bình thường của API là để xử lý âm thanh trong thời gian thực. Thay vào đó, chúng tôi có thể xử lý trước âm thanh thông qua toàn bộ hệ thống và nhận kết quả:

Vấn đề duy nhất là sự hiểu biết của tôi về API âm thanh quá đơn giản để xem 'lừa' là gì từ mẫu mã:

var sampleRate = 44100.0; 
var length = 20; // seconds 
var ctx = new webkitAudioContext(2, sampleRate * length, sampleRate); 
ctx.oncomplete = function(e) { 
    var resultAudioBuffer = e.renderedBuffer; 
    ... 
}; 

function convolveAudio(audioBuffer, audioBuffer2) { 
    var source = ctx.createBufferSource(); 
    var convolver = ctx.createConvolver(); 
    source.buffer = audioBuffer; 
    convolver.buffer = audioBuffer2; 

    // source -> convolver -> destination. 
    source.connect(convolver); 
    convolver.connect(ctx.destination); 

    source.noteOn(0); 
    ctx.startRendering(); 
} 

Nhưng tôi nghĩ sẽ tốt hơn nếu ít nhất chia sẻ điều này hơn là để nó hoàn toàn, ngay cả khi đây không phải là câu trả lời tôi hy vọng đưa ra.

+1

Thật ngạc nhiên khi bạn học được bao nhiêu trong ba năm, chỉ có một câu trả lời về câu trả lời này và đọc qua nó bây giờ có vẻ như trò chơi của trẻ :). –

-2

Sự chập chững ở trên là mô tả biến đổi nhiễu, điều này sẽ chuyển âm thanh của bạn từ cường độ theo thời gian sang cường độ trên tần số. Tôi đề nghị chuyển đổi fooger javascript googling. Tùy thuộc vào những gì bạn đang tìm kiếm, tôi đã thấy một số liên kết hữu ích về chủ đề này.

Các vấn đề liên quan