Chuyển đến nội dung chính

Cách chạy SAM Audio trên máy cục bộ

Tìm hiểu cách chạy mô hình SAM Audio phiên bản base trên máy cục bộ và trải nghiệm tách âm thanh hiện đại bằng cách tách giọng và âm thanh với các lời nhắc đơn giản, trực quan trên GPU RTX 3090.
· 10 phút đọc

Khám phá cùng AI

Bạn có thể đã quen với việc phân đoạn ảnh và video, nhưng phân đoạn âm thanh lại là một ý tưởng ít được khám phá hơn. Khái niệm này đề cập đến khả năng tách và cô lập các âm thanh trong một luồng âm thanh, chẳng hạn như tách giọng nói khỏi nhạc nền hoặc cô lập giọng nói của một người duy nhất trong một cuộc họp nhóm. Cho đến gần đây, các tác vụ này yêu cầu công cụ chuyên biệt cho từng nhiệm vụ và khá nhiều công sức thủ công.

Trong hướng dẫn này, chúng ta sẽ khám phá SAM Audio, phần mở rộng âm thanh của Segment Anything Model. Chúng ta sẽ thiết lập môi trường cục bộ, cài đặt các phụ thuộc cần thiết, tải mô hình và chạy suy luận trên GPU RTX 3090. 

Trong quá trình thực hiện, chúng ta sẽ trực quan hóa cách SAM Audio có thể phân đoạn chính xác các phần cụ thể của tín hiệu âm thanh theo cách trực quan và chính xác hơn nhiều so với các phương pháp xử lý âm thanh truyền thống.

SAM Audio là gì?

SAM Audio là mô hình đa phương thức hợp nhất đầu tiên thuộc loại này, được thiết kế để giúp việc tách âm thanh trở nên trực quan như chính cách chúng ta tương tác với âm thanh. Lấy cảm hứng từ thành công của Segment Anything Model trong thị giác máy tính, SAM Audio cho phép người dùng cô lập bất kỳ âm thanh nào từ các hỗn hợp âm thanh phức tạp bằng lời nhắc tự nhiên, dù là qua văn bản, gợi ý trực quan trong video, hay bằng cách đánh dấu khoảng thời gian. Cách tiếp cận hợp nhất này thay thế các công cụ âm thanh rời rạc, đơn nhiệm bằng một hệ thống duy nhất hoạt động ổn định trên giọng nói, âm nhạc và các âm thanh chung, ngay cả trong những bối cảnh đời thực, ngoài hiện trường.

Sam-audio pipeline

Nguồn: facebookresearch/sam-audio

Cốt lõi của SAM Audio là Perception Encoder Audiovisual (PE-AV), một động cơ mạnh mẽ căn chỉnh những gì nhìn thấy được với những gì nghe được bằng cách mã hóa đồng thời tín hiệu âm thanh và hình ảnh theo thời gian. 

Dựa trên Perception Encoder mã nguồn mở của Meta, PE-AV cung cấp các biểu diễn giàu thông tin và chính xác theo thời gian, cho phép đạt hiệu năng tối tân trong tách âm thanh đa phương thức. 

Kết hợp lại, SAM Audio và PE-AV mở ra những khả năng mới cho sáng tạo nội dung đa phương tiện, khả năng tiếp cận và hiểu biết âm thanh, giúp phân đoạn âm thanh cấp độ chuyên nghiệp trở nên nhanh hơn, dễ tiếp cận hơn và dễ kiểm soát hơn bao giờ hết.

Hướng dẫn SAM Audio 

Bây giờ tôi sẽ hướng dẫn bạn cách bắt đầu và chạy SAM Audio trên máy cục bộ. 

1. Thiết lập môi trường

