Tôi muốn lập trình trình tổng hợp bộ phát âm của riêng mình như "Songify" nhưng tôi không thể tìm thấy một thuật toán đơn giản cho trình phát âm. Có lẽ bạn có thể giải thích hoặc cho biết nơi cần tìm thông tin về cách hoạt động của vocoder.
Tôi muốn lập trình trình tổng hợp bộ phát âm của riêng mình như "Songify" nhưng tôi không thể tìm thấy một thuật toán đơn giản cho trình phát âm. Có lẽ bạn có thể giải thích hoặc cho biết nơi cần tìm thông tin về cách hoạt động của vocoder.
Câu trả lời:
Tôi sợ rằng tất cả các câu trả lời ở đây không liên quan đến câu hỏi. Có gì được gọi là một Vocoder trong thế giới sản xuất âm nhạc có ít để làm với các vocoder giai đoạn sử dụng trong xử lý tín hiệu. Để làm cho vấn đề tồi tệ hơn, ứng dụng Songify được tham chiếu bởi bài đăng gốc không phải là một ví dụ về trình phát âm. Hãy để chúng tôi sắp xếp này ra!
1. Bộ phát âm pha
Bộ phát âm pha được tham chiếu bởi các câu trả lời khác là một kỹ thuật xử lý tín hiệu có thể được sử dụng để thực hiện sửa đổi tín hiệu theo thời gian / cường độ (kéo dài thời gian, thay đổi cường độ), bằng cách tính toán biểu diễn tần số thời gian của tín hiệu (Biến đổi Fourier ngắn hạn hoặc STFT) và sau đó chèn / loại bỏ các khung tín hiệu và sau đó duy trì sự gắn kết của thông tin pha. Mối quan hệ của nó với giọng nói chỉ mang tính lịch sử và hiện tại nó được sử dụng để thay đổi cường độ và kéo dài thời gian trong phần cứng / phần mềm âm thanh cấp thấp hơn. RubberBand là một ví dụ về thư viện thay đổi thời gian / cường độ C ++ mã nguồn mở dựa trên bộ phát âm pha.
2. Bộ giải mã
Khi những người trong lĩnh vực sản xuất âm nhạc tham khảo Bộ phát âm, họ đề cập đến một thiết bị trích xuất đường bao phổ của tín hiệu (thường là giọng nói, được gọi là bộ điều chế) và lọc một tín hiệu khác (thường là kết cấu tổng hợp phong phú, được gọi là sóng mang) với một bộ lọc có đáp ứng là đường bao quang phổ trích xuất. Để biết ví dụ về âm thanh thu được, hãy nghe 0h23 trong Kraftwerk Trans Europe Express hoặc Dự án The Raven của Alan Parsons từ vài giây đầu tiên. Hiệu ứng thu được là một âm sắc giống như giọng hát được áp dụng cho giai điệu hoặc hợp âm được phát bởi tín hiệu sóng mang, tạo cảm giác rằng giọng nói được nói thông qua một bộ tổng hợp.
Bộ phát âm ban đầu là một thiết bị tương tự, nó được triển khai với hai ngân hàng từ một chục bộ lọc băng thông trở lên có Q. cao. Tín hiệu bộ điều chế được gửi qua ngân hàng bộ lọc đầu tiên và biên độ của tất cả các tín hiệu của băng con được theo dõi bằng một mảng người theo phong bì. Song song, tín hiệu sóng mang được gửi qua một ngân hàng lọc khác. Mỗi băng con được khuếch đại (với một VCA) với mức tăng được đưa ra bởi những người theo phong bì. Nếu bạn đọc analog, bạn có thể xem sơ đồ của kênh vocoder ở đây , từ Bộ phát âm sống của Jurgen Haible- trên đầu bộ lọc tín hiệu bộ điều biến, ở dưới cùng bộ lọc sóng mang và VCA. Việc triển khai phần mềm của người hát gần với điều này, đơn giản là vì các nhà sản xuất âm nhạc mong đợi người hát có âm thanh giống như các thiết bị analog cổ điển! Nhưng nếu bạn không muốn trung thực với các thiết bị "cổ điển" và muốn thứ gì đó rẻ hơn 40 biquads, một cách khác để đạt được kết quả tương tự là ước tính bộ lọc toàn cực (theo thứ tự 8 đến 20 tùy thuộc vào mức độ bạn muốn để có được giọng nói gốc) từ tín hiệu điều chế (mô hình AR); và sau đó áp dụng bộ lọc này cho nhà mạng. Vấn đề điển hình ở đây là bạn sẽ cần cập nhật các hệ số bộ lọc của mình sau mỗi khung hình 20ms hoặc hơn; vì vậy bạn cần một đại diện của bộ lọc toàn cực xử lý các cập nhật hệ số đột ngột.
3. Tự động điều chỉnh và ánh xạ lại
Những gì Songify làm là như sau: trích xuất giai điệu (đường viền cao độ) của giọng nói được ghi lại và thay đổi nó để đường viền cao độ kết quả khớp với giai điệu đích. Điều này hơi giống với những gì tự động điều chỉnh, với sự khác biệt là tự động điều chỉnh "làm tròn" cao độ về phía nửa âm nhạc chính xác gần nhất, trong khi Songify chỉ đẩy nó thành giá trị đích.
Các thuật toán tại nơi làm việc ở đây rất khác so với kéo dài thời gian chuyển đổi truyền thống, bởi vì tín hiệu giọng nói là đơn âm và phù hợp với mô hình bộ lọc nguồn. Các phương pháp tiếp cận như Đồng bộ hóa miền thời gian-Overlap-Add (TD-PSola) hiệu quả hơn nhiều, cả về mặt tính toán và chất lượng, để thay đổi độ cao của giọng nói so với thuật toán kéo dài thời gian chung (thường được thực hiện với các bộ phát âm pha ). Chúng được sử dụng ví dụ trong tổng hợp lời nói để thay đổi tiến trình của câu tổng hợp - thực tế không giống như Songify! Tự động điều chỉnh cũng dựa trên các phương pháp miền thời gian như vậy (phát hiện đầy đủ các chu kỳ của dạng sóng đầu vào và lấy mẫu lại chúng).
Dan Ellis có một số ví dụ Matlab rất hay trên trang này: http://www.ee.columbia.edu/~dpwe/resource/matlab/pvoc/
Đây là một liên kết đến mã giả tại Mathworks.
Đây là một liên kết mô tả về algoritm tại DSP Dimensions.
Một thùng FFT có tần số trung tâm. Bất kỳ hình sin nào ở tần số bin chính xác đó sẽ có cùng pha với tham chiếu đến 2 điểm tham chiếu bù trừ chính xác 1 khung FFT hoặc có pha delta có thể được tính cho 2 điểm tham chiếu hoặc 2 khung FFT cách nhau một khoảng tùy ý (có thể chồng chéo) . Ý tưởng cơ bản của bộ phát âm pha là điều chỉnh một chút tần số của thùng FFT theo tần số gần đó để hình sin ở tần số đó khớp với pha được phát hiện tại các điểm tham chiếu của 2 khung FFT bù, nếu tần số trung tâm của thùng FFT không.
Các tần số được điều chỉnh này sau đó có thể được sử dụng để tái tổng hợp dạng hạt của dạng sóng thể hiện tính liên tục hơn trên các khung được tái tổng hợp, ngay cả khi chuỗi phổ ban đầu được chia tỷ lệ theo miền tần số hoặc thời gian. Các tần số bù này cũng có thể được sử dụng để ước tính tần số, hoặc là một phần của phương pháp ước lượng cao độ. Với ước lượng cao độ cộng với sự tổng hợp âm thanh, người ta có thể có thể phát ra âm thanh ở một cao độ và đẩy sự tái hợp âm đến một âm thanh gần giống nhau, ngoại trừ ở một âm vực khác.
Bài viết sau đây mô tả một bộ phát âm pha dựa trên biến đổi Fourier (STFT) thời gian ngắn, cũng như kỹ thuật thêm chồng chéo đồng bộ cao độ (PSola) để giải quyết các sửa đổi thời gian và cường độ của tín hiệu âm thanh:
Moulines, E. & Laroche, J.
" Các kỹ thuật phi tham số để điều chỉnh giọng nói theo thang độ và thời gian ",
Speech Communication, 1995.
(một số phiên bản PDF có sẵn trong các liên kết từ học giả google )