Tin tức và phân tích của tất cả các thiết bị di động

Cách tạo ứng dụng phiên âm của riêng bạn Windows sử dụng Whisper và AutoHotkey

Whisper OpenAI là một trong những giải pháp chuyển giọng nói thành văn bản mạnh mẽ nhất hiện nay. Tuy nhiên, Whisper cũng có thể gây khó chịu khi sử dụng vì bạn phải gõ lệnh để chuyển tệp âm thanh thành văn bản. Nhưng tại sao lại phải làm vậy khi chúng ta đã có AutoHotkey?

Với AutoHotkey, chúng ta có thể dễ dàng tạo GUI cơ bản cho các ứng dụng dòng lệnh như Whisper. Hãy thực hiện và xem cách bạn có thể tạo ứng dụng phiên âm của riêng mình bằng cách kết hợp siêu năng lực tạo GUI của AutoHotkey với Whisper OpenAI là “bộ não” đằng sau các nút.

Chúng tôi đặt nền móng cho Whisper và AutoHotkey

Bạn có thể tạo các tập lệnh thú vị bằng AutoHotkey, nhưng đó không phải là tất cả những gì nó có thể làm. Trong dự án này, chúng tôi sẽ sử dụng AutoHotkey để tạo GUI cho Whisper. Điều này sẽ cho phép chúng tôi sử dụng công cụ nhận dạng giọng nói AI của OpenAI bằng cách nhấp vào nút và tùy chỉnh chức năng của nó bằng menu thay vì gõ lệnh.

Tuy nhiên, điều này có nghĩa là bạn phải cài đặt cả AutoHotkey và Whisper để theo dõi.

Đối với phần đầu tiên của phương trình, bạn có thể tải xuống AutoHotkey từ trang web chính thức, sau đó chạy trình cài đặt của nó và làm theo các bước được trình bày.

Lưu ý rằng chúng tôi sẽ sử dụng phiên bản “v1” cũ hơn của ngôn ngữ tập lệnh chứ không phải phiên bản v2 mới. Điều này quan trọng vì hai phiên bản sử dụng cú pháp hơi khác nhau. Những gì chúng ta thấy ở đây có thể không hoạt động nếu bạn đang sử dụng phiên bản v2.

Phần thứ hai phức tạp hơn, nhưng bạn có thể tìm hiểu cách thực hiện bằng cách xem bài viết của chúng tôi về cách chuyển giọng nói thành văn bản bằng Whisper của OpenAI dành cho Windows.