SAM Audio là một mô hình có kiểm soát truy cập (gated), nghĩa là bạn phải yêu cầu quyền truy cập trước khi có thể tải xuống và sử dụng cục bộ. Bắt đầu bằng cách truy cập trang mô hình trên Hugging Face tại facebook/sam-audio-large và hoàn tất biểu mẫu yêu cầu quyền truy cập. Việc phê duyệt thường mất khoảng 10 phút, nhưng trong một số trường hợp có thể bị từ chối tùy theo vị trí hoặc các chính sách khác do Meta áp dụng.

Accessing the gated Sam-Audio model

Nguồn: facebook/sam-audio-large · Hugging Face

Khi đã được cấp quyền, hãy khởi chạy Jupyter Notebook cục bộ và cài đặt thư viện SAM Audio trực tiếp từ kho chính thức:

!pip install -q git+https://github.com/facebookresearch/sam-audio.git

Một vấn đề phổ biến khi làm việc với SAM Audio là kernel của Jupyter bị sập hoặc khởi động lại bất ngờ. Thường là do phiên bản torchcodec không tương thích. Để khắc phục, hãy gỡ bản hiện tại và cài đặt rõ ràng phiên bản khuyến nghị:

!pip uninstall -y torchcodec
!pip install --no-cache-dir "torchcodec==0.7.0" -f https://download.pytorch.org/whl/torchcodec/

Để tải mô hình và phụ thuộc nhanh hơn, chúng ta sẽ dùng hf_transfer: 

!pip install hf_transfer

Cuối cùng, đăng nhập vào Hugging Face Hub bằng access token. Hãy chắc rằng bạn đã tạo một API token từ tài khoản Hugging Face và lưu vào biến môi trường (HF_TOKEN):

import os
from huggingface_hub import login

login(token=os.environ["HF_TOKEN"])

2. Tải mô hình SAM Audio (FP16 trên CUDA)

Ở bước này, chúng ta sẽ tải xuống và nạp mô hình SAM Audio phiên bản base. Dù SAM Audio cũng có biến thể large, bản base cho chất lượng tách gần như tương đương trong khi nhẹ hơn đáng kể về bộ nhớ GPU. 

Điều này khiến nó phù hợp hơn nhiều để thử nghiệm cục bộ, đặc biệt trên các GPU phổ thông như RTX 3090.

Để tránh lỗi tràn bộ nhớ (OOM), điều quan trọng là nạp mô hình ở FP16 (độ chính xác nửa) thay vì FP32. 

RTX 3090 hỗ trợ FP16 rất tốt, và chuyển sang độ chính xác nửa sẽ gần như giảm một nửa mức sử dụng VRAM mà không ảnh hưởng đáng kể đến chất lượng suy luận.

import torch
import torchaudio
from pathlib import Path

from sam_audio import SAMAudio, SAMAudioProcessor

MODEL_ID = "facebook/sam-audio-base"  # base model
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

model = SAMAudio.from_pretrained(MODEL_ID).eval()

# Use fp16 on GPU to cut VRAM roughly in half (3090 supports fp16 well)
model = model.to(device=device, dtype=torch.float16).eval()

processor = SAMAudioProcessor.from_pretrained(MODEL_ID)

print("Device:", device)
print("Sampling rate:", processor.audio_sampling_rate)

Lần chạy đầu tiên có thể mất thời gian tải xuống. SAM Audio sẽ tải nhiều thành phần và checkpoint cấu thành toàn bộ pipeline phân đoạn âm thanh, bao gồm perception encoder và các module tách sinh (generative separation). Đây là hành vi bình thường và chỉ xảy ra một lần, vì các tệp sẽ được lưu đệm cục bộ cho các lần chạy sau.

Downloading all the necessary files for the SAM-Audio pipeline

Sau khi nạp mô hình, nên kiểm tra mức sử dụng bộ nhớ GPU để đảm bảo mọi thứ nằm trong giới hạn:

!nvidia-smi

Bạn sẽ thấy rằng mô hình SAM Audio phiên bản base dùng khoảng 14 GB VRAM, vừa vặn trên RTX 3090. Điều này để lại đủ khoảng trống cho suy luận và thử nghiệm mà không kích hoạt vấn đề bộ nhớ, giúp thiết lập ổn định và tin cậy cho các tác vụ phân đoạn âm thanh cục bộ.

