1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thuyết minh phim tự động sử dụng tổng hợp tiếng nói tiếng việt

75 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 4,75 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bằng việc sử dụng ứng dụng, người dùng có thể tạo ra các tập tin âm thanh với nội dung trùng với nội dung video nhờ vào các tập tin phụ đề của video, từ tập tin âm thanh được tạo ra ứng

Trang 1

B Ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

NGUY ỄN VĂN NAM

LU ẬN VĂN THẠC SĨ KỸ THUẬT CHUYÊN NGÀNH K Ỹ THUẬT PHẦN MỀM

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

NGUYỄN VĂN NAM

-THUYẾT MINH PHIM TỰ ĐỘNG SỬ DỤNG

TỔNG HỢP TIẾNG NÓI TIẾNG VIỆT

Trang 3

1

LỜI CẢM ƠN

Để có ngày hoàn thành luận văn tốt nghiệp này, lời đầu tiên em xin chân thành cảm ơn các thầy, cô và cán bộ giảng dạy tại trường Đại học Bách Khoa Hà Nội, các thầy cô trong viện Công nghệ thông tin & Truyền thông và đặc biệt là các thầy cô trong bộ môn Công nghệ phần mềm đã tận tậm chỉ dạy em trong suốt thời gian học vừa qua

Em xin trận trọng gửi lời cảm ơn đến Tiến sĩ Nguyễn Thị Thu Trang, Bộ môn Công nghệ phần mềm, Viện CNTT&TT, Trường Đại học Bách Khoa Hà Nội Cảm

ơn cô trong thời gian em thực hiện luận văn đã nhiệt tình hướng dẫn, chỉ bảo những kiến thức cũng như định hướng cho em thực hiện đề tài này

Em cũng xin gởi lời cảm ơn chân thành đến các bạn học lớp 16BKTPM đã luôn đồng hành giúp đỡ và sẻ chia cùng tôi những khó khăn trong quá trình học tập và làm luận văn

Cuối cùng, em xin cảm ơn gia đình, những người luôn động viên và giúp đỡ em

về mặt tinh thần, để em có động lực và vững tin đạt đến kết quả cuối cùng này

Hà Nội, ngày 24 tháng 11 năm 2019

Tác giả LVThS

Nguyễn Văn Nam

Trang 4

2

LỜI CAM ĐOAN

Tôi - Nguyễn Văn Nam - cam kết luận văn là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Nguyễn Thị Thu Trang

Các kết quả nêu trong luận văn là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác

Hà Nội, ngày 24 tháng 11 năm 2019

Tác giả LVThS

Nguyễn Văn Nam

Trang 5

3

MỤC LỤC

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ 6

DANH MỤC HÌNH 7

DANH MỤC BẢNG 9

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 10

1.1 Đặt vấn đề 10

1.2 Mục tiêu và phạm vi đề tài 11

1.3 Bố cục luận văn 12

CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU 13

2.1 Khảo sát hiện trạng 13

2.2 Tổng quan các dịch vụ của ứng dụng 14

2.2.1 Dịch vụ quản lý xác thực người dùng 16

2.2.2 Dịch vụ quản lý tổng hợp thuyết minh 17

2.2.3 Dịch vụ quản lý phim và thuyết minh 17

2.3 Đặc tả use case 18

2.3.1 Đặc tả use case tổng hợp thuyết minh 18

2.3.2 Đặc tả use case cấu hình phụ đề 19

2.3.3 Đặc tả use case xem phim 20

2.4 Tổng kết 20

CHƯƠNG 3: GIẢI PHÁP THUYẾT MINH PHIM TỰ ĐỘNG 21

3.1 Thiết kế kiến trúc 21

3.1.1 Kiến trúc tổng quan 21

3.1.2 Kiến trúc front-end 22

3.1.3 Kiến trúc back-end 24

3.2 Giải pháp tổng hợp thuyết minh phim 25

3.2.1 Giới thiệu về MaryTTS và định dạng SSML 25

3.2.2 Quá trình tổng hợp file âm thanh 26

Trang 6

4

3.3 Cách thức trình chiếu phim thuyết minh tự động 29

3.3.1 Phương thức trình chiếu phim và thuyết minh 29

3.3.2 Cơ chế đồng bộ phim và thuyết minh 31

3.4 Kết chương 32

CHƯƠNG 4: PHÁT TRIỂN ỨNG DỤNG 33

4.1 Công nghệ sử dụng 33

4.1.1 NodeJS 33

4.1.2 Bảo mật API với Json web token – JWT 35

4.1.3 Elastic Search 36

4.1.4 ReactJS 36

4.1.5 Android platform 41

4.2 Thư viện API 45

4.2.1 MongooseJS 45

4.2.2 Redux 45

4.2.3 ObjectBox 46

4.2.4 Glide 48

4.2.5 Volley 48

4.3 Phát triển ứng dụng 48

4.3.1 Thư viện và công cụ sử dụng 48

4.3.2 Kiến trúc ứng dụng 50

4.3.3 Thiết kế chi tiết 51

4.3.4 Kết quả đạt được 60

4.3.3 Minh họa các chức năng chính 64

4.4 Thử nghiệm 68

4.4.1 Dữ liệu thử nghiệm 68

4.4.2 Kết quả thử nghiệm 68

4.5 Đánh giá 69

4.5.1 Ưu điểm 69

4.5.2 Nhược điểm 69

Trang 7

5

4.6 Kết chương 70KẾT LUẬN 71DANH MỤC CÁC TÀI LIỆU THAM KHẢO 72

Trang 8

6

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

Giao diện lập trình ứng dụng

Phát triển ứng dụng người dùng cuối

RDBMS Relational Database Management System

Hệ quản trị cơ sỡ dữ liệu quan hệ

SQL

Structured Query Language

