Lolaby — Những bài hát ru được hỗ trợ bởi AI

Các bài hát ru được tạo ra bằng trí tuệ nhân tạo

  • 9 min read
Lolaby — Những bài hát ru được hỗ trợ bởi AI
Các bài hát ru được tạo ra bằng trí tuệ nhân tạo

Lolaby — Những bài hát ru vận hành bởi AI

Việc dỗ một đứa trẻ ngủ say là cuộc chiến hằng ngày đối với các bậc cha mẹ và bất kỳ ai chăm sóc trẻ nhỏ.

Em gái của bạn đời tôi là một giáo viên mầm non. Mỗi ngày đến giờ ngủ trưa, cô ấy có 15 đứa trẻ 4 tuổi nằm trên những chiếc chiếu nhỏ. Kể từ khi lớp bắt đầu học về âm nhạc và các nhạc cụ, mọi thứ luôn bắt đầu theo cùng một cách: “Cô hát cho con một bài đi.” Cô ấy rất muốn tặng mỗi đứa trẻ một bài hát riêng, xoay quanh bất cứ điều gì chúng yêu thích trong tuần đó: một con cáo nhồi bông, một chú chó con mới, hay một cầu vồng. Nhưng cô ấy chỉ có một mình, không được đào tạo về âm nhạc, và chỉ có 30 phút để dỗ 15 đứa trẻ đi ngủ.

Lolaby chính là công cụ giải quyết vấn đề đó. Đứa trẻ cho Lola thấy những gì chúng yêu thích bằng cách vẽ nguệch ngoạc trên màn hình hoặc đưa một bức vẽ trên giấy để chụp ảnh lại. Giáo viên nhập tên của đứa trẻ. Một AI nhỏ chạy ngay trên thiết bị sẽ nhìn vào bức vẽ, viết một bài hát ru về nó và hát lại cho đứa trẻ nghe.

Mọi thứ đều chạy cục bộ (locally). Không cần LLM đám mây, không tốn chi phí API cho mỗi bài hát, và dữ liệu của trẻ không bao giờ rời khỏi thiết bị.

Hãy làm quen với Lola, ca sĩ hát ru riêng cho giờ đi ngủ của bạn.

Xem bản demo ↓

Trải nghiệm tại đây: Lolaby trên Hugging Face.

Lolaby làm được những gì?

Bạn cung cấp cho công cụ:

  • Tên của đứa trẻ.
  • Tuổi.
  • Điều chúng yêu thích (vẽ hoặc nhập văn bản).
  • Điều chúng sợ hãi.
  • Và một tâm trạng chủ đạo.

AI sẽ viết một bài hát ru và hát lại trên nền nhạc không lời gốc.

Một ví dụ về dữ liệu đầu vào: Mia, 3 tuổi · Yêu: chú voi nhồi bông Pip · Sợ: bóng tối · Tâm trạng: buồn ngủ và cần được an ủi

Kết quả đầu ra không chỉ là những câu chúc “ngủ ngon” sáo rỗng. Bài hát sẽ nhắc trực tiếp đến Pip. Bóng tối trở thành một điều gì đó nhẹ nhàng thay vì đe dọa. Lời bài hát được xây dựng dựa trên sự trấn an thay vì sự phô trương.

Bài hát ru đầu tiên khiến chúng tôi cảm thấy thực sự “chạm” là khi mô hình biến chú voi nhồi bông thành một nhân vật hoạt động trong bài hát: “Pip canh gác bên giường con đêm nay…”

Đó là khoảnh khắc nó không còn giống như một hệ thống hoàn thành câu lệnh (prompt-completion) mà bắt đầu giống như một sự tương tác trong giờ đi ngủ.

Khi chúng tôi cho giáo viên mầm non (người truyền cảm hứng cho dự án) xem bản mẫu, cô ấy đã bật cười khi nghe đến giữa bài hát — bởi vì việc nghe thấy tên món đồ chơi của đứa trẻ được nhắc lại khiến bài hát có cảm xúc cụ thể hơn bất kỳ ứng dụng hát ru đóng gói sẵn nào mà cô từng thấy. Phản ứng đó đã trở thành mục tiêu phát triển của sản phẩm.

Cách thức hoạt động

Quy trình bắt đầu từ một bức vẽ và kết thúc bằng một bài hát.