SAM-Audio base model only takes 13GB VRAM on half precision.

3. Tải một mẫu âm thanh ví dụ từ AudioCaps

Để thử SAM Audio, chúng ta cần một mẫu âm thanh thực tế chứa nhiều nguồn âm chồng lấn. Trong hướng dẫn này, chúng ta sẽ dùng một ví dụ từ AudioCaps, một bộ dữ liệu chuẩn được dùng rộng rãi cho hiểu biết và chú thích âm thanh. 

AudioCaps chứa các đoạn âm thanh ngắn, đa dạng được thu thập từ môi trường thực, rất phù hợp để đánh giá các mô hình tách âm thanh.

Chúng ta tải bộ dữ liệu trực tiếp từ Hugging Face bằng thư viện datasets. Mẫu âm thanh được lưu ở định dạng Parquet và bao gồm cả dữ liệu dạng sóng lẫn siêu dữ liệu như tần số lấy mẫu.

from datasets import load_dataset
from IPython.display import Audio

# Get an example audio from AudioCaps
dset = load_dataset(
    "parquet",
    data_files="hf://datasets/OpenSound/AudioCaps/data/test-00000-of-00041.parquet",
)

samples = dset["train"][8]["audio"].get_all_samples()
Audio(samples.data, rate=samples.sample_rate)

Đoạn mã này tải xuống một shard của tập kiểm thử AudioCaps và trích xuất một đoạn âm thanh để minh họa. Tiện ích Audio cho phép bạn nghe trực tiếp hỗn hợp thô ngay trong notebook, rất hữu ích để hiểu độ phức tạp của âm thanh gốc trước khi phân đoạn. Âm thanh như sau:

4. Trực quan hóa bản nhạc âm thanh

Nghe là cách nhanh nhất để hiểu một hỗn hợp âm thanh, nhưng trực quan hóa dạng sóng giúp bạn thấy vị trí mọi thứ xảy ra. 

Biểu đồ dạng sóng giúp dễ nhận ra những khoảnh khắc năng lượng mạnh (như còi, vỗ tay, la hét), vùng yên ắng (tạm dừng hoặc tiếng ồn nền), và các đỉnh đột ngột thường tương ứng với sự kiện âm thanh ngắn. 

Điều này đặc biệt hữu ích khi bắt đầu tách âm, vì bạn có thể so sánh hỗn hợp gốc với đầu ra đã phân đoạn và nhanh chóng xác nhận SAM Audio đã trích xuất đúng vùng hay chưa.

Dưới đây là một hàm trợ giúp đơn giản để vẽ dạng sóng trong một khoảng thời lượng cố định (để biểu đồ dễ đọc). Hỗ trợ cả âm thanh mono và stereo, và tự động chuyển tensor về CPU để chạy mượt trong notebook.

import matplotlib.pyplot as plt
import torch

def plot_waveform(wav, sr, title="Waveform", max_seconds=15):
    """
    wav: Tensor [C, T] or [T]
    sr: sample rate (int)
    """
    if isinstance(wav, torch.Tensor):
        w = wav.detach().cpu()
    else:
        w = torch.tensor(wav)

    if w.ndim == 1:
        w = w.unsqueeze(0)

    # limit duration for readability
    max_samples = int(sr * max_seconds)
    w = w[:, :max_samples]

    t = torch.arange(w.shape[1]) / sr

    plt.figure(figsize=(14, 3))
    for c in range(w.shape[0]):
        plt.plot(t, w[c].numpy(), label=f"ch{c}")
    plt.title(title)
    plt.xlabel("Time (s)")
    plt.ylabel("Amplitude")
    if w.shape[0] > 1:
        plt.legend()
    plt.tight_layout()
    plt.show()
plot_waveform(samples.data, samples.sample_rate, title="Traffic noise + Horn")