Ngôn ngữ truy vấn mang tính cấu trúc, được thiết kế

để quản lý dữ liệu trong RDBMS

HTML HyperText Markup Language

Ngôn ngữ đánh dấu siêu văn bản

Một chuỗi các ký tự dùng để xác định một tài nguyên

JSON JavaScript Object Notation

Một kiểu định dạng dữ liệu trong ngôn ngữ JavaScript

REST

Representational State Transfer

Một chuẩn thiết kế phần mềm, nó quy định cách mà client và server sẽ tương tác với nhau

CNTT Công nghệ thông tin

LVTN Luận văn tốt nghiệp

MVVM Model – View – ViewModel

Trang 9

7

DANH MỤC HÌNH

Hình 1 Tổng quan chức năng 14

Hình 2 Biểu đồ use case tổng quan 15

Hình 3 Biểu đồ use case quản lý xác thực người dùng 16

Hình 4 Biểu đồ use case cho dịch vụ quản lý tổng hợp thuyết minh 17

Hình 5 Biểu đồ use case dịch vụ quản lý phim và thuyết minh 18

Hình 6 Kiến trúc ứng dụng thuyết minh phim 21

Hình 7 Kiến trúc mobile-front-end 22

Hình 8 Kiến trúc web-front-end 23

Hình 9 Kiến trúc microservice 24

Hình 10 Quá trình tạo file âm thanh với đầu vào là file srt 27

Hình 11 Trình chiếu phim thuyết minh tự động 29

Hình 12 Cấu trúc HTML DOM [8] 37

Hình 13 Server side rendering [9] 39

Hình 14 Client side rendering [9] 41

Hình 15 Các thành phần chính của Android 42

Hình 16 Quản lý dữ liệu có redux và không có redux [16] 46

Hình 17 Kiến trúc mobile front-end 50

Hình 18 Kiến trúc back-end 51

Hình 19 Kiến trúc dịch vụ quản lý xác thực người dùng 52

Hình 20 Các thành phần trong dịch vụ tổng hợp thuyết minh 53

Hình 21 Kiến trúc dịch vụ quản lý phim và thuyết minh 54

Hình 22 Thiết kế cơ sở dữ liệu trong Database 56

Hình 23 Kiến trúc ứng dụng Android 57

Hình 24 Thiết kế giao diện ứng dụng Android front-end 59

Hình 25 Cấu trúc gói xây dựng dịch vụ back-end server 61

Hình 26 Cấu trúc gói ứng dụng mobile front-end 62

Hình 27 Màn hình danh sách phim đã thuyết minh 64

Hình 28 Màn hình xem phim 65

Trang 10

8 Hình 29 Màn hình thông tin cá nhân 66Hình 30 Màn hình quản lý tổng hợp thuyết minh 67

Trang 11

9

DANH MỤC BẢNG

Bảng 1 Đặc tả use case tổng hợp thuyết minh 18

Bảng 2 Đặc tả use case cấu hình subtitle 19

Bảng 3 Đặc tả use case xem phim 20

Bảng 4 Trạng thái đồng bộ dùng phép AND 31

Bảng 5 Trạng thái đồng bộ trễ 31

Bảng 6 Thuật ngữ trong mongoDB và SQL 34

Bảng 7 Kiểu dữ liệu đặc biệt trong MongoDB 35

Bảng 8 Danh sách công cụ sử dụng 48

Bảng 9 Danh sách thư viện sử dụng 48

Bảng 10 Các đối tượng trong ứng dụng 55

Bảng 11 Kết quả đạt được 60

Bảng 12 Dữ liệu thử nghiệm 68

Bảng 13 Kết quả thử nghiệm tổng hợp 68

Trang 12

ra nhanh hơn, tốn kém ít chi phí hơn và nhiều người thích xem phim phụ đề hơn do phim phụ đề vẫn đảm bảo được chất giọng của nhân vật trọng phim Tuy vậy vẫn rất

có nhiều người thích xem phim thuyết minh hay chỉ xem được phim thuyết minh như: người già mắt kém, trẻ em chưa biết đọc hay những người khuyết tật gặp những hội chứng như khó đọc v.v Tuy nhiên thị trường phim hiện tại lại chưa đáp ứng được nhu cầu xem phim thuyết minh của họ Dưới đây là một số lý do:

Chưa có thuyết minh: Để có một phim thuyết minh hoàn chỉnh ta phải đi qua rất

nhiều công đoạn: tìm giọng thuyết minh phù hợp, tìm địa điểm thuyết minh sao cho không có tạp âm, đầu tư trang thiết bị cho phim… là các đầu vào cho phim Tiếp đó

là đầu ra, sau khi cho ra các đoạn ghi âm, ta lại phải chỉnh sửa lại video và ghép các

âm thanh video với các đoạn ghi âm vừa tạo ra Nói chung là để làm ra một phim thuyết minh cần tốn nhiều chi phí về thời gian và tiền bạc, do vậy các phim tỉ lệ người xem thấp thường không có thuyết minh

Giọng thuyết minh chưa được đa dạng: Thị trường phim là chung cho cả nước,

tuy nhiên không ai bỏ thời gian và tiền bạc ra để thuyết minh để đáp ứng cho từng vùng, do vậy một số phim thuyết minh được đánh giá là khó nghe bởi vì họ không quen với giọng thuyết minh trong phim

Từ các điều nêu trên em thấy cần đưa ra một ứng dụng có thể thuyết minh phim tự động, nó giúp ta có thể giảm thiểu chi phí để tạo ra các bộ phim thuyết minh Ứng dụng thuyết minh phim tự động là ứng dụng được đưa ra để thay thế cho quá trình thuyết minh phim, đáp ứng được các nhu cầu nêu trên Do thị trường hiện tại thì phim

Trang 13

11

