Cách sử dụng ACRCloud trong NodeJS

Một phần của tài liệu Wanotube – nền tảng chia sẻ video trực tuyến (khóa luận tốt nghiệp) (Trang 38 - 41)

Chương 2 CƠ SỞ LÝ THUYẾT

2.1. Công nghệ nhận diện âm thanh

2.1.1. Cách sử dụng ACRCloud trong NodeJS

Như đã đề cập ở trên, nhóm sử dụng nền tảng ACR Cloud, một cơ sở dữ liệu lưu trữ rất nhiều bản nhạc trên toàn thế giới. để nhận diện các đoạn video upload lên có bao gồm các đoạn nhạc đã có sẵn hay chưa.

Để tiến hành nhận diện đoạn âm thanh, ta sẽ tiến hành tạo project mới trên ACR Cloud, đồng thời sẽ chọn bucket để bucket source để nhận diện. Ở đây sẽ sử dụng ACR Cloud Bucket là bucket có sẵn của ACR Cloud.

Hình 2.5: Tạo project trong ACRCloud

Sau khi tạo project xong ta sẽ nhận được Host, Secret Key và Access Key, những thứ này sẽ được sử dụng khi config trong app như hình dưới đây.

const defaultOptions = {

host: ACRCLOUD_HOST, endpoint: '/v1/identify', signature_version: '1', data_type: 'audio',

12

secure: true,

access_key: ACRCLOUD_ACCESS_KEY, access_secret: ACRCLOUD_SECRET_KEY

};

Tiếp theo ta sẽ tiến hành tạo signature để có thể truy cập vào bucket

function buildStringToSign(method, uri, accessKey, dataType, signatureVersion, timestamp) {

return [method, uri, accessKey, dataType, signatureVersion, timestamp].join('\n');

}

function sign(signString, accessSecret) {

return crypto.createHmac('sha1', accessSecret) .update(Buffer.from(signString, 'utf-8')) .digest().toString('base64');

}

Như vậy là ta đã configure xong, để có thể nhận diện một đoạn nhạc ta sẽ sử dụng một API:

POST https://identify-eu-west-1.acrcloud.com/v1/identify

function identify(data, options, cb) {

const current_data = new Date();

const timestamp = current_data.getTime() / 1000;

const stringToSign = buildStringToSign('POST', options.endpoint,

13

options.data_type,

options.signature_version,

timestamp);

const signature = sign(stringToSign, options.access_secret);

const formData = { sample: data, access_key: options.access_key, data_type: options.data_type, signature_version: options.signature_version, sample_bytes: data.length, signature, timestamp, } request.post({

url: "http://" + options.host + options.endpoint, method: 'POST',

formData: formData

}, cb); }

Một số status code thường gặp: 0: Nhận diện thành cơng

1001: Khơng tìm thấy kết quả nhận diện 2005: Time out

3006: Tham số không hợp lệ …

14

Đối với status code 0, ACR Cloud đã nhận diện ra đoạn nhạc của chúng ta bị trùng lặp với một đoạn nhạc đã lưu trữ trong cơ sở dữ liệu, ta sẽ tiến hành lưu thông tin vi phạm. Sau khi thông báo người dùng, ta sẽ tiến hành tăng số strike hoặc block user (tùy số strike hiện có của người upload). Nếu status code là 1001, đoạn nhạc vừa upload khơng được tìm thấy có sự trùng lặp với trong cơ sở dữ liệu, hệ thống sẽ cho phép upload bình thường. Đối với các status code khác, hệ thống sẽ tiến hành báo lỗi cho người dùng.

Một phần của tài liệu Wanotube – nền tảng chia sẻ video trực tuyến (khóa luận tốt nghiệp) (Trang 38 - 41)

Tải bản đầy đủ (PDF)

(165 trang)