OpenAI의 Whisper를 활용하면 구어를 문자로 변환하는 데 매우 효과적인 수단임이 입증되었습니다. 그럼에도 불구하고 일부 사용자는 오디오 녹음을 텍스트로 변환하기 위해 특정 명령을 입력해야 하기 때문에 작동이 번거로울 수 있습니다. 그러나 자동 핫키를 구현하면 이러한 불편함을 줄일 수 있습니다.

자동 핫키의 기능을 활용하여 위스퍼와 같은 명령줄 애플리케이션을 위한 그래픽 사용자 인터페이스를 쉽게 구축할 수 있으며, 자동 핫키의 자동화 속성과 OpenAI의 위스퍼의 인공지능 기능을 통합하여 사용자 인터페이스 요소 뒤에 지능형 제어 시스템을 구현함으로써 개인화된 전사 프로그램을 만드는 과정을 효과적으로 시연할 수 있습니다.

Whisper 및 AutoHotkey의 기반 마련

멋진 스크립트를 만드는 것 이상의 광범위한 기능을 제공하는 AutoHotkey는 현재 이 기능을 활용하여 Whisper의 그래픽 사용자 인터페이스를 구축하려는 노력에서 알 수 있듯이 그 기능이 매우 다양합니다. 이 GUI를 활용하면 사용자는 수동 명령 입력 대신 간단한 버튼 클릭과 메뉴 선택을 통해 OpenAI의 최첨단 음성 인식 기술에 쉽게 액세스하고 사용할 수 있습니다.

튜토리얼에 제공된 지침을 완전히 이해하고 구현하려면 컴퓨터에 자동 핫키와 Whisper가 모두 설치되어 있어야 합니다.

방정식의 첫 번째 부분의 경우 공식 사이트에서 AutoHotkey를 다운로드 할 수 있습니다 그런 다음 설치 프로그램을 실행하고 제시된 단계를 따르십시오.

오래된 스크립팅 언어의 변형은 업데이트된 스크립팅 언어와 다른 구문을 사용하므로 반드시 사용해야 합니다. 이 특정 사례에서 입증된 숙련도는 최신 버전에 적용되지 않을 수 있습니다.

OpenAI의 Windows용 Whisper를 사용하여 음성을 텍스트로 변환하려면 여러 단계의 프로세스를 따라야 합니다. 초기 단계는 간단해 보일 수 있지만, 오디오 콘텐츠의 정확한 트랜스크립션을 위해서는 이를 올바르게 이해하고 실행하는 것이 중요합니다. 이후 단계에서는 기술 전문성과 지식이 필요한 고급 알고리즘과 소프트웨어 구성 요소를 효과적으로 활용해야 합니다. 그러나 적절한 지침과 리소스를 활용하면 누구나 이 작업을 성공적으로 수행하는 데 필요한 기술을 습득할 수 있습니다.

우리의 전략은 두 도구를 최대한 활용하는 것입니다.

이 과제는 금융 업계의 데이터 분석을 위해 설계된 소프트웨어 애플리케이션인 Whisper와 관련된 변수 및 값을 표시하기 위해 다양한 구성 요소를 포함하는 그래픽 사용자 인터페이스(GUI)를 만들어야 합니다.

사용자 인터페이스에서 데이터를 검색하고, 파일과 디렉터리를 선택한 다음, 이를 기능적인 Whisper 명령으로 컴파일할 수 있는 함수를 개발하는 작업입니다.

Whisper 명령을 실행하여 출력을 얻습니다.

앞서 언급한 운영 체제는 최신 버전의 Windows 11에서 음성 입력 시작을 포함하는 포괄적인 가이드에서 자세히 살펴본 음성 입력에 대한 고유한 기능을 제공합니다. 기본 제공 기능에도 불구하고 많은 사용자는 Whisper와 같은 타사 대체 기능이 약간 느리기는 하지만 정확도가 더 뛰어나다는 것을 알 수 있습니다.

맥락을 제공하기 위해, 저는 직업적으로 코더가 아니며, 본 작업은 이전에 고안된 솔루션을 수정한 것으로서 전적으로 저만의 활용을 위한 것임을 밝혀둡니다.