Trong ví dụ này, bạn thường sẽ thấy một dạng sóng dày và bận rộn đại diện cho tiếng ồn nền liên tục (giao thông), và các đỉnh sắc nét thường trùng với các sự kiện ngắn, to (như tiếng còi). 

Audio wave form with background noise

5. Chuẩn bị âm thanh cho suy luận

Trước khi chạy SAM Audio, chúng ta cần đảm bảo dạng sóng đầu vào khớp với yêu cầu của mô hình. Trên thực tế, âm thanh thô từ các bộ dữ liệu có thể khác nhau về hình dạng, dtype, số kênh và tần số lấy mẫu. Nếu bỏ qua bước này, bạn sẽ thường gặp lỗi (sai kích thước), cho kết quả kém (sai tần số lấy mẫu), hoặc lãng phí bộ nhớ GPU (sai dtype).

Những nội dung cần chuẩn hóa:

  • Hình dạng: SAM Audio kỳ vọng âm thanh ở định dạng [C, T] (kênh trước).
  • Độ chính xác: Chuyển sang float32 trước để xử lý an toàn, rồi khớp dtype của mô hình (FP16 trên CUDA).
  • Tần số lấy mẫu: Lấy mẫu lại theo tần số yêu cầu của mô hình (từ processor).
  • Kênh: Chuyển về mono để đơn giản hóa tách âm và đảm bảo suy luận nhất quán.
  • Thiết bị + dtype: Chuyển dạng sóng sang GPU và cùng dtype với trọng số mô hình để tránh ép kiểu ngầm và tốn thêm bộ nhớ.
wav = torch.tensor(samples.data)

# Ensure [C, T]
if wav.ndim == 1:
    wav = wav.unsqueeze(0)  # [1, T]
elif wav.ndim == 2 and wav.shape[0] > wav.shape[1]:
    wav = wav.transpose(0, 1)  # [T, C] -> [C, T]

wav = wav.float()

orig_sr = int(samples.sample_rate)
target_sr = int(processor.audio_sampling_rate)

if orig_sr != target_sr:
    wav = torchaudio.functional.resample(wav, orig_sr, target_sr)

# Mono
wav = wav.mean(0, keepdim=True)  # [1, T]

# Move to device + match model dtype (FP16 on CUDA)
wav = wav.to(device=device, dtype=next(model.parameters()).dtype)

duration_s = wav.shape[-1] / target_sr
print(f"Resampled duration: {duration_s:.2f}s @ {target_sr} Hz")

Nếu mọi thứ được thiết lập đúng, bạn sẽ thấy đầu ra như sau:

Resampled duration: 10.00s @ 48000 Hz

Điều này xác nhận (1) độ dài âm thanh như mong đợi, và (2) dạng sóng hiện dùng tần số lấy mẫu ưa thích của mô hình.

6. Chạy tách âm bằng SAM Audio

Giờ đến phần thú vị: chúng ta sẽ thực sự tách một âm thanh mục tiêu khỏi hỗn hợp âm thanh gốc. SAM Audio cho phép bạn làm điều này bằng lời nhắc tự nhiên, và trong ví dụ này, chúng ta sẽ trích xuất “tiếng còi xe” từ một đoạn có tiếng ồn giao thông và các sự kiện còi xe.

Chúng ta sẽ dùng đồng thời hai kiểu hướng dẫn:

  • Lời nhắc văn bản (description): cho mô hình biết chúng ta muốn gì (“A horn honking”).
  • Mỏ neo theo khoảng (anchors): cho mô hình biết vị trí thời gian âm thanh mục tiêu xuất hiện (tính bằng giây).

Cách này giúp tách âm tin cậy hơn, đặc biệt khi hỗn hợp âm bận rộn hoặc âm mục tiêu rất ngắn.

Định dạng anchors như sau:

  • + nghĩa là bao gồm vùng thời gian này như bằng chứng dương của âm thanh mục tiêu
  • [6.3, 7.0] là cửa sổ thời gian (bắt đầu, kết thúc) tính theo giây
