Tôi đang viết một phần mở rộng emacs để sử dụng với nhận dạng giọng nói và tôi đang tìm kiếm sự trợ giúp với một tính năng cụ thể. Một số từ mà trình nhận dạng giọng nói (Rồng) nhận ra luôn kém - không quan trọng bạn luyện nó bao nhiêu lần, nó sẽ chỉ nhận ra một số từ nhất định. Đồng thời thông thường khi bạn viết về một chủ đề hoặc khi viết mã, bạn sẽ sử dụng nhiều từ giống nhau nhiều lần.
Vì vậy, tôi đã viết một chế độ sử dụng lớp phủ để thay đổi cách hiển thị các từ trong bộ đệm. Nó lấy một chữ cái ngẫu nhiên trong từ, gạch chân nó trong một màu ngẫu nhiên và đặt một dấu phụ ngẫu nhiên (dấu, âm sắc, v.v.) trên đầu của nó. Đây là một ảnh chụp màn hình (có thể bạn sẽ cần phải phóng to để xem các dấu / gạch chân):
Sau đó, bạn có thể nói, "tóc p màu tím" và nó sẽ tìm từ có gạch dưới màu tím dưới 'a' với dấu phụ, trông giống như tóc và gõ từ đó cho bạn. Vì vậy, trong ảnh chụp màn hình ở trên nói rằng điều đó sẽ khiến emacs gõ "regrec-quote" cho bạn.
Ý tưởng là điều này cho phép bạn tham khảo bất kỳ từ nào bạn đã sử dụng trên màn hình bằng cách sử dụng một bộ từ hữu hạn mà bộ nhận dạng luôn nhận biết tốt.
Nó hoạt động khá tốt, ngoại trừ thỉnh thoảng có một vụ va chạm. Để làm cho nó để tôi có thể học cách liên tục tham chiếu các từ giống như cách tôi đang sử dụng byte từ hàm băm md5 của từ thay vì (random)
hoặc có một thuật toán gán các thay đổi để tránh va chạm. Tôi chỉ tìm thấy 6 màu dễ phân biệt (thật khó khi phần gạch chân chỉ rộng một ký tự và dày một pixel) và 3 dấu phụ dễ phân biệt (dễ phân biệt với nhau và cũng không thể nhầm lẫn với phần gạch chân ở trên dòng hoặc chồng chéo với phần gạch chân), nhìn thấy ở đầu nguồn ở trên.
Tôi cần nhiều cách hơn để thay đổi kết xuất để giảm tần suất va chạm. Lý tưởng nhất là sửa đổi kết xuất sẽ:
- Không được chói tai từ phần còn lại của văn bản. Điều này đã khiến tôi loại bỏ, ví dụ như thuộc tính video nghịch đảo.
- Không dễ bị nhầm lẫn với những thay đổi khác. Đường viền dễ bị nhầm với đường gạch chân trên dòng trước. Rất nhiều dấu phụ trông giống nhau trừ khi kích thước phông chữ của bạn là rất lớn.
- Được không gian gần nơi thay đổi khác. Ngay bây giờ một khi mắt tôi tìm thấy nhân vật nhắm mục tiêu, tất cả thông tin đều ở đó, điểm đánh dấu, gạch chân và chữ cái.
- Hoạt động độc đáo với phông chữ có chiều rộng cố định (cần để mã hóa) thể hiện chính xác các dấu phụ (tôi phải chuyển sang DejaVu Sans Mono từ Consolas để có các dấu được hiển thị chính xác)
- Làm việc trên các chữ cái bảng chữ cái Latin. Ví dụ, có các dấu kết hợp tiếng Ả Rập, nhưng chúng không kết hợp trên các ký tự bảng chữ cái Latinh.
- Không thay đổi màu chữ, vì nó đã được sử dụng để tô sáng cú pháp.
- Trên thực tế có thể thực hiện được trong emacs với emacs lisp;)
Có lẽ có những ký tự unicode đặc biệt kiểm soát kết xuất có thể bị lạm dụng để mở ra những khả năng mới? Hoặc một cách để làm dày gạch chân để tôi có thể dễ dàng phân biệt nhiều màu sắc hơn? Hoặc một số tính năng emacs tối nghĩa khác cho phép bạn hiển thị dấu trên đầu các ký tự bên cạnh unicode?
(char-to-string ?\uFEFF)
và cái còn lại là ký tự đích bị giảm kích thước để cả hai phù hợp. Một ý tưởng khác là sử dụng một cú đánh thẳng đứng (có sẵn trong một số phông chữ, nhưng không phải tất cả) tương tự như những gì được sử dụng trong thư việnvline.el
emacswiki.org/emacs/VlineMode