phụ đề nhiều hơn rất nhiều so với phim thuyết minh và quá trình tạo phụ đề nhanh hơn quá trình lồng tiếng nên mục tiêu của ứng dụng là tạo ra thuyết minh phim dựa vào các tập tin phụ đề đưa vào Bằng việc sử dụng ứng dụng, người dùng có thể tạo

ra các tập tin âm thanh với nội dung trùng với nội dung video nhờ vào các tập tin phụ

đề của video, từ tập tin âm thanh được tạo ra ứng dụng hỗ trợ chạy song song

Tổng hợp tiếng nói là quá trình tạo ra tiếng nói một cách nhân tạo Một trong các hình thức đặc trưng của tổng hợp tiếng nói là text-to-speech, nó chuyển từ nội dung bằng văn bản sang nội dung bằng âm thanh Một phần mềm text-to-speech về cơ bản

nó nhận đầu vào là một đoạn văn bản và chuyển đổi cho ra một tập tin âm thanh mà

ta có thể sử dụng

Ứng dụng của tổng hợp tiếng nói được áp dụng cho nhiều đối tượng, lĩnh vực khác nhau trong cuộc sống Chẳng hạn như lĩnh vực giải trí đa phương tiện: Người đi làm, trong khi lái xe họ không thể tập trung vào việc đọc văn bản hoặc khi đi làm về họ không muốn căng mắt vào đọc các đoạn văn bản hiển thị trên màn hình nữa Ngoài

ra nó còn được áp dụng hỗ trợ cho người mù, người gặp hội chứng khó đọc, …

1.2 Mục tiêu và phạm vi đề tài

Từ các vấn đề được đề cập đến ở trên, mục tiêu của luận văn là xây dựng một ứng dụng cho phép người dùng tải lên phim, tải lên tệp phụ đề cho phim, chỉnh sửa phụ

đề, tạo thuyết minh cho phim với đầu vào là tệp phụ đề đã tải lên Ứng dụng tích hợp

hệ thống tổng hợp tiếng nói Vbee của TS Nguyễn Thị Thu Trang để tổng hợp ra các tập tin âm thanh thuyết minh

Ứng dụng được xây dựng có định hướng là một ứng dụng xem phim nên cũng sẽ cung cấp một số chức năng khác như:

o Đăng ký, đăng nhập, đăng xuất

o Quản lý phim người dùng đã đăng

o Quản lý phụ đề

o Xem phim thuyết minh

Trang 14

Dựa trên các phân tích yêu cầu ở chương 2 và các thiết kế hệ thống và thiết kế chi tiết ở chương 3, chương 4 sẽ trình bày về việc xây dựng sản phẩm cụ thể là “Ứng dụng tạo phim thuyết minh tự động” Chương 4 cũng sẽ đề cập chi tiết các công nghệ

sử dụng để phát triển sản phẩm và các kết quả thực tế đã đạt được cho đến thời điểm làm luận văn

Cuối cùng, phần kết luận tổng hợp lại quá trình phát triển ứng dụng, những kết quả đạt được, những điều chưa làm được, những bài học kinh nghiệm cần rút ra So sánh kết quả ứng dụng hoàn thành với những ứng dụng tương tự đã có mặt trên thị trường Nêu ra định hướng phát triển của ứng dụng trong tương lai đi kèm với đó là những công việc, chức năng cần phát triển hoặc nâng cấp

Trang 15

Việc phải mất khá nhiều thời gian và công sức để tìm kiếm và xem một bộ phim phần nào ảnh hưởng đến cảm giác thoải mái khi xem phim Từ những vấn đề còn tồn đọng trong việc tìm kiếm và xem phim thuyết minh, em đã thực hiện xây dựng ứng dụng cho phép người dùng tự đăng tải phim có phụ đề, tạo thuyết minh cho phim một cách tự động và sau đó có thể xem phim thuyết minh trên ứng dụng Khi những phim mới xuất hiện, người dùng muốn có phim thuyết minh sẽ đăng tải lên ứng dụng này, khi đó ứng dụng có được lợi thế là luôn có những bộ phim mới nhất được cập nhật Trên nền tảng ứng dụng thuyết minh phim tự động gồm hệ thống ứng dụng công nghệ tổng hợp tiếng nói đầu vào là một file dạng text của phụ đề, đầu ra của hệ thống

xử lý là file audio tương ứng Các đối tượng của ứng dụng là người dùng có nhu cầu xem phim thuyết minh, đã xác định được phim mình muốn xem và phụ đề của phim tương ứng Thực tế một phim sẽ có nhiều phụ đề được chia sẻ do có nhiều nhóm làm phụ đề cho các chất lượng/nguồn phim khác nhau, các phụ đề này có thể khác nhau về thời gian, giãn cách giữa các đoạn hoặc có chứa các nội dung về đánh dấu Với thực

Trang 16

14

trạng đó đề tài đề xuất xây dựng Dịch vụ quản lý tổng hợp thuyết minh để lưu trữ và

xử lý phụ đề sau đó thực hiện tổng hợp thuyết minh từ phụ đề sau đó

Để bảo mật thông tin, đảm bảo tính riêng tư của người dùng, phần mềm yêu cầu mỗi người dùng cần phải đăng nhập, việc đăng nhập để xác thực danh tính, bảo mật thông tin của phần mềm, cũng như tránh những xâm phạm không nhìn thấy từ bên

ngoài, luận văn xây dựng Dịch vụ đăng nhập xác thực người dùng bằng thư điện tử

và mật khẩu cho từng người dùng trong ứng dụng