description = "A horn honking"
anchors = [[["+", 6.3, 7.0]]]  # batch -> one sample -> one anchor

# (Optional) sanity-check anchors
assert 0 <= anchors[0][0][1] < anchors[0][0][2] <= duration_s + 1e-6, "Anchor out of range!"
inputs = processor(
    audios=[wav],
    descriptions=[description],
    anchors=anchors,
).to(device)

with torch.inference_mode():
    result = model.separate(inputs)
target_np = result.target[0].detach().float().cpu().numpy()
resid_np = result.residual[0].detach().float().cpu().numpy()
Audio(target_np, rate=processor.audio_sampling_rate)

Khi chạy đúng, đầu ra thực sự ấn tượng: âm thanh mục tiêu sẽ giống như một track còi xe sạch với phần lớn tiếng nền đã bị loại bỏ. Đây là ý tưởng then chốt của SAM Audio: bạn không cần stem hoàn hảo hay chỉnh sửa thủ công, bạn chỉ cần hướng dẫn mô hình bằng lời nhắc trực quan và nó sẽ cô lập âm thanh cho bạn. Dưới đây là âm thanh sau khi tách:

Nghe là bằng chứng tốt nhất, nhưng dạng sóng giúp bạn dễ thấy điều gì đã xảy ra. 

plot_waveform(target_np, processor.audio_sampling_rate, title="Cleand Audio with only Horn")

Trong đầu ra đã tách, bạn thường sẽ thấy các đỉnh riêng biệt tại vị trí còi xe vang lên, trong khi phần còn lại của dạng sóng tương đối yên ắng.

cleaned audio waveform

SAM Audio cũng trả về một bản residual, về cơ bản là “phần còn lại của âm thanh” sau khi loại bỏ mục tiêu. 

plot_waveform(resid_np, processor.audio_sampling_rate, title="Residual Audio with no Horn")

Ở đây chúng ta chỉ thấy tiếng giao thông/tiếng ồn nền, không có tiếng còi. 

Residual audio waveform

7. Tải một mẫu khác từ bộ dữ liệu

Hãy thử một ví dụ khó và thực tế hơn. Lần này, chúng ta sẽ chọn một đoạn mà một người không nói tiếng Anh đang nói chuyện điện thoại trong bối cảnh tiếng ồn nền lớn (tiếng đường phố, âm thanh môi trường, âm chồng lấn). 

Đây chính xác là tình huống mà tách âm trở nên thực sự hữu ích: giọng nói có mặt, nhưng khó hiểu vì hỗn hợp bị lộn xộn.

Đầu tiên, tải một mẫu mới và nghe hỗn hợp âm thanh thô:

samples_2 = dset["train"][45]["audio"].get_all_samples()
Audio(samples_2.data, rate=samples_2.sample_rate)

Bây giờ hãy trực quan hóa dạng sóng. 

plot_waveform(samples_2.data, samples_2.sample_rate, title="Background Noise and a Man Talking")

Bạn sẽ thấy một tín hiệu dày, năng lượng cao trên hầu hết đoạn clip, thường cho thấy tiếng ồn nền mạnh và âm thanh chồng lấn:

Audio waveform visualization

Chúng ta sẽ chạy lại các bước tiền xử lý như trước: đảm bảo dạng [C, T], lấy mẫu lại theo tần số đích của processor, chuyển về mono, và chuyển lên GPU ở FP16.

# Convert numpy → torch
wav = torch.tensor(samples_2.data)

# Ensure [C, T]
if wav.ndim == 1:
    wav = wav.unsqueeze(0)
elif wav.ndim == 2 and wav.shape[0] > wav.shape[1]:
    wav = wav.transpose(0, 1)

wav = wav.float()

orig_sr = int(samples.sample_rate)
target_sr = int(processor.audio_sampling_rate)

