- vừa được xem lúc

Tìm hiểu 1 số mô hình Text-To-Speech

0 0 13

Người đăng: Hung Tien Nguyen

Theo Viblo Asia

1. Tacotron 2

Tacotron 2 là 1 mô hình tổng hợp tiếng nói trực tiếp từ văn bản đầu vào. Nó dựa trên sự kết hợp giữa convolution neural network (CNN) và recurrent neural network (RNN).

Có 2 thành phần chính trong Tacotron 2:

  • 1 mạng seq2seq có tên Spectrogram Prediction Network dùng để dự đoán chuỗi mel spectrogram từ 1 chuỗi kí tự đầu vào.
  • 1 phiên bản điều chỉnh của WaveNet tạo ra âm thanh dựa vào phổ Mel được dự đoán ở trên.

image.png

1 cách đơn giản hơn, Tacotron 2 hoạt động theo nguyên lý kết hợp của 2 mạng neural network: 1 cái chuyển đổi text sang Mel Spectrogram, cái còn lại chuyển từ Mel Spectrogram đấy sang các âm thanh tương ứng.

1.1 Spectrogram Prediction Network

Trong Tacotron, Mel Spectrogram được tính thông qua short-time Fourier transform (STFT) với: 50 ms frame size, 12.5 ms frame hop. Sau đó biến đổi sang mel scale bằng mel filterbank 80 channel trải dài 125Hz đến 7.6Khz.

Layer đầu tiên là embedding layer, tạo ra vector 512 chiều từ 1 chuỗi kí tự đầu vào. Sau đó embedding vectỏ được truyền qua 3 lớp 1D Convolution layer, mỗi lớp chứa 512 filter có size 5x1. Đây là filter size hợp lí vì nó giữ được thông tin character hiện tại, và 2 character trước nó và sau nó. Theo sau đó là lớp Mini-Batch Normalization, và activation function ReLU.

abcd

Đầu ra của Encoder sau đó được cho qua mạng Attention để tổng hợp lại chuỗi encode thành 1 context vector cố định cho mỗi step tại output Decoder. Trong bài báo sử dụng cơ chế location-sensitive attention để sử dụng trọng số attention tích lũy từ các Decoder time-step trước kết hợp đặc trưng ở vị trí hiện tại để tính toán trọng số. Điều này giúp model luôn tịnh tiến lên phía trước qua các input, loại bỏ các thông tin bị lặp lại hoặc bỏ qua của Decoder. Xác suất chú ý được tính thông qua chiếu inputs và đặc trưng vị trí lên một ma trận đặc trưng có kích thước 128 chiều.

Decoder là 1 mạng RNN tự hồi quy có mục tiêu là sinh ra Mel Spectrogram từ chuỗi input được encode. Prediction từ time-step trước đầu tiên được truyền qua mạng pre-net bao gồm 2 lớp fully connected, mỗi lớp có 256 unit theo sau là ReLU. Bài báo nhận thấy rằng pre-net hoạt động như là 1 information bottleneck rất cần thiết cho việc học các trọng số attention. Đầu ra của lớp pre-net được concatenate với đầu ra của mạng attention và được đưa qua 2 lớp LSTM với 1024 unit. Sau đó concatenate giữa đầu ra của LSTM và attention context vector được chiếu qua phép biến đổi tuyến tính để dự đoán spectrogram frame. Cuối cùng, các Mel Spectrogram vừa được dự đoán đi qua 5-layer convolution post-net để tạo ra thông tin bổ sung vào với Spectrogram ở trên để cải thiện khả năng tái cấu trúc âm thanh. Mỗi post-net layer được cấu thành bởi 512 filter có chiều 5x1 kết hợp với Batch Normalization, theo sau bởi hàm tanh.

abcd

Trong đó paper cũng thêm vào 1 lớp để dự đoán stop token để tự động kết thúc trước khi đến kích thước cố định.

1.2 Vocoder

Vocoder - hiểu đơn giản là bộ phát âm, được dùng để biến đổi dữ liệu từ định dạng Mel-spectrogram sang waveform (miền thời gian) mà con người có thể nghe được.

Âm thanh dạng waveform sau khi biến đổi STFT (Short time furier transform), ta tách thành 2 loại thông tin: magnitude và phase (cường độ và pha). Spectrogram chỉ là thông tin về magnitude. Điều đó đồng nghĩa với việc cần cả magnitude và phase mới có thể khôi phục lại âm thanh ban đầu. Như vậy, spectrogram mà model trả ra chưa đủ để phục dựng lại âm thanh dạng waveform.

Trước đây, tacotron sử dụng thuật toán Griffin-Lim để ước lượng ra phase dựa vào spectrogram. Sau đó khôi phục lại âm thanh dựa vào spectrogram (magnitude) và phase. Tuy nhiên cách này cho chất lượng âm thanh chưa hoàn hảo, âm thanh không trong, đôi khi xuất hiện nhiều nhiễu.

Trong tacotron2, nhóm tác giả đã tận dụng WaveNet - mô hình sinh âm thanh được nghiên cứu trước đó vài năm (và tất nhiên vẫn là của Google). WaveNet hoạt động dựa trên các dilation convolution. Nhìn vào hình minh họa, bạn có thể thấy rằng 1 điểm dữ liệu được sinh ra dựa trên các điểm dữ liệu trong quá khứ. Và với dilation convolution, phạm vi bao phủ được trải rộng ra hơn rất nhiều so với convolution thông thường.

1.3 Nguồn tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Được rồi, đi thôi!!! VPS free nè (^.^) [P1]

Bạn là sinh viên, bạn là lập trình viên khó khăn về mặt tài chính, bạn không có xiền thuê VPS, được rồi hãy đến đây!!!. Hôm nay mình sẽ hướng dẫn cho các bạn cách tạo VPS free bằng Github Workflow & N

0 0 46

- vừa được xem lúc

[Linux] Iptables trong hệ thống Linux

IPtables là ứng dụng tường lửa miễn phí trong Linux, cho phép thiết lập các quy tắc riêng để kiểm soát truy cập, tăng tính bảo mật. Khi sử dụng máy chủ, tường lửa là một trong những công cụ quan trọng

0 0 35

- vừa được xem lúc

Từ bug format sai chuỗi số khi nhập bằng bàn phím tiếng Nhật, tới IME và các sự kiện composition trong JS

"Tự nhiên tui thấy hiện tượng lạ”. Khi nhập liệu một chuỗi các kí tự vào thẻ input, thông thường chúng ta nhập thế nào thì hiển thị thế ấy, không làm phép biến đổi gì cả.

0 0 36

- vừa được xem lúc

Tạo Rijndael S-box sử dụng trong AES

I. Rijndael S-box là gì .

0 0 25

- vừa được xem lúc

Giới thiệu về lỗ hổng tràn bộ đệm (Buffer Overflow) và cách khai thác

Khái niệm. Lỗ hổng tràn bộ đệm (Buffer Overflow) là lỗ hổng trong lập trình, cho phép dữ liệu được ghi vào một buffer có thể tràn ra ngoài buffer đó, ghi đè lên dữ liệu khác và dẫn tới hoạt động bất t

0 0 32

- vừa được xem lúc

Share Libraries Hijacking trên Linux

1. Cách thức hoạt động của Share Libraries.

0 0 17