5 điểm bởi GN⁺ 2024-01-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Nhắm tới bài toán Zero-shot TTS hoạt động chỉ với một đoạn âm thanh tham chiếu ngắn để sao chép âm sắc của người nói và khiến họ nói bằng nhiều ngôn ngữ, không cần huấn luyện bổ sung theo từng người nói
  • Điểm cốt lõi là kiến trúc tách riêng sao chép âm sắc với điều khiển ngôn ngữ và phong cách; base speaker TTS tạo cảm xúc, ngữ điệu, nhịp điệu, khoảng ngắt và intonation, còn tone color converter áp âm sắc của người nói tham chiếu vào
  • Có thể sao chép zero-shot cross-lingual ngay cả khi không có dữ liệu huấn luyện đa người nói quy mô lớn cho ngôn ngữ mới; quá trình huấn luyện dùng 30K câu cho base TTS và 20K người nói cùng 300K mẫu âm thanh cho converter
  • Toàn bộ bản triển khai dùng kiến trúc feed-forward không có thành phần tự hồi quy hay diffusion; bản tối ưu đạt hiệu năng thời gian thực 12× trên một GPU A10G và mất 85ms để tạo 1 giây âm thanh
  • Mã nguồn và trọng số mô hình đã được công bố; OpenVoice đã được cung cấp như công cụ giọng nói của MyShell.ai cho hơn 2 triệu người dùng trên toàn cầu, và phiên bản nội bộ đã được sử dụng hàng chục triệu lần từ tháng 5 đến tháng 10 năm 2023

Bài toán sao chép giọng nói tức thời mà OpenVoice nhắm tới

  • Sao chép giọng nói tức thời (IVC) là TTS sao chép giọng của một người nói cụ thể chỉ từ một đoạn âm thanh tham chiếu ngắn, còn được gọi là Zero-shot TTS vì hoạt động mà không cần huấn luyện bổ sung theo từng người nói
  • Ứng dụng trải rộng từ sản xuất nội dung truyền thông, chatbot cá nhân hóa đến tương tác đa phương thức giữa con người và máy tính hoặc các mô hình ngôn ngữ lớn
  • Các phương pháp trước đây đều có những hạn chế riêng về tốc độ, khả năng điều khiển và khả năng mở rộng ngôn ngữ
    • Các phương pháp tự hồi quy như VALLE, XTTS sao chép âm sắc bằng cách điều kiện hóa theo acoustic token hoặc speaker embedding của giọng tham chiếu, nhưng khó thao tác linh hoạt các yếu tố phong cách như cảm xúc, ngữ điệu, nhịp điệu, khoảng ngắt và intonation
    • Các phương pháp phi tự hồi quy như YourTTS, Voicebox có tốc độ suy luận nhanh nhưng không thể điều khiển linh hoạt các tham số phong cách ngoài âm sắc
    • Các hệ thống sao chép giọng nói cross-lingual trước đây thường cần bộ dữ liệu MSML với nhiều người nói cho từng ngôn ngữ, khiến việc thêm ngôn ngữ mới trở nên khó khăn
  • OpenVoice xử lý đồng thời ba mục tiêu
    • Sao chép âm sắc của người nói tham chiếu đồng thời điều khiển riêng cảm xúc, ngữ điệu, nhịp điệu, khoảng ngắt và intonation
    • Thực hiện sao chép cross-lingual ngay cả với ngôn ngữ tham chiếu hoặc ngôn ngữ sinh không có trong dữ liệu huấn luyện MSML
    • Cung cấp suy luận thời gian thực nhanh trong môi trường thương mại quy mô lớn mà không giảm chất lượng