새 자동 핫키 스크립트 만드는 방법

초기 절차는 별도의 폴더 내에 이름 없는 스크립트 파일을 생성하여 향후 추가 파일 생성으로 이어질 수 있는 잠재적 수정 또는 확장 옵션을 남겨 둡니다.

⭐ 자주 사용하는 파일 관리자를 실행(또는 Windows 키 + E를 눌러 Windows 탐색기를 실행)하고 원하는 곳에 트랜스크립션 앱용 폴더를 만듭니다.

⭐ 창의 빈 곳을 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > 자동 단축키 스크립트를 선택하여 빈 스크립트 파일을 만듭니다.

⭐ 파일을 마우스 오른쪽 버튼으로 클릭하여 전체 컨텍스트 메뉴에 액세스하고 선호하는 코드 또는 텍스트 편집기로 열도록 선택합니다. Windows의 자체 메모장을 사용해도 됩니다.

⭐ “빈 스크립트”임에도 불구하고 AHK 파일은 이미 몇 가지 “내용”으로 미리 채워져 있습니다. 이는 데스크톱에서 작동하는 방식을 정의하는 유용한 자동 단축키 변수 및 플래그입니다. 이 변수들은 무시하고 그대로 두었다가 그 아래에 앞으로 입력할 모든 항목을 입력하세요.

이 글도 확인해 보세요:  Windows의 '이 장치가 다른 응용 프로그램에서 사용 중입니다'라는 오디오 오류를 수정하는 방법

Whisper의 플래그 알아보기

명령줄 앱의 GUI를 만들고 있으므로 프로젝트에서 사용할 주요 변수와 플래그에 대한 참조가 있으면 편리합니다. Whisper의 문서를 읽고 공식 Github 페이지 를 방문하여 터미널에서 실행하여 확인할 수 있습니다.

간결함과 명확성을 위해 이 프로젝트에서는 다음 용어가 사용되며, 각 용어는 세미콜론으로 시작하고 공백으로 시작하는 주석으로 스크립트에 포함할 것을 권장합니다.

 ; Whisper Flags:; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --model MODEL_TO_USE; --task TRANSCRIBE/TRANSLATE; --language EN/EL 

자동 핫키를 사용하여 GUI 만들기

스크립트가 명확하고 간결한 방식으로 작성된 것으로 보입니다.하지만 글의 세련미를 높이고 싶다면 “우리가 그랬던 것처럼”과 같은 구어체 표현을 자제하고 대신 “입증된 바와 같이”와 같이 좀 더 공식적인 표현을 사용하는 것이 좋습니다. 또한 “하지 마십시오”와 같은 축약어를 피하는 것도 글을 더욱 세련되게 보이게 할 수 있습니다. 마지막으로, 스크립트의 문맥에 따라 “굉장하다”와 같은 단어를 더 적절한 동의어로 대체하는 것도 고려해 보세요.

숨겨진 변수 설정하기

이 섹션에서는 그래픽 사용자 인터페이스에 포함할 만큼 빈번하지는 않지만 가까운 미래에 수정이 필요할 수 있는 특정 매개변수를 지정할 것입니다. 이를 위해 사용자는 “변수\_이름 = 변수의 내용 또는 값” 형식으로 구성된 한 줄의 텍스트로 각 변수의 이름을 해당 값과 함께 입력할 수 있습니다.

현재 이러한 노력으로 “txt”로 지정한 OutputFormat 변수를 설정했습니다. 또한 관련 실행 파일의 파일명으로 WhisperExecutable 변수를 표시했습니다. 이렇게 함으로써 향후 TXT 문서 대신 SRT 자막 파일을 생성하거나 Whisper를 업데이트하거나 다른 애플리케이션을 사용해야 하는 경우 스크립트 전체에 변경 사항을 분산시키지 않고 특정 위치에서 앞서 언급한 변수를 쉽게 수정할 수 있습니다.

 OutputFormat = txtWhisperExecutable = whisper 

사용자 옵션 설정하기

터미널 인터페이스에서 Whisper를 사용할 때 지정할 수 있는 옵션은 세 가지이며 다음과 같이 구성됩니다:

