Blah S Peech-to- T Ext는 키보드 단축키와 Whisper.cpp와 함께 Linux의 Speech에서 BLA (H) ST 입력 텍스트를 제공 할 수 있습니다. 마이크를 발사하고 고품질의 다국어 음성 인식을 오프라인으로 수행하십시오. 로컬 LLMS로 확장되면 Linux 컴퓨터와 대화하는 강력한 도구가됩니다.
Blahst는 아마도 Whisper.cpp 위에 앉아 Linux의 가장 희박한 속삭임 기반 Speech-to-Text 입력 도구 일 것입니다.
wsiml 스크립트로 명령 줄에서 번역 할 수 있습니다.최적화 된 최적화 된 명령 줄 도구를 사용하면 음성 텍스트 입력이 매우 빠르게 발생합니다. 다음은 로컬 LLM 기능 (AI Assistant, Translator, Scheduller, Testing Stage의 CLI 가이드)을 사용하여 데모 비디오 (오디오를 음소거 해제)입니다.
위의 비디오에서 오디오는 스크린 캐스팅을 분석하는 시스템으로 시작합니다 (Gnome 확장 "Voluble"은 모든 Gnome 데스크톱 알림을 전혀 다루고 여러 번의 음성 입력/인식이 뒤 따릅니다. 마지막에는 Blahst (Whisper.cpp)가 전사 한 텍스트를 사용하여 LLM 프롬프트로 형식화하고이를 중국어 변환을 텍스트로 반환하고 신경 TTS를 사용하여 말하는 지역의 다국어 LLM (llama.cpp 또는 llamafile)으로 보내는 업 커밋 "AI 함수"중 하나입니다. 린 실행 파일로 명령 라인에서 이것을 조정하는 시스템은 놀랍게도 시스템을 놀라게합니다 (비디오에서 PC가 땀이 거의 부러지지 않는다는 것을 알 수 있습니다. 온도가 낮은 상태로 유지됩니다.)
위의 비디오 (utute please)는 사용자가 일시 중지가 길어질 때까지 음성 입력을 종료 할 때까지 WSI에서 루프로 전사하기 위해 WSI에서 수정 된 Blooper의 사용을 보여줍니다 (사전 설정). XDOTOOL (또는 Wayland 사용자를위한 YDOTOOL)을 사용하면 텍스트가 일시 정지 (또는 핫키 인터럽트)에 자동으로 붙여 넣습니다. 위의 비디오의 경우, 연설은 합성 음성으로 생성되어 마이크에 의해 수집됩니다. 이를 통해 텍스트를 동시에 편집 할 수 있습니다 (멀티 태스커, 집에서 시도하지 마십시오 :). 결국, 상단 바 마이크 아이콘이 사라져서 프로그램 종료를 나타냅니다. 스크린 캐스트 유틸리티가 아이콘에 대한 주장이 있기 때문에 비디오에서는 발생하지 않습니다.
Blahst와의 아이디어는 몽골 공습과 동등한 UI-free 소프트웨어가되는 것입니다. CPU/GPU 동작의 짧고 강력한 버스트는 클립 보드와 상대 데스크톱 평화에 텍스트 추적만으로 완전히 사라졌습니다. 한 쌍의 핫키를 사용하여 마이크에서 녹음을 시작하고 중지하고 기록 된 연설을 Whisper.cpp [Server]에 보내는 텍스트를 클립 보드에 덤프하십시오 (그 전에 로컬 LLM으로 전달하지 않는 한). 대부분의 Linux 데스크탑 환경 및 배포판에서 작동 해야하는 보편적 인 접근 방식.
작업은 스크립트 중 하나에 의해 수행됩니다.
음성 인식은 Linux 시스템에서 사전 컴파일되거나 LAN 또는 LocalHost에서 서버 인스턴스로 사용할 수있는 Whisper.cpp에 의해 수행됩니다. 대안 적으로, 당신은 이제 llamafile 저장소의 일부인 실제로 휴대용 실행 파일 (내장 된 속삭임 모델 포함)을 다운로드하여 사용하도록 선택할 수 있습니다.
음성 입력이 핫키와 함께 시작되면, 마이크 표시기가 상단 막대에 나타나고 (적어도 그놈에서) 기록 기간 동안 표시됩니다 (다른 핫키와 상호 작용할 수 있음). 상단 막대에서 마이크 아이콘의 사라짐은 완성을 나타내고 전사 된 텍스트는 클립 보드에서 붙여 넣을 수 있습니다. 느린 시스템에서는 마이크 아이콘이 사라지고 전사 시간이 길어 텍스트가 클립 보드에 도달하기 전에 약간의 지연이있을 수 있습니다. 내 컴퓨터에서 Whisper.cpp Server API를 통해, 평균 텍스트의 평균 단락에 대해서는 Local Whisper.cpp의 경우 300ms (300ms) 미만입니다.
예를 들어 표준 CTRL+V 와 함께 키보드 전용 작동의 경우 표준 클립 보드는 X11 및 Wayland ( wsi 또는 wsiml )에서 사용되며 wsi -p (또는 wsiml -p )는 기본 판매를 사용하고 텍스트는 중간 마우스 버튼으로 붙여 넣습니다). 왼쪽 페이스트의 경우 오른손으로 트리거 된 핫키로 음성 녹음을 강등 할 수 있습니다. ** 예를 들어 숫자 키패드에서 미사용 "+"(시작) 및 "삽입"(녹음 중지) 키를 설정했습니다.