Kiến trúc tách riêng âm sắc và phong cách

  • Ý tưởng cốt lõi của OpenVoice là không bắt một mô hình lớn duy nhất phải học đồng thời âm sắc, ngôn ngữ và phong cách, mà chia bài toán thành các tác vụ con dễ hơn
  • base speaker TTS model phụ trách ngôn ngữ và phong cách
    • Có thể dùng mô hình TTS một người nói hoặc nhiều người nói
    • VITS có thể được sửa để đưa embedding phong cách và ngôn ngữ vào text encoder và duration predictor
    • InstructTTS có thể nhận style prompt
    • Các mô hình thương mại như Microsoft TTS cũng có thể dùng để chỉ định cảm xúc, khoảng ngắt và cách phát âm qua SSML
    • Con người cũng có thể trực tiếp đọc văn bản theo ngôn ngữ và phong cách mong muốn để tạo base voice
    • Trong bản triển khai công khai, VITS được dùng mặc định
  • tone color converter chuyển giọng base speaker sang âm sắc của người nói tham chiếu
    • encoder là mạng nơ-ron tích chập 1D nhận đầu vào là phổ short-time Fourier transformed của giọng base speaker
    • tone color extractor là mạng nơ-ron tích chập 2D trích xuất một vector đơn chứa thông tin âm sắc từ mel-spectrogram
    • normalizing flow tạo ra biểu diễn loại bỏ thông tin âm sắc khỏi giọng base nhưng vẫn giữ lại ngôn ngữ và phong cách
    • Biểu diễn này được căn chỉnh theo trục thời gian với feature dựa trên IPA
    • inverse flow điều kiện hóa theo vector âm sắc của người nói tham chiếu để áp âm sắc mới vào feature map
    • HiFi-GAN tạo raw waveform cuối cùng
  • Toàn bộ mô hình công khai hoạt động theo kiểu feed-forward không có thành phần tự hồi quy
  • Cách trích xuất unit dựa trên HuBERT gặp vấn đề là loại bỏ không chỉ thông tin âm sắc mà còn cả cảm xúc và ngữ điệu
  • Những cách khác tạo nút thắt thông tin để chỉ giữ lại nội dung giọng nói lại không thể loại bỏ hoàn toàn âm sắc
  • Điểm mới của OpenVoice không nằm ở việc phát minh từng submodule riêng lẻ mà ở framework tách riêng điều khiển phong cách/ngôn ngữ khỏi sao chép âm sắc

Dữ liệu huấn luyện và mục tiêu huấn luyện

  • Huấn luyện base speaker TTS dùng dữ liệu của 4 người nói
    • 1 người nói tiếng Anh Mỹ, 1 người nói tiếng Anh Anh, 1 người nói tiếng Trung, 1 người nói tiếng Nhật
    • Tổng cộng 30K câu, độ dài trung bình mỗi câu là 7 giây
    • Dữ liệu tiếng Anh và tiếng Trung có nhãn phân loại cảm xúc
  • VITS đã chỉnh sửa đưa emotion categorical embedding, language categorical embedding và speaker id vào text encoder, duration predictor và flow layer
  • Mô hình base đã huấn luyện có thể thay đổi ngữ điệu và ngôn ngữ bằng cách đổi base speaker, đồng thời đọc cùng một văn bản với các cảm xúc khác nhau
  • Trong các thí nghiệm bổ sung dữ liệu huấn luyện, nhịp điệu, khoảng ngắt và intonation cũng có thể được học theo cách tương tự như cảm xúc
  • Huấn luyện tone color converter dùng 20K người nói với 300K mẫu âm thanh
    • khoảng 180K mẫu tiếng Anh
    • khoảng 60K mẫu tiếng Trung
    • khoảng 60K mẫu tiếng Nhật
    • Bộ dữ liệu này được gọi là bộ dữ liệu MSML
  • Mục tiêu huấn luyện của converter có hai phần
    • dùng mel-spectrogram loss và HiFi-GAN loss để encoder-decoder tạo ra âm thanh tự nhiên
    • huấn luyện flow layer để loại bỏ tối đa thông tin âm sắc khỏi audio feature
  • Việc huấn luyện loại bỏ âm sắc chuyển văn bản thành chuỗi IPA phoneme, sau đó tạo text content feature bằng learnable embedding và transformer encoder, căn chỉnh với audio feature bằng dynamic time warping rồi tối thiểu hóa KL-divergence
  • flow layer được thiết kế không nhận điều kiện phong cách hay ngôn ngữ để tránh loại bỏ những thông tin ngoài âm sắc
  • Vì flow layer có cấu trúc khả nghịch, khi chạy quá trình ngược với điều kiện là thông tin âm sắc mới, hệ thống có thể đưa lại âm sắc của người nói tham chiếu vào cùng nội dung và phong cách ban đầu

