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 1B Ộ 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 2BỘ 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 31
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 42
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 53
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 64
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 75
4.6 Kết chương 70KẾT LUẬN 71DANH MỤC CÁC TÀI LIỆU THAM KHẢO 72
Trang 86
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 97
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 108 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 119
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 12ra 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 1311
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 14Dự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 15Việ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 1614
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 1715
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 1816
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 1917
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 2018
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 21gử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 222.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 233.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 2422
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 2523
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 2624
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 2725
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 2826
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 29Hì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 30Việ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 3129
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 32o 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 3331
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 3533
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 3634
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 37Bả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