install-wsi 대부분의 사람들).면책 조항 : 저자는이 문서의 내용과 상호 작용하여 발생할 수 있거나 발생할 수있는 결과에 대한 신용을 받거나 책임을지지 않습니다. 제안 된 조치 및 자동화 (예 : 설치 위치 등)는 단지 제안 일 뿐이며 저자의 선택과 의견을 기반으로합니다. 모든 사람의 취향이나 특정 상황에 맞지 않을 수 있으므로 필요에 따라 조정하십시오.
선택한 폴더에서 Blahst 저장소를 복제 한 다음 아래에서 설치 방법을 선택하십시오.
git clone https://github.com/QuantiusBenignus/BlahST.git
cd ./BlahST
(Whisper.cpp가 설치되었다고 가정하고 클로닝 된 Whisper.cpp repo에서 'make'와 함께 컴파일 된 "메인"실행 파일. 전제 조건 섹션 참조)
cd $HOME/.local/bin; chmod +x wsi wsiAI wsiml
$HOME/.local/bin/ ($ 경로의 일부)에서 작성하십시오. ln -s /full/path/to/whisper.cpp/main $HOME/.local/bin/transcribe
전사가 $ 경로에 있지 않은 경우 WSI 에서 호출을 편집하여 절대 경로를 포함 시키거나 위치를 $ 경로 변수에 추가하십시오. 그렇지 않으면 스크립트가 실패합니다. Whisper.cpp를 컴파일하지 않으려면 또는 그 외에도 적절한 WhisperFile의 실행 파일을 다운로드하여 설정하십시오.
cd $HOME/.local/bin
wget https://huggingface.co/Mozilla/whisperfile/resolve/main/whisper-tiny.en.llamafile
chmod +x whisper-tiny.en.llamafile
wsi , wsiAI , wsiml 또는 blooper 스크립트 내부에는 처음에는 "사용자 구성 블록" 이라는 명확하게 표시된 섹션이 있으며, 여기서 모든 사용자 구성 가능한 변수가 수집되었습니다. 대부분은 그대로 남을 수 있지만 중요한 것은 전사 중에 사용하려는 (또는 Whisper.CPP 서버의 IP 및 포트 번호)의 위치입니다. WhisperFile을 사용하는 경우, WhisperFile 변수를 이전에 다운로드 한 실행 파일 WhisperFile의 파일 이름으로 설정하십시오. 즉, WHISPERFILE=whisper-tiny.en.llamafile ($ 경로에 있어야 함).
수동 및 자동 설치에 대해 음성 입력을 시작하고 중지하려면
/home/yourusername/.local/bin/wsi -p 에서 클립 보드를 사용하기 위해 .../wsi 로 변경합니다.wsi wsiml 로 바꾸고 WhisperFile을 사용하는 경우 -w 플래그, 즉 /home/yourusername/.local/bin/wsi -w 추가하십시오). 마지막으로 LLM 기능을 샘플링하려면 wsi wsiAI 로 바꾸십시오.Orchestrator 스크립트에는 Sox (REC) 호출에 침묵 감지 필터가 있으며 2 초의 침묵으로 녹음을 중지합니다 (최상의 경우). 또한, 기다리지 않기를 원하거나 침묵 감지 임계 값에 문제가있는 경우 :
주요 조합으로 녹음을 수동으로 수동으로 삽입 할 수있는 사람들을 위해, 큰 해킹의 정신으로 시스템 내장 기능을 사용할 것입니다.
pkill --signal 2 rec그 간단합니다. 새로운 키 바인딩이 이미 다른 것을 위해 설정되지 않았는지 확인하십시오. 이제 스크립트가 음성을 녹음 할 때 새로운 키 콤보로 중지 될 수 있으며 전사가 즉시 시작됩니다.
.../wsi 사용하려면 /home/yourusername/.local/bin/wsi -p 의 이름과 명령을 입력하십시오.wsi wsiml 로 바꾸고 WhisperFile을 사용하는 경우 -w 플래그, 즉 /home/yourusername/.local/bin/wsi -w 추가하십시오). 마지막으로 LLM 기능을 샘플링하려면 wsi wsiAI 로 바꾸십시오.pkill --signal 2 rec 과 유사하게 수행해야합니다./home/yourusername/.local/bin/wsi 또는 .../wsi -pwsi wsiml 로 바꾸고 WhisperFile을 사용하는 경우 -w 플래그, 즉 /home/yourusername/.local/bin/wsi -w 추가하십시오). 마지막으로 LLM 기능을 샘플링하려면 wsi wsiAI 로 바꾸십시오.pkill --signal 2 rec 과 유사하게 수행해야합니다.시스템에 설치된 버전에 따라 위의 단계에 약간의 변형이있을 수 있습니다. Mate, Cinnamon, LXQT, Deepin 등과 같은 다른 많은 환경의 경우 단계는 위의 예와 다소 유사해야합니다. 시스템 데스크톱 환경에 대한 문서를 참조하십시오.
Hotkey Combo의 프레스에서 wsi -p 스크립트는 연설 (핫키 또는 침묵 감지로 중지)을 녹음하고, 현지인 Whisper.cpp의 사본을 사용하고, 전사 된 텍스트를 X11 또는 Wayland의 기본 선택으로 보냅니다. 그런 다음해야 할 일은 원하는 곳에서 중간 마우스 버튼으로 붙여 넣는 것입니다. (오른손으로 마우스를 들고있는 사람들의 경우, 왼손에 대한 핫키를 기록하는 음성 녹음이 의미가 있습니다.)
플래그가없는 wsi 사용하는 경우 (접근 방식이 공존 할 수 있고, 다른 핫키 세트를 설정할 수 있음), 전사 된 텍스트는 X11 또는 Wayland의 클립 보드 (1 차 선택이 아님)로 전송됩니다. 그런 다음 CTRL+V (Gnome 터미널의 경우 CTRL+SHIFT+V ) 또는 평소와 같이 Keys SHIFT+INSert 키와 함께 붙여 넣기가 발생합니다. (대부분의 사람들에게 오른손 핫키는 잘 작동합니다.)
wsi -n (자체 핫키로 선택된)으로 네트워크를 전사하는 경우, 스크립트는 녹음 된 오디오를 실행중인 Whisper.CPP 서버 (LAN 또는 localhost )로 올바르게 설정합니다. 그런 다음 텍스트 응답을 수집하고 CTRL+V (Gnome 터미널의 경우 CTRL+SHIFT+V ) 또는 SHIFT+INSert 키 (중간 마우스 버튼으로 붙여 넣기 위해 wsi -n -p 대신 사용)로 붙여 넣을 수 있습니다.
컴파일 된 Whisper.cpp 대신 WhisperFile을 사용하는 경우 wsi -w ... 로 호출하면 스크립트는 임베디드 Whisper 모델과 함께 실제로 휴대용 실행 파일을 사용합니다.
다국어 사용자의 경우 WSI의 기능 외에도 wsiml 언어를 지정할 수있는 기능 (예 : -l fr 및 -t 로 영어로 번역 할 수있는 옵션을 제공합니다. 사용자는 원칙적으로 여러 언어에 여러 언어에 여러 핫키를 할당 할 수 있습니다. 예를 들어, 두 개의 추가 핫키를 설정할 수 있습니다. 하나는 전사 용으로, 다른 하나는 wsiml -l fr 및 wsiml -l fr -t 명령을 할당하여 프랑스어로 번역하기위한 것입니다.
실험 : 사용자는 제공된 스크립트 Blooper를 연속 자동 연설-텍스트 입력에 사용하여 CTRL+V를 누르거나 중간 마우스 버튼을 클릭 할 필요가 없습니다. 위의 두 번째 비디오에서 보여줍니다. 클립 보드는 기본적으로 사용되며 텍스트는 키보드 카렛 아래에서 자동으로 표시되지만 원칙적으로 기본 선택을 대신 설정할 수 있으며, 중간 마우스 버튼 클릭이 시뮬레이션되고 텍스트를 사용할 수있는 시간에 마우스 포인터의 현재 위치에 붙여 넣습니다. 이것은 물리적 환경에 따라 침묵 탐지에 의존합니다. 시끄러운 환경에서는 핫 키를 사용하여 녹음을 중지하십시오.
연설이 끝날 때 일관되게 목소리를 낮추면 임계 값이 높으면 임계 값이 높으면 중단 될 수 있기 때문에 임의로 임의로 인상 할 수 없습니다. 이 경우 몇 %로 낮추십시오.
음성을 진폭 (마이크에 가깝게 말하면서 명확하게 말하기)으로 음성을 구별 할 수 있도록하는 것이 가장 좋습니다 (마이크에 가깝게 말하면) 외부 소음 (마이크의 보호 위치, 노이즈 취소 하드웨어 등)을 최소화하면 음성 신호 수준이 우수한 임계 값이 더 효과적 일 수 있습니다.
연설이 캡처되면 음성 인식을 위해 transcribe (Whisper.cpp)로 전달됩니다. 이것은 실시간보다 빠르게 발생합니다 (특히 빠른 CPU 또는 Whisper.CPP 설치가 CUDA를 사용하는 경우). 전사의 명령 줄 매개 변수에 -tn 추가하여 사용되는 처리 스레드 수를 조정할 수 있습니다 (Whisper.CPP 문서를 참조하십시오). 그런 다음 스크립트는 텍스트를 구문 분석하여 음성 아티팩트를 제거하고 포맷 한 다음 X11 또는 Wayland 도구를 사용하여 기본 선택 (클립 보드)으로 보냅니다.
원칙적으로 Whisper (Whisper.cpp) 는 다국어 이며 올바른 모델 파일을 사용하면이 응용 프로그램이 올바른 언어로 전사 된 UTF-8 텍스트를 출력합니다. wsiml 스크립트는 다국어 사용 전용이며이를 통해 사용자는 음성 입력 언어를 선택할 수 있으며 (LC가 언어 코드 인 -l LC 플래그 사용) 선택한 입력 언어의 음성을 -t 플래그로 영어로 변환 할 수도 있습니다. 사용자는 자신이 전사하거나 번역하려는 다양한 언어에 여러 핫키를 할당 할 수 있습니다. 예를 들어, 두 개의 추가 핫키를 설정할 수 있습니다. 하나는 전사 용으로, 다른 하나는 wsiml -l fr 및 wsiml -l fr -t 명령을 할당하여 프랑스어로 번역하기위한 것입니다.
서버 모드를 사용할 때는 이제 두 가지 선택이 있습니다. 사전 컴파일 된 Whisper.CPP 서버 또는 다운로드 된 WhisperFile (서버 모드)을 가질 수 있습니다. 오케스트레이터 스크립트는 같은 방식으로 접근합니다.
Speech-to-Text 전사는 메모리 및 CPU 집약적 인 작업이며 읽기 및 쓰기 액세스를위한 빠른 스토리지는 도움이 될 수 있습니다. 그렇기 때문에 WSI는 메모리에 임시 및 리소스 파일을 저장하고 SSD/HDD "Grinding": TEMPD='/dev/shm' 줄입니다. 이 유형의 마운트 포인트 "TMPFS"는 RAM으로 생성되며 (예를 들어 최소 8GB가 충분하다고 가정 해 봅시다) 사용자 공간 응용 프로그램 용 커널에서 사용할 수 있습니다. 컴퓨터가 종료되면 자동으로 삭제되므로 중간 파일이 필요하지 않기 때문에 괜찮습니다. 실제로, 일부 유형의 응용 분야 (전자를보고 있음)의 경우 시스템 전체 /TMP 마운트 포인트를 RAM에 보관하는 것이 유리합니다 (IMHO). RAM으로 이동 /TMP를 이동하면 응용 프로그램 시작 속도가 약간 빨라질 수 있습니다. 모든 전자 앱에 대한 환영 속도. 가장 간단한 형태 로이 전환은 쉽습니다.
echo "tmpfs /tmp tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstab 다음 Linux 컴퓨터를 다시 시작하십시오. 앞서 언급 한 이유로, 특히 HDD가 주요 저장소 미디어 인 경우 Wrisper.cpp가 동일한 위치 (/dev/shm)에서 필요한 ASR 모델 파일을 이동할 수도 있습니다. 이 파일은 큰 파일이며 터미널 세션 (또는 시스템 시작)의 시작 시이 위치로 전송할 수 있습니다. 이것은 이와 같은 것을 배치하여 .profile 파일을 사용하여 수행 할 수 있습니다.
([ -f /dev/shm/ggml-base.en.bin ] || cp /path/to/your/local/whisper.cpp/models/ggml* /dev/shm/)