번역 또는 전사 작업에 종사하는 경우

오디오 파일의 언어가 지정되지 않았습니다.

사용할 언어 모델의 선택은 크기와 기능 등 다양한 요인에 따라 달라지며, 이는 출력 생성의 효율성과 생성된 결과의 정확성 모두에 영향을 미칠 수 있습니다.

역사를 통틀어 인간은 생각, 아이디어, 감정을 효과적으로 전달하기 위해 다양한 의사소통 방법을 활용해 왔습니다. 최근에는 기술의 발전과 함께 디지털 방식의 커뮤니케이션으로 크게 변화하고 있습니다.

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

앞서 언급한 고려 사항으로 인해 위스퍼의 선호 언어(영어/영문 또는 그리스어/엘), 모델 크기(소형, 기본, 중형, 대형) 및 작업의 성격(전사 또는 번역)을 선택할 수 있는 세 가지 드롭다운 메뉴를 스크립트에 통합해야 합니다.

 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|

옵션 뒤에 이중 파이프 기호(“|”)를 사용하면 해당 옵션을 미리 선택된 대안으로 지정할 수 있습니다.데모에서는 언어가 “en”으로 지정되어 있고 SelectedModel이 “small

위스퍼 안내 방법

위스퍼는 인공 지능에 의존하기 때문에 오디오 녹음 과정에 대한 완전한 권한을 행사하는 것은 불가능합니다. 알고리즘은 자체 기준에 따라 가장 적절한 작업 과정을 선택할 수 있는 권한을 보유합니다.

음성-텍스트 변환을 통해 사용자 입력을 받는 기능은 다른 인공지능 솔루션과 유사하지만, Whisper는 신중하게 구성된 프롬프트를 통해 전사 프로세스를 안내할 수도 있습니다.

특정 오디오 파일을 정확하게 전사하는 것과 관련하여 솔루션에 오류가 있었나요? 그렇다면 한 가지 가능한 조치는 Whisper의 “설명” 기능을 활용하여 사용된 특정 언어나 용어를 포함하여 오디오 파일의 콘텐츠에 대한 통찰력을 제공하는 것입니다. 이 프로세스를 용이하게 하기 위해 자동 단축키 텍스트 편집 필드를 통합하여 편의를 더하는 것이 도움이 될 수 있습니다.

이 글도 확인해 보세요:  ASUS의 스팀덱 경쟁 제품인 ROG Ally는 무엇인가요?

웹 페이지 내에 검색창을 통합하려면 양식 요소를 활용하고 ‘action’ 속성을 ‘검색’으로 설정하고 자바스크립트 참조를 위해 ‘id’ 속성을 지정할 수 있습니다. 그런 다음 사용자의 입력은 페이지에 표시되기 전에 처리를 위해 지정된 스크립트로 “onSubmit” 이벤트를 통해 전송됩니다.

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

명령 끝에 “#PromptText#”를 사용하면 자동 단축키 프로그램이 생성 중인 스크립트 내의 텍스트 상자 내에 “#PromptText#” 변수의 내용을 표시하도록 지시합니다. 이 명령은 스크립트 생성 프로세스 중에만 적용되며 스크립트의 기능에는 영향을 미치지 않습니다. 하지만 나중에 프롬프트를 저장하고 로드할 때 유용한 알림 역할을 합니다.

프롬프트 텍스트는 스크립트의 변수 섹션에 통합하여 미리 정해진 값을 할당할 수 있으며, 요구 사항에 맞게 적절히 수정할 수 있습니다. 예를 들어, “귀하의 이름”이라는 문구 대신 실제 이름을 삽입하여 프롬프트를 보다 개인화되고 개별 요구 사항과 관련성 있는 문구로 만들 수 있습니다.

 PromptText = Transcription of Your Name's notes 

동작 버튼 설정

자동화 소프트웨어와 보다 직접적이고 접근하기 쉬운 상호 작용 수단을 제공하여 사용자 경험을 향상시키기 때문에 필요한 모든 설정을 마친 후 파일, 폴더를 선택하고 Whisper를 실행할 때 버튼을 사용하는 것이 좋습니다.

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