Đầu ra của dụng dịch vụ tổng hợp thuyết minh là một file âm thanh thuyết minh tương ứng Để xem được phim với file âm thanh thuyết minh này người dùng cần phát file âm thanh thuyết minh và file video phim tương ứng Ngoài ra từ một file phụ đề cũng sẽ có thể có nhiều file thuyết minh tương ứng (mỗi lần thực hiện tạo thuyết minh với cấu hình và file phụ đề khác nhau sẽ cho ra một file âm thanh thuyết minh khác

nhau) Luận văn xây dựng Dịch vụ quản lý phim và thuyết minh cho người dùng có

các quyền tùy chỉnh sửa, xóa, thêm mới, xem phim và thuyết minh

2.2 Tổng quan các dịch vụ của ứng dụng

Hình 1 Tổng quan chức năng

Trang 17

15

Luồng hoạt động của ứng dụng đầu tiên từ người sử dụng dịch vụ tạo một tài khoản

từ giao diện đăng ký, người dùng sau khi đăng nhập có thể sử dụng các chức năng của ứng dụng Hình 1 mô tả phân cấp chức năng được xây dựng trong ứng dụng

Biểu đồ use case tổng quan:

Hình 2 Biểu đồ use case tổng quan Hình 2 mô tả ứng dụng có 3 tác nhân chính: khách, người dùng và TTS Engine Khách có thể đăng ký tài khoản để trở thành người dùng của ứng dụng, sau khi đăng nhập người dùng có thể sử dụng các chức năng của ứng dụng bao gồm tải lên phim, tải lên phụ đề, tạo thuyết minh cho phim

Trang 18

16

TTS Engine là hệ thống tổng hợp tiếng nói, có vai trò tiền xử lý nội dung đầu vào

là file text đã được chuẩn hóa sau đó chuyển từ dạng văn bản sang dạng tiếng nói dưới định dạng tệp âm thanh theo các giọng đọc tùy chọn

Trong ứng dụng thuyết minh phim tự động, TTS Engine đóng vai trò là nơi cung cấp tệp thuyết minh âm thanh đã tổng hợp cho ứng dụng Các tệp âm thanh thuyết minh có trong ứng dụng không thể thêm vào một cách tùy tiện mà chỉ có thể tổng hợp thông qua TTS Engine

2.2.1 Dịch vụ quản lý xác thực người dùng

Dịch vụ quản lý xác thực người dùng cho phép khách đăng ký tài khoản thông qua tài khoản thư điện tử và mật khẩu, việc đăng nhập và xác thực tập trung và lưu thông tin về người dùng Chức năng chính của dịch vụ này là đăng nhập một lần sau đó sử dụng tài khoản này để đăng nhập các dịch vụ quản lý tổng hợp thuyết minh và quản

lý phim Hình 3 mô tả tương tác người dùng đến dịch vụ quản lý xác thực người dùng

Hình 3 Biểu đồ use case quản lý xác thực người dùng

Trang 19

17

2.2.2 Dịch vụ quản lý tổng hợp thuyết minh

Dịch vụ quản lý tổng hợp thuyết minh cho phép lưu trữ và quản lý phụ đề của phim muốn tổng hợp thuyết minh Hình 4 mô tả tương tác người dùng và dịch vụ quản lý tổng hợp thuyết minh

Hình 4 Biểu đồ use case cho dịch vụ quản lý tổng hợp thuyết minh

Ba chức năng quan trọng trong dịch vụ này là chỉnh sửa lỗi phụ đề, cấu hình phụ

đề và tổng hợp thuyết minh Đầu tiên người dùng sẽ upload file phụ đề cần tổng hợp thông qua chức năng CURD phụ đề, sau đó sử dụng chức năng chỉnh sửa lỗi phụ đề

để loại bỏ các lỗi như lỗi chính tả, loại bỏ watermark Chức năng cấu hình phụ đề cho phép người dùng chọn các cấu hình cho phụ đề sẽ dùng để tổng hợp (VD: giọng nam hay nữ, vùng miền), chức năng tổng hợp thuyết minh gọi đến hệ thống TTS Engine chuyển từ file text nội dung sách sang file tiếng nói định dạng mp3

2.2.3 Dịch vụ quản lý phim và thuyết minh

Dịch vụ quản lý phim và thuyết minh cho phép lưu trữ và quản lý phim người dùng

đã tải lên và các file âm thanh thuyết minh người dùng đã tổng hợp được Ngoài ra luận văn cũng xây dựng chức năng xem phim, cho phép người dùng xem phim thuyết

Trang 20

18

minh trực tiếp trên ứng dụng với phim và thuyết minh đã tổng hợp được, phim sẽ được phát song song với phụ đề, đảm bảo đồng bộ trạng thái giữa video phim và âm thanh thuyết minh Hình 5 mô tả tương tác người dùng và dịch vụ quản lý phim và thuyết minh

Hình 5 Biểu đồ use case dịch vụ quản lý phim và thuyết minh

2.3 Đặc tả use case

Phần này em sẽ đưa ra đặc tả chi tiết cho các chức năng trong ứng dụng Để tránh lan man em chỉ đưa đặc tả của một số chức năng Như đã đề cập ở trên, các chức năng quan trọng sẽ được đặc tả bao gồm: tổng hợp thuyết minh, cấu hình phụ đề và xem phim

2.3.1 Đặc tả use case tổng hợp thuyết minh

Bảng 1 Đặc tả use case tổng hợp thuyết minh

Mã use case UC001 Tên use case Tổng hợp thuyết minh

Trang 21

gửi yêu cầu tổng hợp

kiện thay thế STT Thực hiện bởi Hành động 3a Hệ thống Nếu chưa tải lên sub, thông báo lỗi

lệ hoặc thiếu, thông báo lỗi và yêu cầu tác nhân kiểm tra lại

thi thì xóa thông tin tổng hợp vừa lưu vào trong cơ sở dữ liệu và thông báo lỗi

hiển thị thông báo lỗi

