Tôi đang cố triển khai trình soạn thảo DraftJS làm nổi bật các từ trong phiên âm trong khi âm thanh được ghi của nó đang phát (loại như karaoke).Tạo "Karaoke" Loại Chức năng trong Bản nhápJS
Tôi nhận được dữ liệu ở định dạng này:
[
{
transcript: "This is the first block",
timestamps: [0, 1, 2.5, 3.2, 4.1, 5],
},
{
transcript: "This is the second block. Let's sync the audio with the words",
timestamps: [6, 7, 8.2, 9, 10, 11.3, 12, 13, 14, 15, 16, 17.2],
},
...
]
sau đó tôi lập bản đồ này đã nhận được dữ liệu để ContentBlocks
và khởi tạo của ContentState
với họ biên tập bằng cách sử dụng ContentState.createFromBlockArray(blocks)
Nó có vẻ như các "DraftJS" cách lưu trữ siêu dữ liệu dấu thời gian sẽ là tạo một Entity
cho mỗi từ có dấu thời gian tương ứng và sau đó quét qua currentContent
khi phát âm thanh và đánh dấu các thực thể cho đến thời gian đã trôi qua hiện tại. Nhưng tôi không chắc liệu đây có phải là cách thích hợp để làm điều này không, vì nó không có vẻ có hiệu quả đối với các phiên âm lớn.
Lưu ý: bảng điểm cần chỉnh sửa được trong khi vẫn duy trì chức năng karaoke này
Bất kỳ trợ giúp hoặc thảo luận nào được đánh giá cao!
Có lý do nào bạn cần lưu trữ dấu thời gian bên trong các thực thể draftjs hay một biến ngoài bên ngoài draftj không? Bằng cách đó, bạn sẽ chỉ cần sử dụng các thực thể để đánh dấu văn bản nào được đánh dấu so với văn bản nào không. – pixelman32
Có lý do cụ thể nào khiến bạn sử dụng Draftj không? Bạn đã xem xét [tùy chọn khác] (https://codepen.io/trongthanh/pen/jLsmt) ngoài Draftjs chưa? Có vẻ như đó có thể là một lựa chọn tốt hơn. Draftjs là một trình soạn thảo văn bản phong phú có nghĩa là lưu trữ trạng thái trình soạn thảo trên một tài liệu văn bản nhất định, vì vậy tôi đang đấu tranh để xem tại sao đây là công cụ lựa chọn, bạn có thể xây dựng được không? –
Để trả lời cả hai câu hỏi của bạn, chức năng "karaoke" là loại tính năng "phụ". Chức năng chính là có thể chỉnh sửa/đánh dấu/thao tác nội dung dưới dạng văn bản đa dạng thức. –