Hình vẽ: Đứa trẻ vẽ trên màn hình hoặc giáo viên chụp ảnh bức vẽ trên giấy, được đọc bởi mô hình MiniCPM-V 4.6 1.3B chạy cục bộ. Nếu không có hình vẽ, Lolaby sẽ tự động sử dụng trường “Chúng yêu thích điều gì?”. Tuy nhiên, hình vẽ làm cho bài hát trở nên cá nhân hóa hơn — đứa trẻ nhìn thấy con cáo hay quả bóng của chính mình biến thành một bài hát.

Lời bài hát: Một mô hình Llama 3.2 3B đã được tinh chỉnh (fine-tuned) sẽ đọc mô tả hình vẽ (nếu có) và chi tiết về đứa trẻ, sau đó tạo ra lời bài hát ru theo định dạng có cấu trúc bao gồm nhịp độ, tiến trình hợp âm và các đánh dấu hợp âm trực tiếp. Lời bài hát được hiển thị dưới dạng luồng (stream) khi đang được viết, giúp giáo viên có thể bắt đầu đọc to trước khi khổ thơ cuối cùng hoàn thành.

Âm nhạc: Mọi nhạc cụ đều được tổng hợp từ đầu bằng DSP (xử lý tín hiệu số) tùy chỉnh — không sử dụng mẫu thu sẵn và không dùng thư viện MIDI. Guitar, piano, mộc cầm (xylophone), đàn harp và ocarina đều được tạo ra trong thời gian thực. Mục tiêu không phải là sự chân thực mà là “sự an ủi không gây kích thích”: âm thanh bắt đầu nhẹ nhàng, tan dần chậm, và hồ sơ hài âm giữ được độ ấm trên loa laptop.

Giọng hát: Kokoro TTS chạy cục bộ và đọc lời bài hát với giọng điệu bình tĩnh, khiêm tốn — giống như đang được đọc khẽ cho nghe hơn là một buổi biểu diễn. Âm thanh giờ đi ngủ nên làm dịu năng lượng chứ không phải tăng thêm.

Toàn bộ hệ thống chạy trên CPU. Không GPU, không đám mây, không có sự cố trễ (latency) bất ngờ giữa lúc trẻ đang ngủ.

Về phần hình vẽ

Hình vẽ là trái tim cảm xúc của Lolaby, vì vậy việc xử lý đúng là rất quan trọng.

Chúng tôi sử dụng MiniCPM-V 4.6, một mô hình ngôn ngữ-thị giác 1.3B từ OpenBMB, để chuyển đổi hình vẽ thành một mô tả văn bản ngắn. Với 1.3B tham số, nó đủ nhỏ để chạy trên CPU cùng với các thành phần khác.

Câu lệnh (prompt) chúng tôi gửi đi được thiết kế rất hẹp: mô tả những gì bạn thấy bằng những thuật ngữ đơn giản, như thể đang giải thích một bức vẽ của trẻ em cho một người không nhìn thấy nó. Hình vẽ của trẻ em thường thô sơ. Một hình người gạch sẽ trở thành “một người nhỏ”. Một hình vuông loạng choạng với hình tam giác trên đỉnh trở thành “một ngôi nhà”. Mức độ diễn giải này là phù hợp, vì đó chính xác là những gì cha mẹ làm khi con đưa cho họ một bức vẽ. Mô hình không cần xác định một nhân vật cụ thể, nó cần tìm thấy sự ấm áp trong hình khối.

Nếu mô hình thị giác không thể tải vì bất kỳ lý do gì, ứng dụng sẽ chuyển sang bộ phân tích màu sắc và nét vẽ NumPy nhẹ hơn để đảm bảo bài hát vẫn được tạo ra.

Về phần lời bài hát

Mô hình Llama 3.2 3B cơ bản viết bài hát khá tốt nhưng không ổn định trong việc viết theo định dạng mà máy có thể đọc được với cấu trúc nhất quán và nội dung cảm xúc phù hợp. Vì vậy, chúng tôi đã tinh chỉnh nó trên một tập dữ liệu tổng hợp gồm 1.500 bài hát ru được chắt lọc từ Claude Haiku 4.5.

Tập dữ liệu được xây dựng với các rào cản chống rập khuôn (anti-boilerplate) nghiêm ngặt. Mỗi câu lệnh lấy mẫu một chủ đề phụ cụ thể thay vì một danh mục mơ hồ — ví dụ: “một con cáo nhồi bông được đặt tên theo một màu sắc” thay vì “vật an ủi” — để mô hình không mặc định dùng những câu sáo rỗng. Chúng tôi loại bỏ các câu trùng lặp quá nhiều và giới hạn mỗi danh mục không vượt quá 16% tập dữ liệu.