kiện File thuyết minh được tạo và lưu vào hệ thống cùng với đó là trạng thái phim sẽ là hoàn thành

2.3.2 Đặc tả use case cấu hình phụ đề

Bảng 2 Đặc tả use case cấu hình subtitle

Mã use case UC002 Tên use case Cấu hình subtitle

Trang 22

2.3.3 Đặc tả use case xem phim

Bảng 3 Đặc tả use case xem phim

Mã use case UC003 Tên use case Xem phim

nào đang hiển thị trong danh sách

minh phim mặc định

đồng bộ theo thời gian

đồng bộ về thời gian để không bị tình trạng video và audio thuyết minh bị lệch nhau

2.4 Tổng kết

Chương 2 đã trình bày hiện trạng chung của việc xem phim, lợi ích của việc ứng dụng công nghệ thông tin để tạo thuyết minh cho phim một cách tự động Mô tả tổng quan ứng dụng tạo thuyết minh phim tự động, các dịch vụ xác thực người dùng, dịch

vụ tổng hợp thuyết minh, dịch vụ quản lý phim và thuyết minh Đặc tả các chức năng

cụ thể của ứng dụng

Trang 23

3.1 Thiết kế kiến trúc

3.1.1 Kiến trúc tổng quan

Hình 6 Kiến trúc ứng dụng thuyết minh phim

Trang 24

22

Hình 6 mô tả kiến trúc tổng quan của ứng dụng phim thuyết minh tự động Từ hình

vẽ, có thể thấy ứng dụng được chia làm 2 phần chính: front-end và back-end (hay client-side và server-side)

Front-end là phần trực tiếp tương tác với người dùng, thông qua đây người dùng

sẽ có thể sử dụng các chức năng của ứng dụng Ứng dụng được xác định sẽ xây dựng trên hai nền tảng là mobile-front-end và web-front-end Kiến trúc của front-end sẽ được mô tả chi tiết ở phần tiếp theo của luận văn

Back-end được thiết kế theo mô hình kiến trúc microservice, trong đó bao gồm 3 dịch vụ chính là dịch vụ quản lý xác thực người dùng, dịch vụ quản lý tổng hợp thuyết minh, dịch vụ quản lý phim và thuyết minh Dịch vụ quản lý xác thực người dùng bao gồm chức năng đăng ký, đăng nhập, thay đổi mật khẩu, xác thực tài khoản, đăng xuất Dịch vụ quản lý tổng hợp thuyết minh cung cấp các chức năng quản lý phụ đề, kiểm tra chỉnh sửa lỗi phụ đề, cấu hình phụ đề, tổng hợp thuyết minh Dịch vụ quản

lý phim và thuyết minh cung cấp chức năng xem phim và quản lý phim, thuyết minh

đã tạo

Ở hình vẽ còn đề cập đến hai phần nữa là TTS System và Database, hai phần này

có sự tương tác trực tiếp của ứng dụng xem phim chứ không nằm trong phạm vi thiết

kế, phát triển ứng dụng Cụ thể, ứng dụng phim thuyết minh sẽ gọi sang TTS System

để yêu cầu tổng hợp file thuyết minh Database sẽ là nơi lưu trữ dữ liệu, thực hiện thêm sửa xóa dữ liệu đơn thuần

3.1.2 Kiến trúc front-end

3.1.2.1 Kiến trúc mobile-front-end

Hình 7 Kiến trúc mobile-front-end Kiến trúc phần mềm sử dụng trong ứng dụng di động là kiến trúc MVVM Trong

đó ứng dụng được chia ra 3 thành phần khác nhau Model, View và ViewModel

Trang 25

23

View: Tương tự như trong mô hình MVC, là phần giao diện của ứng dụng để hiển thị dữ liệu và nhận tương tác của người dùng Một điểm khác biệt so với các ứng dụng truyền thống là View trong mô hình này tích cực hơn Nó có khả năng thực hiện các hành vi và phản hồi lại người dùng thông qua tính năng binding, command Model: Cũng tương tự như trong mô hình MVC Model là các đối tượng giúp truy xuất và thao tác trên dữ liệu thực sự

ViewModel: Lớp trung gian giữa View và Model ViewModel có thể được xem là thành phần thay thế cho Controller trong mô hình MVC Nó chứa các mã lệnh cần thiết để thực hiện data binding, command

3.1.2.2 Kiến trúc web-front-end

Hình 8 Kiến trúc web-front-end Hình 8 trình bày kiến trúc sử dụng cho web-front-end, kiến trúc Redux Ứng dụng thường được phân tách thành các component và các component này sẽ tự quản lý các trạng thái của chúng mà không cần bất kỳ một thư viện hoặc công cụ nào từ bên ngoài Cách làm sẽ hoạt động tốt với các ứng dụng có ít component nhưng khi ứng dụng trở lên lớn hơn thì việc quản lý trạng thái được chia sẻ qua các component sẽ biến thành các công việc lặt nhặt và rất dễ nhầm lẫn Sử dụng Redux sẽ giúp cho việc quản lý trạng thái ứng dụng trở nên đơn giản và dễ dàng

Web-front-end bao gồm 4 phần chính: Action, Reducer và Store là các thành phần của Redux và View đại diện cho thành phần giao diện tương tác với người dùng Redux bao gồm một Store, Action và Reducer Các trạng thái của các thành phần trong View sẽ được đăng ký để kết nối trực tiếp với Store Bất cứ khi nào một trạng thái thay đổi, thay vì đi qua nhiều trung gian, nó sẽ chỉ thay đổi ở Store và các thành

Trang 26

24

phần đã đăng ký với Store sẽ nhận ra sự thay đổi này và tự cập nhật Ngoài ra, với Redux, chúng ta cũng có thể lưu trữ dữ liệu từ máy chủ, từ đó tăng hiệu suất, giảm thiểu nhu cầu gửi yêu cầu truy xuất dữ liệu