Kết quả thử nghiệm và các hạn chế được quan sát

  • Việc đánh giá sao chép giọng nói khó so sánh bằng số liệu khách quan vì mỗi nghiên cứu dùng tập huấn luyện, tập kiểm thử và điều kiện đánh giá Mean Opinion Score khác nhau
  • Đánh giá của OpenVoice tập trung nhiều hơn vào phân tích định tính nội bộ và cung cấp mẫu âm thanh công khai hơn là so sánh số liệu trực tiếp với các phương pháp trước
  • Tập kiểm thử sao chép âm sắc gồm các người nói tham chiếu là người nổi tiếng, nhân vật game và cá nhân ẩn danh
    • Bao gồm cả những giọng đặc biệt giàu biểu cảm lẫn các mẫu trung tính trong phân bố giọng người
    • Với 4 base speaker và nhiều tổ hợp người nói tham chiếu, hệ thống sao chép âm sắc tham chiếu và tạo giọng ở nhiều ngôn ngữ và ngữ điệu khác nhau
  • Đánh giá điều khiển phong cách tạo một corpus 1K mẫu đa phong cách bằng base speaker model và Microsoft TTS SSML rồi chuyển sang âm sắc tham chiếu
    • Cảm xúc, ngữ điệu, nhịp điệu, khoảng ngắt và intonation được giữ khá tốt
    • Trong các trường hợp hiếm, cảm xúc bị trung tính hóa nhẹ
    • Vấn đề này có thể được giảm bằng cách thay vector tone color embedding của một câu cụ thể bằng vector trung bình lấy từ nhiều câu với cảm xúc khác nhau của cùng base speaker
  • Sao chép cross-lingual hoạt động gần như near zero-shot với các ngôn ngữ không có trong bộ dữ liệu MSML
    • Ngay cả khi ngôn ngữ của người nói tham chiếu không có trong bộ dữ liệu MSML, hệ thống vẫn có thể sao chép âm sắc của họ
    • Ngay cả khi ngôn ngữ cần sinh không có trong bộ dữ liệu MSML, nếu base speaker TTS hỗ trợ ngôn ngữ đó thì hệ thống vẫn có thể nói ngôn ngữ đó bằng âm sắc tham chiếu
    • Tuy vậy vẫn cần có base speaker cho ngôn ngữ tương ứng
  • Trong thử nghiệm tốc độ, OpenVoice đã tối ưu đạt hiệu năng thời gian thực 12× trên một GPU A10G, bao gồm cả base speaker model và tone converter
    • Mất 85ms để tạo 1 giây âm thanh
    • Phân tích mức sử dụng GPU cho thấy trần trên ước tính khoảng 40× thời gian thực, nhưng phần cải thiện này được để lại cho công việc tương lai
  • Việc dùng IPA rất quan trọng với chuyển đổi âm sắc cross-lingual
    • IPA là từ điển âm vị thống nhất liên ngôn ngữ, giúp flow layer tạo được biểu diễn trung lập theo ngôn ngữ
    • Trong các thử nghiệm với từ điển âm vị khác, hệ thống có xu hướng phát âm sai một số âm vị của ngôn ngữ chưa xuất hiện trong huấn luyện
    • Ngay cả khi âm thanh đầu vào chính xác, âm thanh đầu ra vẫn có thể gặp lỗi hoặc nghe như người không phải bản ngữ

Tài liệu công khai và tình hình sử dụng

  • OpenVoice đã công bố mã nguồn và các mô hình đã huấn luyện để phục vụ tái hiện nghiên cứu và nghiên cứu tiếp theo
  • Có thể xem kết quả định tính tại OpenVoice demo
  • Các demo chi tiết được chia thành các nhóm sau
  • Trước khi công bố, phiên bản nội bộ đã được người dùng toàn cầu sử dụng hàng chục triệu lần từ tháng 5 đến tháng 10 năm 2023
  • Tại MyShell.ai, OpenVoice được dùng làm backend sao chép giọng nói tức thời và nền tảng này đã ghi nhận mức tăng người dùng lên hàng trăm lần
  • Hiện tại, OpenVoice đang được cung cấp như công cụ giọng nói của MyShell.ai cho hơn 2 triệu người dùng trên toàn cầu