# Resample if needed
if orig_sr != target_sr:
    wav = torchaudio.functional.resample(wav, orig_sr, target_sr)

# Mono
wav = wav.mean(0, keepdim=True)

# Move to GPU + FP16
wav = wav.to(device=device, dtype=next(model.parameters()).dtype)

duration_s = wav.shape[-1] / target_sr
print(f"Duration: {duration_s:.2f}s @ {target_sr} Hz")

Bạn sẽ thấy thông báo tương tự như:

Duration: 10.00s @ 48000 Hz

Trong ví dụ trước, chúng ta hỗ trợ mô hình bằng mỏ neo thời gian và lời nhắc văn bản. Ở đây, chúng ta sẽ chỉ dùng lời nhắc văn bản, một cách hay để kiểm tra khả năng tổng quát hóa của mô hình khi không có hướng dẫn bổ sung.

description = "A man speaking"

inputs = processor(
    audios=[wav],
    descriptions=[description],
).to(device)

with torch.inference_mode():
    result = model.separate(inputs)
target_np = result.target[0].detach().float().cpu().numpy()

plot_waveform(target_np, processor.audio_sampling_rate, title="Clean Audio with a Man Talking")

Cuối cùng, vẽ dạng sóng của giọng nói đã tách. So với hỗn hợp ban đầu, dạng sóng sẽ sạch hơn và ít “bận rộn” hơn, đặc biệt ở những vùng trước đó bị tiếng ồn nền lấn át:

Clean audio waveform

Nếu bạn gặp bất kỳ vấn đề nào khi chạy mã ở trên, vui lòng tham khảo notebook DataLab liên kết dưới đây để có tham chiếu hoàn chỉnh, hoạt động và hướng dẫn bổ sung: Sử dụng SAM-Audio cục bộ — DataLab.

Các trường hợp sử dụng SAM Audio

SAM Audio được thiết kế cho việc hiểu và biên tập âm thanh trong bối cảnh đời thực. Thay vì dựa vào các công cụ đơn nhiệm, nó dùng lời nhắc tự nhiên để tách và cô lập âm thanh trên giọng nói, âm nhạc và môi trường hằng ngày. 

Những tính năng này khiến nó hữu ích trong các quy trình sáng tạo, chuyên nghiệp và nghiên cứu, nơi âm thanh sạch và có thể kiểm soát là quan trọng.

  • Dọn dẹp podcast và bản ghi giọng nói: Cải thiện độ rõ ràng của giọng nói trong podcast, phỏng vấn và bản ghi bằng cách tách người nói khỏi tiếng ồn nền và âm thanh môi trường.
  • Sản xuất âm nhạc và tách stem: Cô lập giọng hát hoặc từng nhạc cụ khỏi bản phối để remix, sampling, mastering hoặc thiết kế âm thanh sáng tạo.
  • Hậu kỳ phim và video: Loại bỏ âm thanh nền không mong muốn như tiếng xe cộ, gió hoặc đám đông trong khi giữ nguyên đối thoại và hiệu ứng âm thanh quan trọng.
  • Khả năng tiếp cận và hỗ trợ thính giác: Tăng cường độ rõ ràng của lời nói trong môi trường ồn ào để hỗ trợ các công cụ trợ thính và ứng dụng tập trung vào khả năng tiếp cận và giao tiếp rõ ràng hơn.
  • Nghiên cứu âm thanh và phân tích âm: Phân đoạn các bản ghi âm phức tạp đời thực cho các tác vụ nghiên cứu như phát hiện sự kiện âm học, giám định âm thanh và phân tích cảnh âm thanh.

Lời kết

Thành thật mà nói, không có nhiều thông tin về cách thực sự chạy SAM Audio trên máy cục bộ. Tôi đã thử chạy trên Kaggle với GPU T4 và thất bại. Tôi cũng thử dùng UV và thiết lập môi trường Python ảo, nhưng cũng không thành công. 