Sau khi cài đặt cả hai, kế hoạch hành động của chúng tôi như sau:

  • Tạo GUI có các thành phần cho các biến và giá trị Whisper.
  • Tạo các hàm để tìm nạp các giá trị từ giao diện, chọn tệp và thư mục cũng như tập hợp mọi thứ thành lệnh Whisper hữu ích.
  • Chạy lệnh Whisper để nhận kết quả.
  • Tất nhiên, bạn luôn có thể sử dụng tính năng hỗ trợ gõ giọng nói tích hợp của hệ thống Windowsnhư chúng tôi đã thấy trong bài viết về cách nhập liệu bằng giọng nói trên hệ thống của bạn Windows 11. Tuy nhiên, như bạn sẽ thấy khi sử dụng nó, thì thầm chính xác hơn nhiều (nhưng cũng chậm hơn).

    Từ quan điểm cá nhân hơn, tôi nên làm rõ rằng tôi không phải là nhà phát triển và dự án này là sự “kết hợp” của giải pháp tôi đã tạo ra để sử dụng cho riêng mình.

    Cách tạo tập lệnh AutoHotkey mới

    Bước đầu tiên là tạo một tệp script trống mới. Giữ nó trong thư mục riêng trong trường hợp bạn quyết định chỉnh sửa hoặc xây dựng dựa trên nó bằng cách tạo thêm tệp.

  • Khởi chạy trình quản lý tệp yêu thích của bạn (hoặc nhấn phím Windows +E để khởi động Explorer Windows) và tạo một thư mục cho ứng dụng phiên âm của bạn ở bất cứ đâu.
  • Nhấp chuột phải vào khoảng trống trong cửa sổ và chọn Mới > Tập lệnh AutoHotkey để tạo tệp tập lệnh trống.
  • Shift + nhấp chuột phải vào tệp để truy cập menu ngữ cảnh đầy đủ và chọn mở nó bằng mã hoặc trình soạn thảo văn bản yêu thích của bạn. Sổ ghi chép của riêng bạn Windows đủ.
  • Mặc dù là một “tập lệnh trống”, tệp AHK của bạn sẽ được điền sẵn một số “nội dung”. Đây là các biến và cờ AutoHotkey hữu ích để xác định cách nó hoạt động trên máy tính để bàn. Hãy bỏ qua chúng, để nguyên như vậy và viết toàn bộ tương lai của bạn dưới đó.
  • Làm quen với cờ Whisper

    Vì chúng ta đang tạo GUI cho một ứng dụng dòng lệnh nên việc tham chiếu đến các biến và cờ chính của nó mà chúng ta sẽ sử dụng trong dự án của mình sẽ rất hữu ích. Bạn có thể kiểm tra chúng bằng cách đọc tài liệu Whisper, truy cập trang Github chính thức của nó và chạy nó trong terminal của bạn.

    Chúng tôi sẽ liệt kê những cái chúng tôi sẽ sử dụng trong dự án này để thuận tiện. Chúng tôi khuyên bạn nên thêm chúng vào tập lệnh dưới dạng nhận xét (trên các dòng riêng biệt, mỗi dòng bắt đầu bằng “;” theo sau là dấu cách).

     ; Whisper Flags:;  

    Tạo GUI bằng AutoHotkey

    Chúng tôi khuyên bạn nên chia tập lệnh thành các phần bằng cách sử dụng nhận xét như chúng tôi đã làm để giữ mọi thứ ngăn nắp. Chúng ta sẽ bắt đầu bằng việc xác định một số biến, chuyển sang GUI thực tế và kết thúc bằng việc xác định các chức năng của nó.

    Đặt biến ẩn

    Chúng ta sẽ bắt đầu với phần xác định các biến mà chúng ta có thể muốn thay đổi trong tương lai, nhưng không thường xuyên đến mức chúng ta muốn hiển thị chúng thông qua GUI, khiến nó quá phức tạp. Bạn có thể gõ “variable_name = nội dung hoặc giá trị biến” với một cặp biến và giá trị trên mỗi dòng.

    Trong dự án này, chúng tôi đã xác định một biến OutputFormat mà chúng tôi đặt thành “txt” và một biến WhisperExecutable chứa tên của tệp thực thi Whisper. Bằng cách này, nếu trong tương lai chúng ta muốn sử dụng giải pháp tương tự để tạo tệp phụ đề SRT thay vì tài liệu TXT hoặc nâng cấp Whisper/chuyển sang một ứng dụng thay thế, chúng ta có thể điều chỉnh giá trị của các biến này ở một nơi này thay vì toàn bộ kịch bản.

     OutputFormat = txtWhisperExecutable = whisper 

    Định cấu hình tùy chọn người dùng

    Khi sử dụng Whisper trên dòng lệnh, ba cờ của nó cho phép bạn xác định:

    • Nếu bạn đang dịch hoặc phiên âm
    • Ngôn ngữ của tập tin âm thanh
    • Mô hình ngôn ngữ bạn muốn sử dụng (có sẵn các kích thước khác nhau, mỗi kích thước có tác động đến hiệu suất và chất lượng của kết quả).

    Cách dễ nhất để cung cấp chức năng tương tự với GUI là thông qua các danh sách thả xuống đã được thử và kiểm tra. Cú pháp để thêm danh sách thả xuống vào GUI AutoHotkey như sau:

     Gui, Add, DropDownList, xPosition yPosition wWidth hHeight vVariable_that_will_hold_selected_value, optionA|optionB|default_optionC||optionD| 

    Dựa vào đó, hãy thêm ba danh sách thả xuống vào tập lệnh của chúng ta để chọn ngôn ngữ Whisper (giữa tiếng Anh/en và tiếng Hy Lạp/el), mô hình (nhỏ, cơ bản, nhỏ, trung bình, lớn) và loại tác vụ (bảng ghi hoặc bản dịch).

     Gui, Add, DropDownList, x5 y5 w165 h50 vSelectedLanguage, en||el
    Gui, Add, DropDownList, x175 y5 w165 h100 vSelectedModel, tiny|base|small||medium|large|
    Gui, Add, DropDownList, x345 y5 w165 h100 vTaskType, transcribe||translate|

    Để đặt một tùy chọn làm lựa chọn mặc định, hãy sử dụng dấu gạch ngang kép (“|”) sau nó. Như bạn có thể thấy, trong ví dụ của chúng tôi, chúng tôi đặt ngôn ngữ của mình thành en, SelectedModel thành nhỏ và TaskType thành bản ghi.

    Làm thế nào để quản lý một lời thì thầm

    Vì Whisper được hỗ trợ bởi AI nên không có cách nào có thể kiểm soát tuyệt đối cách Whisper phiên âm âm thanh. Anh ta có thể chọn những gì anh ta cho là tối ưu.

    Tuy nhiên, giống như các giải pháp AI khác, Whisper có thể chấp nhận dữ liệu đầu vào của người dùng. Bằng cách tạo lời nhắc, bạn có thể “hướng dẫn” việc chép lại âm thanh.

    Có phải giải pháp chúng tôi đang tạo không phiên âm chính xác không? Bạn có thể thử “giải thích” cho Whisper nội dung của tệp giọng nói, bao gồm cú pháp của các từ, từ viết tắt và cụm từ trong lời nhắc khi bạn muốn chúng xuất hiện trong bản ghi. Để thực hiện việc này, chúng tôi sẽ thêm hộp chỉnh sửa văn bản AutoHotkey.

    Cú pháp không quá khác biệt so với cú pháp chúng tôi đã sử dụng để thêm danh sách thả xuống ở trên:

     Gui, Add, Edit, x5 w505 h400 vPromptText, %PromptText% 

    “%PromptText%” ở cuối “yêu cầu” AHK hiển thị nội dung của Nhắc văn bản (nếu nó đã được gán giá trị) trong hộp văn bản. Nó sẽ không hiển thị bất cứ điều gì trong tập lệnh mà chúng tôi đang tạo nhưng hãy sử dụng nó làm trình giữ chỗ khi cuối cùng bạn điều chỉnh tập lệnh trong tương lai để lưu và tải lời nhắc!

    Bạn có muốn gán một giá trị được xác định trước cho biến NhắcText không? Thêm nội dung như thế này vào phần Biến tập lệnh. Hãy chắc chắn thay thế “tên của bạn” bằng tên thật của bạn.

     PromptText = Transcription of Your Name's notes 

    Định cấu hình các nút hành động

    Sử dụng các nút để chọn tệp, thư mục và khởi chạy Whisper sau khi mọi thứ đã được thiết lập. Bạn có thể thêm các nút vào giao diện do AHK tạo bằng cách sử dụng như sau:

     Gui, Add, Button, xPosition yPosition wWidth hHeight gFunction_To_Perform, Button Text 

    Lưu ý rằng không giống như các biến trong thành phần GUI, bắt đầu bằng “v”, tên hàm bắt đầu bằng “g”, nghĩa là “Đi (đến vị trí này trong tập lệnh)”.

    Nút UI duy nhất của AHK cũng có thể được coi là “mặc định”, nút này sẽ kích hoạt nếu bạn không nhấp vào bất kỳ đâu trong GUI và nhấn Enter. Điều này được xác định bằng cách thêm “mặc định” vào phần tọa độ và chức năng như bạn sẽ thấy trong nút “OK” của chúng tôi:

     Gui, Add, Button, x5 w505 h50 gSelectFile, Load FileGui, Add, Button, x5 w505 h50 gSelectFolder, Choose Output Folder
    ​​​​​​​Gui, Add, Button, Default x5 w505 h50 gButtonSubmit, OK

    Với ý nghĩ trên, chúng tôi xác định ba nút:

    • Một nhãn có nhãn “Tải tệp lên” sẽ chạy chức năng Chọn tệp khi được nhấp vào.
    • Một nhãn có nhãn “Chọn thư mục đầu ra” sẽ chạy chức năng SelectFolder.
    • Một nhãn có nhãn “OK”, được chọn theo mặc định, “gọi” hàm ButtonSubmit.

    Cách hiển thị GUI của bạn

    GUI của chúng tôi đã sẵn sàng, nhưng nó sẽ không xuất hiện trên màn hình của chúng tôi vì chúng tôi chưa “yêu cầu” AutoHotkey hiển thị nó hoặc mỗi nút sẽ làm gì.

    Để thực hiện việc này, hãy thêm hai dòng sau bên dưới dòng xác định GUI của bạn:

     Gui, ShowReturn 

    Dòng đầu tiên “yêu cầu” AHK hiển thị cửa sổ GUI, trong khi dòng thứ hai đánh dấu sự kết thúc của phần.

    Các tính năng và chức năng của ứng dụng của chúng tôi

    Mặc dù chúng ta đã hoàn thành phần GUI nhưng nếu bạn cố chạy tập lệnh thì nó sẽ bị lỗi. Đó là bởi vì chúng ta đang đề cập đến những hàm không tồn tại. Vì vậy, bước tiếp theo của chúng ta là tạo các hàm này.

    Ba tính năng chúng tôi muốn là:

    • Chọn một tập tin đầu vào.
    • Chọn thư mục đầu ra nơi tệp sao chép sẽ được lưu trữ.
    • Tạo một lệnh “gấp” tất cả các biến thành một lệnh Whisper hữu ích, tương tự như những gì chúng ta tự gõ vào terminal rồi chạy.

    Lựa chọn tập tin đầu vào

    Hàm đầu tiên chúng tôi gọi là “SelectFile” khi thêm nút của nó vào GUI là:

     SelectFile:FileSelectFile, SelectedFileReturn 

    FileSelectFile là một chức năng AutoHotkey hiển thị một trình yêu cầu tệp thông thường, cho phép người dùng chọn một tệp. SelectedFile là một biến trong tập lệnh của chúng tôi có chức năng “lưu trữ” đường dẫn đến tệp do người dùng chọn.

    Tuy nhiên, như bạn có thể thấy trong ảnh chụp màn hình, chúng tôi cũng đã thêm dòng sau ngay phía trên phần cuối của hàm “return”:

     MsgBox, %SelectedFile% 

    Điều này sẽ khiến AHK hiển thị hộp thông báo có tệp đã chọn khi bạn chọn nó, điều này rất hữu ích khi khắc phục sự cố tập lệnh. Nếu hộp thông báo này hiển thị đường dẫn và tên của tệp đã chọn thì đó không phải là nút hoặc chức năng chọn tệp cần được sửa chữa.

    Lựa chọn thư mục đầu ra

    Chức năng chọn thư mục gần như giống hệt nhau, chỉ có tên lệnh và biến thay đổi để cho thấy rằng chúng ta đang xử lý các thư mục thay vì tệp:

     SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return 

    chức năng cuối cùng

    Chức năng cuối cùng sẽ phức tạp nhất. Được ánh xạ tới nút OK, nó sẽ “thu thập” tất cả các giá trị biến từ GUI, biến nó thành một lệnh có thể sử dụng được và sau đó chạy nó.

    Chúng ta bắt đầu bằng cách chỉ định điểm bắt đầu và kết thúc của hàm:

     ButtonSubmit:Return 

    Để “lấy” tất cả các giá trị GUI, hãy thêm dòng sau vào bên dưới dòng ButtonSubmit:

     Gui Submit, nohide 

    Dòng sau tạo một biến mới gọi là “WhisperFlags”. Sau đó, nó thêm tất cả các biến GUI vào đó làm cờ cho lệnh Whisper.

     WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%SelectedFolder%" "%SelectedFile%" 

    Sau đó, chúng tôi sẽ “yêu cầu” AHK sử dụng thiết bị đầu cuối mặc định (CMD.exe) để chạy tệp thực thi Whisper (được xác định bằng biến WhisperExecutable) với các biến GUI (hiện được “đối chiếu” thành một biến WhisperFlags duy nhất).

     RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags% 

    Để khắc phục sự cố dễ dàng hơn nữa, chúng tôi cũng đã thêm hộp thư như trước nhưng cũng thêm dòng sau:

     Clipboard = %WhisperExecutable% %WhisperFlags% 

    Thao tác này sẽ sao chép lệnh hoàn chỉnh được cấp cho CMD vào bảng tạm. Vì vậy, nếu có sự cố xảy ra, thay vì chỉ nhìn thấy lệnh trong một trong các hộp thông báo của AHK, bạn cũng sẽ thấy lệnh đó trong khay nhớ tạm của mình.

    Mở một thiết bị đầu cuối, dán lệnh từ bảng ghi tạm và kiểm tra các lỗi bật lên để xác định các vấn đề tiềm ẩn.

    Ví dụ, khi làm việc với một tập lệnh, ban đầu tôi quên đặt lời nhắc trong dấu ngoặc kép. Do đó, lệnh không thành công vì Whisper đã cố phân tích lời nhắc dưới dạng cờ.

    Kiểm tra và sửa lỗi cuối cùng

    Vậy là xong – chúng tôi vừa xây dựng một ứng dụng phiên âm bằng khả năng tạo GUI của AutoHotkey và giải pháp phiên âm AI sẵn sàng sử dụng.

    Hãy thử chạy tập lệnh (nhấp đúp chuột vào tập tin của nó) và GUI sẽ xuất hiện trên màn hình.

    • Thay đổi cài đặt Whisper của bạn bằng danh sách thả xuống ở trên cùng.
    • Nhập mô tả ngắn gọn về bản ghi (và một số thuật ngữ) vào trường Lời nhắc.
    • Nhấp vào nút Tải lên tệp và chọn tệp âm thanh bạn muốn phiên âm.
    • Nhấp vào nút Chọn Thư mục Đầu ra và chọn nơi lưu trữ tệp văn bản đã tạo.
    • Bấm OK để chạy Whisper, được cấu hình bởi GUI, trên tệp âm thanh đã chọn và lưu bản ghi của nó dưới dạng tệp văn bản trong thư mục đã chọn.

    Nếu mọi thứ đều ổn, hãy quay lại tập lệnh và xóa hoặc nhận xét (bằng cách thêm “;” ở đầu) tất cả các tính năng khắc phục sự cố (hộp thông báo và dòng sao chép bảng tạm).

    Phát triển hơn nữa Whisper với AutoHotkey

    Bằng cách đặt đúng các mặc định của GUI và có thể thêm lời nhắc chung, bạn có thể biến Whisper thành giải pháp sao chép chỉ bằng ba cú nhấp chuột: không phải trả tiền cho các giải pháp thương mại, dịch vụ của bên thứ ba, xử lý các giao diện phức tạp hoặc nhập vào thiết bị đầu cuối.

    Mục lục