Kết quả là đạt được 99,4% sự độc nhất về câu từ trên tổng số 12.001 dòng lời bài hát. Việc huấn luyện sử dụng LoRA rank 16 trên Colab T4 trong ba epoch, mất khoảng 45 phút.

Điều chúng tôi học được: việc định hình tập dữ liệu quan trọng hơn kích thước mô hình. Mô hình không trở nên thông minh hơn, mà trở nên kỷ luật hơn về mặt phong cách.

Về phần âm nhạc

Việc tạo ra lời bài hát là một vấn đề, nhưng làm cho các nhạc cụ tổng hợp nghe có vẻ đáng tin về mặt cảm xúc mà không dùng mẫu sẵn trong thời gian thực lại là vấn đề khác.

Vì vậy, chúng tôi bắt đầu phân tích phổ (spectral analysis) của các bản ghi nhạc cụ thực. Quy trình cho mỗi bộ tổng hợp âm thanh là:

  1. Tìm một bản ghi tham chiếu sạch.
  2. Cô lập một nốt kéo dài.
  3. Đo FFT (Biến đổi Fourier nhanh) của nó.
  4. Trích xuất sự cân bằng hài âm và độ suy giảm.
  5. Tái tạo các đặc tính đó bằng mã code.

Mỗi nhạc cụ đều có một thách thức riêng. Mộc cầm gần như là sóng sin thuần túy. Bàn phím nghe như đàn organ cho đến khi chúng tôi sửa lại việc triệt tiêu hài âm. Những chi tiết phổ nhỏ bé đó là sự khác biệt giữa âm thanh tổng hợp khô khan và âm thanh ấm áp.

Về phần giọng hát

Lớp cuối cùng là thứ đứa trẻ thực sự nghe thấy.

Chúng tôi sử dụng Kokoro 82M cho chuyển văn bản thành giọng nói (TTS), một mô hình siêu nhẹ không gây trễ cho quy trình chạy trên CPU. Lời bài hát đi vào, file WAV đi ra, hoàn toàn trên thiết bị.

Lựa chọn giọng nói là có chủ đích. Đầu ra của Kokoro bình tĩnh và khiêm tốn. Điều này quan trọng hơn vẻ ngoài vì một bài hát ru không phải là một buổi biểu diễn. Sự biểu cảm quá mức, dải động rộng hay những khoảng dừng kịch tính đều đi ngược lại mục tiêu. Âm thanh giờ đi ngủ nên giảm kích thích, và một giọng nói nghe như đang thư giãn sẽ hữu ích hơn một giọng nói nghe ấn tượng.

Những điều chúng tôi đã học được

Luồng dữ liệu (Streaming) thay đổi sự tương tác. Việc lời bài hát xuất hiện từng từ một có nghĩa là giáo viên có thể bắt đầu hát trước khi quá trình tạo kết thúc. Đó là sự khác biệt giữa một công cụ phù hợp với giờ ngủ trưa và một công cụ làm gián đoạn nó.

Ưu tiên cục bộ (Local-first) định hình mọi thứ. Ràng buộc ngoại tuyến buộc kiến trúc phải nhất quán. Một mô hình phản hồi trong 30 giây trên laptop là hữu ích trong lớp học. Một mô hình đám mây cần WiFi ổn định thì không.

Sự cụ thể đánh bại quy mô. Những khoảnh khắc hiệu quả nhất về mặt cảm xúc luôn là những điều nhỏ bé — món đồ chơi của đứa trẻ trở thành một nhân vật, nỗi sợ của chúng được gọi tên và giải quyết một cách nhẹ nhàng. Điều đó đến từ việc chọn lọc tập dữ liệu, không phải từ kích thước mô hình.

Recommended for You

36 Câu lệnh, Một Thành phố Vô tận

36 Câu lệnh, Một Thành phố Vô tận

Khám phá một thành phố vô tận thông qua 36 câu lệnh

Phân tích hiệu năng CUDA trong PyTorch (Phần 2)- Từ nn.Linear đến Fused MLP

Phân tích hiệu năng CUDA trong PyTorch (Phần 2)- Từ nn.Linear đến Fused MLP

Hướng dẫn phân tích hiệu năng CUDA trong PyTorch, chuyển đổi từ nn.Linear sang Fused MLP