Vấn đề chính tôi thường gặp là xung đột phụ thuộc. Cài đặt SAM Audio trực tiếp từ GitHub thường ghi đè các thư viện âm thanh và PyTorch hiện có, khiến kernel Jupyter bị sập. 

Đó là lý do tôi khuyến nghị mạnh mẽ bắt đầu từ một thiết lập sạch bằng Conda hoặc môi trường Python ảo mới, cài đặt PyTorch và CUDA trước, rồi mới thêm các thư viện cần thiết. Trong hướng dẫn này, thiết lập trở nên ổn định sau khi tôi khắc phục sự cố sập bằng cách cài lại đúng phiên bản torchcodec.

Trong hướng dẫn này, chúng ta đã chạy thành công mô hình SAM Audio phiên bản base trên RTX 3090 với khoảng 14 GB VRAM, con số rất hợp lý cho suy luận cục bộ. Tốc độ suy luận nhanh và chất lượng tách âm thực sự ấn tượng. Bạn cũng có thể mở rộng thiết lập này sang lời nhắc dựa trên video, nơi SAM Audio phối hợp với SAM 3 để cô lập âm thanh dựa trên gợi ý thị giác.

Để tìm hiểu thêm về SAM 3, tôi khuyến nghị bạn xem Hướng dẫn SAM 3 tiếp theo.

Câu hỏi thường gặp về SAM Audio

Yêu cầu phần cứng tối thiểu để chạy SAM Audio trên máy cục bộ là gì?

Để chạy mô hình SAM Audio Base một cách thoải mái, bạn cần GPU với tối thiểu 14–16 GB VRAM (chẳng hạn NVIDIA RTX 3090 hoặc 4080).

  • Khuyến nghị: Dùng chế độ FP16 (độ chính xác nửa) để giảm khoảng 50% mức sử dụng bộ nhớ.
  • Lưu ý: Biến thể Large nặng hơn đáng kể và thường cần GPU cấp trung tâm dữ liệu (như A100) hoặc nhiều GPU tiêu dùng để chạy ổn định.
SAM Audio có thể tải xuống và sử dụng ngay miễn phí không?

Mã nguồn là mã mở, nhưng trọng số mô hình được kiểm soát truy cập (gated). Bạn không thể đơn giản chạy mã mà không yêu cầu quyền truy cập trước.

  • Cách truy cập: Truy cập trang SAM Audio trên Hugging Face, chấp nhận thỏa thuận giấy phép và chờ phê duyệt (thường mất ~10–30 phút). Sau đó bạn phải đăng nhập qua terminal bằng Hugging Face API token của mình (huggingface-cli login).
SAM Audio thực sự có thể tách những loại âm thanh nào?

Không giống các mô hình trước đây chỉ chuyên cho giọng nói hoặc chỉ cho âm nhạc, SAM Audio là một bộ tách "phổ quát".

  • Có thể cô lập: Nhạc cụ cụ thể (trống, guitar), giọng nói con người (ngay cả trong đám đông ồn ào), và âm thanh môi trường (còi, còi báo động, chó sủa).
  • Sử dụng: Lời nhắc văn bản (ví dụ, "A man talking"), gợi ý trực quan (mặt nạ video) hoặc mỏ neo theo thời gian.
Tôi nên dùng mô hình Base hay Large?

Với hầu hết các thử nghiệm cục bộ và nhà phát triển cá nhân, mô hình Base là lựa chọn tốt nhất.

  • Base: Phù hợp với các GPU tiêu dùng cao cấp (RTX 3090/4090) và cho chất lượng tách ấn tượng, đủ dùng cho biên tập podcast hoặc tách stem cơ bản.
  • Large: Cho độ “sạch” nhỉnh hơn và ít tạo artifact hơn nhưng yêu cầu VRAM lớn hơn nhiều, khiến nó kém thực tế cho đa số thiết lập cục bộ nếu không lượng tử hóa hoặc có phần cứng khủng.
Abid Ali Awan

Tác giả

Abid Ali Awan

Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.

Chủ đề

Liên quan