문자 “v”로 시작하는 그래픽 사용자 인터페이스 구성 요소 내의 변수와 달리 함수 이름은 “(스크립트에서 이 위치로) 이동”하라는 지시문을 나타내는 “g”로 시작한다는 점에 유의하세요.

AHK 인터페이스에는 표준 옵션으로 사용되는 단독 버튼이 장착될 수 있으며, 이 버튼은 그래픽 사용자 인터페이스 내에서 아무 영역도 선택하지 않고 엔터 키를 누르면 작동하게 됩니다. 이 구성은 “확인” 버튼에서 볼 수 있듯이 좌표 및 기능 섹션에 “기본”이라는 레이블을 포함시킴으로써 이루어집니다.

 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

한 번의 클릭으로 세 개의 버튼을 정의합니다.

“파일 로드”라고 표시된 버튼을 클릭하여 활성화할 수 있으며, 그 결과 SelectFile 함수가 실행됩니다.

앞서 언급한 구성 요소는 “출력 폴더 선택”으로 지정되어 있으며 SelectFolder 함수의 실행을 트리거합니다.

기본 옵션으로 지정된 “확인”이라고 표시된 버튼을 클릭하면 ButtonSubmit 함수의 실행을 트리거합니다.

GUI 표시 방법

그래픽 사용자 인터페이스가 개발되었지만 이를 표시하고 구성 요소의 기능을 정의하는 지침이 자동 핫키에 전달되지 않았기 때문에 디스플레이에서 액세스할 수 없는 상태입니다.

Qt에서 창의 제목을 수정하려면 QMainWindow 클래스에서 제공하는 `setWindowTitle()` 메서드를 사용할 수 있습니다. 이 메서드는 창의 새 제목으로 설정할 문자열을 하나의 인자로 받습니다. 다음은 이 메서드를 사용하여 창의 제목을 변경하는 방법을 보여주는 코드 스니펫 예제입니다: “`python import sys PyQt5.QtWidgets에서 QApplication, QMainWindow를 임포트합니다. def main(): app = QApplication(sys.argv) win = QMainWindow() win.setWindowTitle(“내 창 제목”) win.show() sys.exit(app.exec_()) if __name__ == “__main__”: main() “` 이 예제에서는 먼저

 Gui, ShowReturn 

초기 지시문은 AutoHotkey에 그래픽 사용자 인터페이스를 표시하도록 지시하고, 후속 절은 지정된 섹션의 끝을 나타냅니다.

앱의 기능 및 기능

프로젝트의 그래픽 사용자 인터페이스 세그먼트는 성공적으로 완료되었지만, 관련 스크립트의 실행은 구성 내에서 정의되지 않은 함수가 언급되어 갑작스럽게 종료될 수 있습니다. 따라서 이러한 누락된 기능의 개발이 우선시되어야 합니다.

일반 영어로 번역하기: 웹 사이트에서 기술 전문 용어로 함수 1, 2, 3이라고 하는 세 가지 특정 작업을 수행해야 합니다.

이 글도 확인해 보세요:  동적 테마 앱으로 최고의 Bing 및 Windows 스포트라이트 배경화면을 얻는 방법

처리할 소스 파일을 선택합니다.

대화 내용을 저장할 디렉터리를 선택하세요.

필요한 모든 변수를 수집하여 실행할 수 있는 기능적인 Whisper 명령으로 공식화하는 스크립트를 만들 수 있습니다.

입력 파일 선택

그래픽 사용자 인터페이스에 해당 버튼을 추가할 때 이전에 “SelectFile”로 지정되었던 함수를 이하에서는 그렇게 지칭합니다.

 SelectFile:FileSelectFile, SelectedFileReturn 

자동 단축키의 필수 구성 요소인 FileSelectFile 함수는 사용자가 파일을 선택할 수 있는 기존 파일 대화 상자를 표시합니다. 선택한 파일의 경로는 스크립트 내의 SelectedFile 변수에 저장됩니다.

 MsgBox, %SelectedFile% 

사용자가 파일을 선택하면 선택한 파일 경로와 이름이 포함된 메시지 상자를 표시하는 것이 AHK 스크립트의 구현입니다. 이 기능은 디버깅 목적, 특히 파일 선택 버튼 또는 기능과 관련된 문제를 식별하는 데 효과적인 도구로 사용됩니다.