Redux được mô tả với ba nguyên tắc chính: (i) Trạng thái của ứng dụng được lưu trữ trong một cây đối tượng duy nhất có tên là Cửa hàng lưu trữ, (ii) các trạng thái chỉ được phép đọc và không thể thay đổi, (iii) thay đổi chỉ được thực hiện trong chức năng thuần túy

3.1.3 Kiến trúc back-end

Hình 9 Kiến trúc microservice Hình 9 biểu diễn kiến trúc sử dụng ở back-end – kiến trúc microserivces Back-end sẽ gồm có một API Gateway và ba Microservice Mỗi Microservice thực hiện chức năng của mình và đưa ra một API để có thể giao tiếp với các thành phần khác trong ứng dụng Các Microservice giao tiếp với nhau sử dụng giao thức HTTP dựa trên REST

API Gateway là thành phần quan trọng trong kiến trúc microservice, tất cả các yêu cầu của ứng dụng tới máy trạm đều thông qua đây API Gateway giúp ta gửi các yêu cầu từ người dùng tới microservice, che giấu nội dung bên trong ứng dụng với người

Trang 27

25

dùng Cổng API Gateway sau khi gửi thông tin tới các service thì kết quả trả về nó cũng đưa về cho người dùng, do là thành phần trung gian nên việc xây dựng nên để sao cho có thể thực hiện nhiều yêu cầu người dùng cùng một lúc, việc này làm giảm thời gian chờ đợi của người dùng, ngoài ra khi có nhiều service song song thực hiện cùng chức năng thì API Gateway có thể định tuyến tới các service khác nhau để tăng tốc độ trả về

3.2 Giải pháp tổng hợp thuyết minh phim

Như đã đề cập trước đó, ứng dụng sẽ sử dụng hệ thống tổng hợp tiếng nói Tiếng Việt sẵn có, phần này sẽ đi vào tìm hiểu hệ thống tổng hợp tiếng nói và cách sử dụng

hệ thống này để tạo ra thuyết minh cho phim

3.2.1 Giới thiệu về MaryTTS và định dạng SSML

MarryTTS là một platform mã nguồn mở giúp ta xây dựng bộ tổng hợp tiếng nói cho các ngôn ngữ khác nhau Trong ứng dụng này ta sẽ sử dụng hệ thống của TS.Nguyễn Thị Thu Trang, một trong những hệ thống tổng hợp tiếng nói dựa trên nền tảng MarryTTS

SSML là một ngôn ngữ đánh dấu tổng hợp tiếng nói được viết dựa trên XML, nó cho phép ta điều khiển đầu ra cho tiếng nói bằng cách đưa ra các chuẩn chung cho các tham số điều chỉnh MarryTTS nhận SSML làm một trong các đầu vào để tổng hợp ra tiếng nói

Do được phát triển trên nền tảng XML nên nó phải được tuân theo cấu trúc và cú pháp của XML, do đó không gian tên của nó phải được định nghĩa một cách rõ ràng Dưới đây là một số thành phần cơ bản được sử dụng trong ứng dụng để xây dựng tài liệu SSML gửi lên server lấy về các file âm thanh:

o speak: là thành phần bắt buộc và là phần tử gốc của tài liệu SSML Speak

có thuộc tính bắt buộc là xml:lang chỉ rõ ngôn ngữ của tài liệu gốc Ngoài

ra có một số thuộc tính khác như: ‘xml:base’, ‘onlangfailure’, version lần lượt biểu thị một số thông tin như: nguồn của tài liệu, cách xử lý lỗi và phiên bản của tài liệu

<speak version="1.0" xml:lang="vi_VN"></speak>

Trang 28

26

o prosody: là một thành phần cho phép ta điều chỉnh cường độ, tốc độ và âm lượng của tiếng nói Một số thuộc tính của nó được sử dụng để điều khiển như: rate để tăng tốc độ âm thanh, duration chỉnh thời gian mong muốn của đoạn, volume để chỉnh âm lượng, pitch để tăng giảm tần số,…

<prosody rate="1.0">đoạn văn bản</prosody>

o break: là một phần tử rỗng, phần tử này điều khiển thời gian nghỉ giữa hai thành phần Thẻ này có hai thuộc tính là strength và time, với thuộc tính strength ta chỉ thời gian không cụ thể như none, x-weak, medium… còn time chỉ thời nghỉ cụ thể với giá trị là giây hoặc mili giây

<break time="1s"/>

3.2.2 Quá trình tổng hợp file âm thanh

Quá trình tạo file âm thanh được mô tả như trên hình 10, chia làm 5 bước chính: Bước 1: Đọc file srt

File srt là một file gồm tập hợp các đoạn gồm 3 phần nêu thông tin về câu hội thoại: phần 1 là dòng đầu nói về số thứ tự câu hội thoại, phần 2 là dòng hai nói về thời gian bắt đầu và thời gian kết thúc của hội thoại, phần 3 là các dò ng còn lại nêu nội dung hội thoại

Bước 2: Chỉnh sửa block

Bước này được thực hiện bên phía người dùng cho phép chỉnh sửa thông tin các block để cải thiện đầu ra cho file âm thanh Việc chỉnh sửa block được chia làm 2 loại là chỉnh sửa lỗi và chỉnh sửa chất lượng:

Trang 29

Hình 10 Quá trình tạo file âm thanh với đầu vào là file srt Bước 3: Đưa ra định dạng SSML từ block

Do ta sử dụng MarryTTS để gửi lên các file audio, thư viện này sử dụng một trong các đầu vào là các file SSML để xác định file audio đầu ra nên ta sẽ phải đưa ra các định dạng SSML từ nội dung các block tr ước khi gửi lên server Nội dung file SSML bao gồm thời gian nghỉ giữa hai đoạn và nội dung đoạn hội thoại