1 bình luận

 
GN⁺ 2024-01-02
Các ý kiến trên Hacker News
  • Việc các tác giả làm cho nó dễ thử ngay là điểm tốt, nhưng nó không thật sự phù hợp cho mục đích nhân bản giọng nói thông thường
    Tôi cho nó đọc đoạn đầu Wikipedia về một cuốn sách rồi tạo câu tiếp theo, nhưng nghe bằng tai thì rõ ràng là âm thanh do máy tính tạo ra
    Mẫu âm thanh: https://storage.googleapis.com/dalle-party/sample.mp3
    Giọng nhân bản (chuyển đổi mp3): https://storage.googleapis.com/dalle-party/output_en_default...
    Tôi chỉ cài gói bằng pip, đưa mẫu âm thanh vào và chạy demo_part1.ipynb; trên laptop 3070 Ti / 8GB thì gần như xong ngay lập tức

    • README cũng ghi rằng đây là một bản triển khai mã nguồn mở xấp xỉ hiệu năng của công nghệ nhân bản giọng nói nội bộ, còn phiên bản online của myshell.ai tốt hơn về chất lượng âm thanh, độ giống khi nhân bản, độ tự nhiên của lời nói và hiệu quả tính toán
    • Cảm ơn vì ví dụ thực tế; tai tôi nghe cũng thấy khá giống âm thanh được tạo ra
      Tôi tò mò không biết nếu đưa vào nhiều dữ liệu giọng gốc hơn thì sẽ cải thiện đến mức nào
    • Nhìn vào website và các ví dụ thì có vẻ khá rõ là nó được cấu hình để tạo giọng anime được cách điệu hóa
    • Theo kinh nghiệm dùng các công cụ khác như xtts, để có kết quả tốt nhất thì thật sự cần mẫu giọng chất lượng phòng thu
  • Tôi tò mò liệu có thể dùng cái này, hoặc Eleven Labs, để tạo mô hình giọng nói cắm vào TTS trên điện thoại Android không
    Tôi có một người bạn bị liệt thanh quản, thường giao tiếp bằng cách nhập chữ trên điện thoại hoặc laptop nhỏ
    Nếu có thể lấy giọng của bạn ấy từ các bản ghi cũ và trả lại phần nào giọng nói “của chính mình” thì chắc bạn ấy sẽ rất vui

    • Bạn có thể xem các giải pháp như Acapela [0], SpeakUnique [1], VOCALiD [2]
      Tuy nhiên tôi không chắc có giải pháp cho Android hay không
      Gần đây tôi có xem một video về giọng nói tùy chỉnh mà Google tạo cho bệnh nhân ALS, nhưng không tìm lại được trên mạng
      Trên Android hiện chưa có tạo giọng nói tùy chỉnh, nhưng iOS 17 mới nhất hỗ trợ tạo giọng nói cá nhân hóa
      ModelTalker [3] có vẻ là một dự án nghiên cứu dài hạn về tạo giọng nói tùy chỉnh cho người bị rối loạn ngôn ngữ, và TTS dường như hỗ trợ Android, nên có thể là một lựa chọn khác
      [0] https://www.acapela-group.com/
      [1] https://www.speakunique.co.uk/
      [2] https://vocalid.ai/
      [3] https://www.modeltalker.org/
    • Đáng tiếc là hiện giờ chưa được
      Tôi từng đóng góp cho TTS ở Google và cũng từng làm phía Android; iOS thì có sẵn tính năng này
      Không có giám đốc sản phẩm nào ở Google mạnh bằng “thứ Apple vừa tung ra”, nên đó có thể lại là tín hiệu đáng hy vọng
      Hiện tôi đang làm suy luận on-device đa nền tảng, có thể tham khảo FONNX trên GitHub; đây là một trong 100 việc sẽ còn vương trong đầu tôi một thời gian, nên khi có thời gian tôi sẽ thử liên hệ
      Chỉnh sửa: một ứng dụng Android có bàn phím và nút “nói”, gọi API Eleven Labs, liệu đã đủ để đáng thử chưa?
  • GitHub: https://github.com/myshell-ai/OpenVoice
    Checkpoint: hxxps://myshell-public-repo-hosting.s3.amazonaws.com/checkpoints_1226.zip
    Tôi thấy không yên tâm với các liên kết trỏ thẳng tới file zip được host trên Amazon, nên đã vô hiệu hóa liên kết checkpoint
    Tôi cũng chưa kiểm tra bên trong file có gì

  • Tôi thích bài báo này
    Đọc lên có cảm giác như “chúng tôi đã làm như thế này, và muốn giúp người khác cũng làm được”
    Đặc biệt phần “Remark on Novelty” rất hay: họ nói OpenVoice không cố phát minh các tiểu mô-đun trong kiến trúc mô hình, mà đóng góp là framework tách việc điều khiển phong cách giọng nói và ngôn ngữ khỏi việc nhân bản âm sắc
    Họ không cố thổi phồng đóng góp của mình

  • Ví dụ: https://research.myshell.ai/open-voice
    Trông khá ấn tượng

  • Giấy phép là Creative Commons Attribution-NonCommercial 4.0 International License, cấm sử dụng thương mại, và nói rằng MyShell có thể phát hiện âm thanh được tạo bằng OpenVoice dù có watermark hay không
    Vậy thì nó không phải “open”, và cũng không thể kiếm tiền bằng nó, đúng không?

    • Nó vẫn là open, chỉ là khác với định nghĩa của bạn
      Bạn có thể xem code, dùng và sửa tùy ý, nên tôi cho là khá mở
    • Không kiếm tiền được
      Dĩ nhiên những kẻ lừa đảo không quan tâm đến giấy phép phi thương mại thì vẫn có thể
  • Không được quảng bá nhiều và cũng không rõ Apple có còn tiếp tục phát triển hay không, nhưng iOS có một tính năng sao chép giọng nói gọi là Personal Voice
    Mất khoảng 15 phút để huấn luyện bằng giọng của chính bạn, và mất vài giờ để xử lý on-device khi máy đang khóa
    Có thể dùng trong cuộc gọi điện thoại và FaceTime, còn có dùng được ở nơi khác hay không thì không rõ
    Sẽ tốt nếu cũng dùng được cho TTS thông thường

    • Đây là một tính năng trợ năng dành cho những người đang mất giọng hoặc có nguy cơ mất giọng
      Cách nói rằng có thể dùng trong cuộc gọi điện thoại hay FaceTime khiến nghe như chuyển đổi giọng nói sang giọng nói, nhưng thực tế chỉ dành cho TTS
      Vì không phải chuyển đổi giọng nói sang giọng nói, nên nó không giữ được các tín hiệu khiến giọng nghe như giọng thật, chẳng hạn đặc điểm nói lắp hay ngữ điệu
  • Vài ngày trước tôi gọi cho một trong các ngân hàng thương mại lớn ở Anh, và họ vẫn còn khuyên tôi đăng ký chương trình ngớ ngẩn “giọng nói của tôi là mật khẩu của tôi
    Ở giai đoạn AI đã tiến đến mức này, việc đó cảm giác thật cẩu thả

    • Fidelity Investments đã làm một việc còn tệ hơn khoảng một tuần trước
      Họ bảo tôi trả lời vài câu hỏi, rồi thông báo rằng tôi vừa được đăng ký vào chương trình nhận dạng giọng nói
      Giờ việc hủy nó lại trở thành thêm một mục trong danh sách việc cần làm
      Tôi tự hỏi có phải công ty nào cũng thăng chức những người ngu ngốc nhất lên vị trí quản lý không
    • Có phải Investec không? Có lẽ tôi cũng nên gọi để tắt nó đi
  • Ý nghĩ đầu tiên của tôi, và đến giờ vẫn vậy, là các cách dùng vô đạo đức và phạm tội của sao chép giọng nói có lẽ sẽ nhiều hơn rất nhiều so với các cách dùng hợp pháp

    • Điều đầu tiên nghĩ đến là tính ẩn danh
      Bạn có thể làm video YouTube mà không dùng giọng thật của mình, trong khi vẫn giữ được ngữ điệu và nhấn nhá cá nhân mà giọng TTS AI không làm được
      Hoặc cũng có thể dùng trong phát triển game indie
      Học diễn xuất lồng tiếng cơ bản để giảm sự gượng gạo, rồi tự diễn tất cả nhân vật bằng nhiều giọng khác nhau
    • Tôi tò mò không biết bạn đã cân nhắc những trường hợp sử dụng hợp pháp nào, và cân nhắc đến mức nào
    • Nếu việc sử dụng thương mại trở nên nhiều hơn sử dụng bất hợp pháp thì sao?
      YouTube sẽ cho phép mọi người nghe các ngôn ngữ đã được bản địa hóa bằng giọng của tác giả gốc
    • Không đồng ý
      Chúng ta đơn giản là không nên chấp nhận giọng nói làm phương tiện xác thực
      Cách dùng phổ biến nhất có lẽ sẽ là tạo nghệ thuật và nội dung bằng chương trình mà không cần diễn viên lồng tiếng
      Khi hoàn thiện được pipeline video hoặc mô hình 3D cùng chuyển đổi theo từng khung hình để làm cho nó trông chân thực, rất có thể diễn viên cũng gần như không còn cần thiết
    • Chỉ cần nói trước với những người thân yêu và thống nhất một mật khẩu bí mật để dùng trong tình huống kiểu như bị kẹt trong trường hợp khẩn cấp và cần chuyển tiền
      Một số ngân hàng dùng xác thực giọng nói khi gọi điện, và bạn phải yêu cầu trực tiếp thì mới có thể rút khỏi chương trình