출력 폴더 선택

디렉터리를 선택하는 과정은 거의 동일하며, 명령어와 변수 지정만 변경되어 파일이 아닌 디렉터리를 처리하고 있음을 나타냅니다:

 SelectFolder:FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Return 

최종 함수

마지막 함수의 기능은 복잡할 것으로 예상됩니다. 확인 버튼과 연결된 이 작업은 그래픽 사용자 인터페이스에 표시된 모든 변수를 통합하여 관리 가능한 명령으로 변환한 다음 실행합니다.

함수의 시작 및 종료 지점을 설명하는 것부터 시작하겠습니다.

 ButtonSubmit:Return 

그래픽 사용자 인터페이스(GUI)의 모든 값을 수집하는 명령은 다음과 같습니다: “`scss def button_submit(): # … 여기에 다른 코드 … grab_values() # GUI에서 모든 값을 가져오는 함수

 Gui Submit, nohide 

이 코드는 “WhisperFlags”라는 새로운 명칭을 설정하고, 이후 화면 하단의 채팅 상자에 ‘/whisper ‘을 입력하여 사용자가 조용히 서로 대화할 수 있는 작업인 귓속말 명령의 플래그로 GUI의 모든 마지막 속성을 추가합니다.

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

자동 핫키 창이 표준 명령 프롬프트(CMD.exe)를 사용하여 WhisperExecutable 변수로 식별된 Whisper의 실행 파일을 실행하도록 지시하고, 그래픽 사용자 인터페이스에서 수집한 변수를 WhisperFlags 변수에 통합합니다.

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

기존 메시지 상자와 함께 보다 간단한 문제 해결을 용이하게 하기 위해 추가 메시지 상자 구현이 통합되었습니다.

 Clipboard = %WhisperExecutable% %WhisperFlags% 

본 문은 명령 프롬프트(CMD)로 전송될 다음 명령을 기록하는 것을 목표로 합니다. 따라서 요소가 흔들릴 때 AHK에 의해 주어진 명령뿐만 아니라 전체 명령도 나중에 참조할 수 있도록 클립보드에 보관됩니다.

스크립트를 작성하는 과정에서 프롬프트를 따옴표로 묶는 것을 소홀히 했습니다. 그 결과 Whisper가 프롬프트를 명령 집합으로 해석하려고 시도하여 명령이 실패했습니다.

테스트 및 최종 조정

기존 AI 트랜스크립션 기술과 함께 자동 핫키의 그래픽 사용자 인터페이스 생성 기능을 활용하여 트랜스크립션 애플리케이션을 성공적으로 개발했습니다.

관련 파일을 더블 클릭하여 스크립트를 실행하면 그래픽 사용자 인터페이스가 모니터에 시각적으로 나타날 것으로 예상됩니다.

위에 있는 드롭다운 메뉴를 사용하여 Whisper의 구성을 수정합니다.

요청된 프롬프트에 부적절한 언어가 포함되어 있어 번역할 수 없습니다.

“파일 로드” 버튼을 클릭한 후 장치에서 트랜스크립션할 오디오 파일을 선택하세요.

“출력 폴더 선택” 버튼을 클릭하고 대상을 지정하여 출력 파일의 원하는 위치를 선택하세요.

“확인” 버튼을 클릭하면 그래픽 사용자 인터페이스가 선택한 오디오 파일에서 이전에 구성한 Whisper 사용을 시작합니다. 그러면 파일의 대본이 지정된 폴더에 텍스트 문서로 저장됩니다.

프로그램의 모든 측면이 의도한 대로 작동하면 코드로 돌아가서 메시지 상자 및 디버그 인쇄 문과 같은 모든 진단 기능을 제거하거나 주석 처리(각 줄의 시작 부분에 세미콜론을 추가하여)하세요.

자동 핫키로 위스퍼를 더욱 발전시키다

값비싼 대체품을 구매하거나, 타사 서비스를 사용하거나, 복잡한 사용자 인터페이스를 탐색하거나, 명령줄 인터페이스를 통해 통신할 필요가 없습니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.