<speak version="1.0" xml:lang="vi_VN"

xsi:schemaLocation="http://www.w3.org/2001/10/synthesis

http://www.w3.org/TR/speech-synthesis/synthesis.xsd">

<break time="6s"/>

Trang 30

Việc tính toán để chuyển ra file SSML là rất quan trọng, nó quyết định xem đầu

ra của file audio có trùng khớp với đầu ra thực tế của audio hay không Việc tính toán được chia làm 2 giai đoạn là tính toán tốc độ, nội dung lời thoại và tính toán thời gian nghỉ của lời thoại

12 00:00:30 > 00:00:31 Đây là nội dung

13 00:00:34 > 00:00:36 đoạn hội thoại

Giả sử ta muốn tính toán câu thoại “đoạn hội thoại” ở trên Việc tính toán tốc độ lời thoại dựa theo thời gian hiển thị câu thoại trên màn hình và thời gian thực tế để nói một câu thoại Có hai trường hợp xảy ra khi tính toán tốc độ lời thoại:

o Thời gian hiển thị lớn hơn thời gian thực tế lời thoại: theo ví dụ trên thời gian hiển thị câu “đoạn hội thoại” ở trên mất thời gian là 2 giây từ giây 34 tới giây 36, giả sử thời gian nói câu này trên thực tế là 1.5s thì ta sẽ để câu thoại nói với tốc độ bình thường và cộng thêm 0.5s vào thời gian nghỉ giữa hai câu Thời gian nghỉ của hai câu lúc này là 3 giây từ câu trước đến câu hiện tại và 0.5s vừa cộng vào Như vậy nội dung đoạn SSML gửi lên là:

<speak version="1.0" xml:lang="vi_VN"

Trang 31

29

khớp với thời gian n ói của phim Việc tăng tốc độ cũng có giới hạn nhất định để đảm bảo rằng người nghe vẫn có thể nghe được nội dung câu thoại, khi tốc độ chạm giới hạn ta tiến hành cắt câu để đảm bảo vẫn có thể nói nội dung câu thoại trong thời gian cho phép Giả sử khi tăng tốc độ lên 1.2

để kịp phát câu thoại thì nội dung đoạn SSML gửi lên là:

<speak version="1.0" xml:lang="vi_VN"

Bước 4: Tạo file audio

Đây là quá trình thực hiện gửi nội dung file SSML đến hệ thống TTS để thực hiện tổng hợp, sau khi thực hiện xong nó sẽ trả về thời gian nghỉ của đoạn trước và đoạn hội thoại hiện tại

Bước 5: Nối các audio lại

Từ các đoạn audio riêng lẻ sau khi tổng hợp, ta sẽ thực hiện nối các đoạn audio lại để cho ra file audio cuối cùng với nội dung âm thanh trùng khớp với nội dung của phụ đề phim

3.3 Cách thức trình chiếu phim thuyết minh tự động

3.3.1 Phương thức trình chiếu phim và thuyết minh

Hình 11 Trình chiếu phim thuyết minh tự động

Trang 32

o Phim có phụ đề: ngoài nội dung phim, còn có nội dung phụ đề cần được hiển thị cho người dùng theo dõi Phần nội dung này thông thường được quản lý theo hai cách: ghép trực tiếp vào nội dung video, khi đó chúng ta vẫn chỉ có 1 file duy nhất; lưu tách biệt ra một file phụ đề, khi đó trình chơi video cần dựa theo thông tin file phụ đề để hiển thị chính xác

o Phim thuyết minh: giống như phim phụ đề, ngoài nội dung phim còn có phần thuyết minh lời thoại của các nhân vật trong phim và thường được ghép trực tiếp vào nội dung phim

Hình 11 mô tả giải pháp xem phim thuyết minh tự động sử dụng cách quản lý nội dung thuyết minh tách biệt với nội dung phim Cách quản lý này có được các lợi thế như sau:

o Cho phép cùng một nội dung phim có thể được chơi cùng với nhiều nội dung thuyết minh khác nhau

o Có thể tận dụng video ở các nguồn phim khác, khi đó ứng dụng chỉ cần quản lý các nội dung thuyết minh

o Người dùng có thể dễ dàng chuyển đổi giữa các nội dung thuyết minh cho phù hợp với sở thích

Tuy nhiên cách quản lý này cũng có các vấn đề phải giải quyết như:

o Kích cỡ dữ liệu lớn hơn: giải pháp ghép trực tiếp nội dung thuyết minh vào nội dung phim sẽ có kích cỡ nhỏ hơn

o Đồng bộ việc chơi nội dung thuyết minh và nội dung phim

Trang 33

31

3.3.2 Cơ chế đồng bộ phim và thuyết minh

Như đã đề cập ở trên, em lựa chọn phương thức trình chiếu phim là lưu trữ tách biệt phim và thuyết minh để tận dụng các ưu điểm của nó, trong phần này em sẽ đia sâu vào mô tả cơ chế đồng bộ trong khi trình chiếu phim và thuyết minh

Mỗi media player có các trạng thái chính như sau: idle, buffering, ready, ended; kết hợp với trạng thái điều khiển là phát nội dung hay không Tuy nhiên về mặt người dùng chúng ta cần thể hiện như đang phát một nội dung video duy nhất, nghĩa là cần đồng bộ trạng thái giữa video player và voiceover player như là một media player duy nhất, người dùng thường chỉ quan tâm các trạng thái playing, buffering/pause, ended Chúng ta sẽ xem xét một số cách đồng bộ trạng thái của video player và voiceover player

Bảng 4 Trạng thái đồng bộ dùng phép AND

Với cách đồng bộ này trạng thái tổng hợp rất chặt chẽ nhưng như bảng 4 đã thể hiện, các trạng thái không chứa nội dung (idle, ended, buffering) chiếm đa số 15/16, trạng thái phát nội dung chỉ có 1/16 điều này dễ dẫn đến việc người dùng không thưởng thức phim được Nguyên nhân dẫn đến trường hợp này thường là server chứa video/audio không ổn định, độ dài file audio không khớp video

Bảng 5 Trạng thái đồng bộ trễ

Trên thực tế, video phim sẽ mang yếu tố chủ thể, phần thuyết minh sẽ mang hơi hướng hỗ trợ nên em đã có điều chỉnh để có cách đồng bộ như Bảng 5 Việc sử dụng cách đồng bộ trễ này cho kết quả xem phim ít tốt hơi dùng phép AND (4/16 so với

Trang 35

33

CHƯƠNG 4: PHÁT TRIỂN ỨNG DỤNG

4.1 Công nghệ sử dụng

4.1.1 NodeJS

4.1.1.1 Giới thiệu NodeJS

NodeJS [1] là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên JavaScript Runtime của Chrome1 mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng Phần lõi bên dưới của Nodejs được viết hầu hết bằng ngôn ngữ C++ nên cho tốc độ xử lý và hiệu năng khá cao NodeJS tạo ra được các ứng dụng có tốc độ xử lý nhanh, thời gian thực NodeJS áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án khởi nghiệp (startup) nhanh nhất có thể

để giảm thời gian phải xây dựng các tính năng đã có sẵn cho ứng dụng

o Express hướng tới sự linh động, những gì cần thiết em sẽ tự thêm vào, không giống như những đối thủ như là Rails hay Django, hướng tới một cách cứng nhắc để xây dựng ứng dụng Bằng cách mở rộng các đặc tính của NodeJS, ExpressJS cung cấp các tính năng như middlewares (hàm xử lý trung gian), đơn giản hóa khả năng điều hướng của ứng dụng Phù hợp cho việc tạo API

dễ dàng mở rộng

o ExpressJS cung cấp những công cụ để xây dựng API một cách thuận tiện và

dễ mở rộng REST API [3] là một tiêu chuẩn dùng trong việc thết kế các API

Trang 36

34

cho các ứng dụng Hình thức giao tiếp phổ biến nhất là thông qua các yêu cầu HTTP Các yêu cầu HTTP có thể chứa các tham số, dữ liệu, trong các truy vấn của đường dẫn hay trong phần thân của yêu cầu

Nhược điểm:

o NodeJS là một khung đơn luồng, thực hiện lắng nghe các sự kiện và thực thi các hàm gọi lại đã đăng ký Điều này dễ dẫn tới việc thực hiện tất cả các mã ở hàm gọi lại này làm vướng víu mã và khó bảo trì trong tương lai

Tổ chức mã trong ExpressJS được biểu thị bằng các mẫu giúp mã của bạn dễ bảo trì hơn nên cần lưu ý tránh mã trở nên cồng kềnh, không nhất quán

4.1.1.3 Cơ sở dữ liệu – MongoDB

NoSQL là 1 dạng cơ sở dữ liệu mã nguồn mở và được viết tắt bởi: None-Relational SQL hay có nơi thường gọi là Not-Only SQL MongoDB [4] là một hệ quản trị cơ sở

dữ liệu mã nguồn mở thuộc NoSQL Nó được thiết kế theo kiểu hướng đối tượng và lưu trữ dữ liệu theo hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh Các bảng trong mongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ trên bảng không cần tuân theo một cấu trúc nhất định nào cả, điều này rất thích hợp để làm việc với dữ liệu lớn Bảng 6 mô

tả những thuật ngữ được dùng trong mongoDB:

Bảng 6 Thuật ngữ trong mongoDB và SQL

collection không phải định nghĩa các cột, các hàng hay kiểu dữ liệu trước

Table

giá trị, các document mongo thường kết hợp trong một tài liệu trong khi đó một row SQL thường phải tham khảo dữ liệu trong các bảng khác

Row

được thi hành qua lớp ứng dụng Trong khi Mongo

là schemaless, SQL định nghĩa một lược đồ thông qua định nghĩa bảng

Không có

Trang 37

Bảng 7 mô tả những kiểu dữ liệu đặc biệt trong mongoDB

Bảng 7 Kiểu dữ liệu đặc biệt trong MongoDB

Min/Max keys Kiểu dữ liệu này được sử dụng để so sánh một giá trị với các

phần tử BSON thấp nhất và cao nhất

vào

sách hoặc nhiều giá trị vào trong một key trong field MongoDB sử dụng lưu trữ dữ liệu dưới dạng document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau Tuy rằng cấu trúc của dữ liệu là linh hoạt nhưng đối tượng của nó được xác định rất rõ ràng Sử dụng bộ nhớ nội tại, nên truy vấn sẽ rất nhanh MongoDB không có các join nên rất dễ mở rộng,

và cũng góp phần tạo nên tốc độ truy vấn cực nhanh trên mongoDB Tuy nhiên MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận MongoDB sử dụng sẽ hao tốn tài nguyên của hệ thống nhiều hơn RDBMS Nhưng đến thời điểm hiện tại thì vấn đề này không còn là điều lo ngại nữa

4.1.2 Bảo mật API với Json web token – JWT

JSON Web Token [5] (JWT) là một tiêu chuẩn mở (RFC 7519 [5]) định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng JSON Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào "chữ ký" của nó Phần chữ ký của JWT sẽ được mã hóa lại bằng HMAC hoặc RSA Cấu trúc của JWT gồm 3 phần là header, payload và signature 3 phần được ngăn cách nhau bởi dấu chấm, tổng quát thì có dạng như sau: header.payload.signature

Ngày đăng: 21/02/2021, 13:56

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w