From a47db10055afba5e1c4e8bfeb700cb5b1e2243ca Mon Sep 17 00:00:00 2001 From: scofield Date: Sat, 24 Jan 2026 19:32:18 +0800 Subject: [PATCH 1/6] refactor(hud): extract Waveform component and optimize layout - Extract waveform visualization to standalone Waveform.tsx component - Remove unused CheckCheck icon import - Simplify recording state UI with extracted waveform component - Add close button on right side of HUD - Improve layout spacing and alignment --- src/components/HUD.tsx | 101 ++++++++++++------------------------ src/components/Waveform.tsx | 58 +++++++++++++++++++++ 2 files changed, 90 insertions(+), 69 deletions(-) create mode 100644 src/components/Waveform.tsx diff --git a/src/components/HUD.tsx b/src/components/HUD.tsx index 647f5b6..9f996d7 100644 --- a/src/components/HUD.tsx +++ b/src/components/HUD.tsx @@ -1,7 +1,8 @@ import { useEffect, useRef, useState } from 'react' -import { Check, CheckCheck, Mic, Sparkles, X, Zap } from 'lucide-react' +import { Check, Mic, Sparkles, X, Zap } from 'lucide-react' import { useTranslation } from 'react-i18next' import type { OverlayState, OverlayStatus } from '../../electron/shared/types' +import { Waveform } from './Waveform' // ... export function HUD() { const { t } = useTranslation() @@ -11,7 +12,7 @@ export function HUD() { const [isVisible, setIsVisible] = useState(false) // 模拟波形数据 (结合真实的 audioLevel) - const [waveform, setWaveform] = useState([]) + // const [waveform, setWaveform] = useState([]) const audioLevelRef = useRef(0) useEffect(() => { @@ -42,32 +43,17 @@ export function HUD() { audioLevelRef.current = audioLevel }, [audioLevel]) - useEffect(() => { - if (status === 'recording') { - const interval = setInterval(() => { - setWaveform(() => { - const currentLevel = audioLevelRef.current - const newData = Array.from({ length: 7 }, () => - Math.max(0.2, (currentLevel * 1.5 + Math.random() * 0.5) * Math.random()), - ) - return newData - }) - }, 80) - return () => clearInterval(interval) - } - }, [status]) - const handleCancel = () => { if (status === 'recording') { window.electronAPI.stopSession() } } - const handleConfirm = () => { - if (status === 'recording') { - window.electronAPI.stopSession() - } - } + // const handleConfirm = () => { + // if (status === 'recording') { + // window.electronAPI.stopSession() + // } + // } return (
@@ -88,8 +74,8 @@ export function HUD() { {/* Status Orb / Icon - 左侧状态球 */}
{/* 1. Recording State */} + {status === 'recording' && ( -
+
{/* Dynamic Waveform Visualizer */} -
- {waveform.map((h, i) => ( -
- ))} - {waveform.length === 0 &&
...
} -
- - {/* Action Buttons */} -
- - -
+
)} - {/* 2. Processing State */} {status === 'processing' && ( -
- +
+ {t('hud.thinking')}
)} - {/* 3. Success State */} {status === 'success' && ( -
-
- - {message || t('hud.done')} - -
- - {t('hud.injected')} -
+
+ {/* + {message || t('hud.done')} + */} +
+ + {t('hud.injected')}
)} - {/* 4. Error State */} {status === 'error' && (
@@ -186,6 +139,16 @@ export function HUD() {
)}
+ {/* 右侧关闭按钮 */} +
+ +
) diff --git a/src/components/Waveform.tsx b/src/components/Waveform.tsx new file mode 100644 index 0000000..10ace5b --- /dev/null +++ b/src/components/Waveform.tsx @@ -0,0 +1,58 @@ +import { useEffect, useRef, useState } from 'react' + +interface WaveformProps { + /** Current audio level (0-1) */ + audioLevel: number + /** Number of bars to render */ + barCount?: number + /** Color of the bars */ + barColor?: string +} + +export function Waveform({ audioLevel, barCount = 12, barColor = 'bg-white/80' }: WaveformProps) { + const [data, setData] = useState([]) + const audioLevelRef = useRef(0) + + // Sync ref with prop for access inside interval + useEffect(() => { + audioLevelRef.current = audioLevel + }, [audioLevel]) + + // Animation loop + useEffect(() => { + const update = () => { + const currentLevel = audioLevelRef.current + // Create variations: + // - Base idle movement (0.1 ~ 0.3) + // - Active movement (currentLevel * multiplier) applied randomly + const newData = Array.from({ length: barCount }, () => { + const idle = 0.15 + Math.random() * 0.15 + const active = currentLevel * 2 * Math.random() // High multiplier for visibility + return Math.min(1.0, Math.max(0.15, idle + active)) + }) + setData(newData) + } + + // Faster update rate for smoother look (approx 20fps) + const interval = setInterval(update, 50) + update() + + return () => clearInterval(interval) + }, [barCount]) + + return ( +
+ {data.map((h, i) => ( +
+ ))} + {data.length === 0 &&
...
} +
+ ) +} From 037f178cb247cda7a0285f366359ed38fe789397 Mon Sep 17 00:00:00 2001 From: scofield Date: Sat, 24 Jan 2026 22:34:39 +0800 Subject: [PATCH 2/6] feat(session): implement cancel session functionality - Add handleCancelSession function in main process - Add CANCEL_SESSION IPC channel - Expose cancelSession API in preload - Simplify HUD cancel handler to use new API --- electron/main/main.ts | 20 ++++++++++++++++++++ electron/preload/preload.ts | 6 ++++++ electron/shared/types.ts | 3 +++ src/components/HUD.tsx | 10 +--------- 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/electron/main/main.ts b/electron/main/main.ts index 109a0df..c66b9c6 100644 --- a/electron/main/main.ts +++ b/electron/main/main.ts @@ -722,6 +722,24 @@ function showNotification(title: string, body: string) { } } +async function handleCancelSession() { + // 1. 立即隐藏窗口 + hideOverlay() + + // 2. 标记当前会话为已取消 + if (currentSession) { + currentSession = null // 或保留引用但标记失效 + } + + // 3. 通知后台窗口停止录音 (如果正在录音) + if (backgroundWindow) { + backgroundWindow.webContents.send(IPC_CHANNELS.SESSION_STOP) + } + + // 4. (关键) 在 handleAudioData 中添加检查 + // 如果收到音频数据时 currentSession 为 null 或 status 为 aborted,则直接丢弃,不执行 ASR 和 注入。 +} + // IPC处理器 function setupIPCHandlers() { // 配置相关 @@ -823,6 +841,8 @@ function setupIPCHandlers() { ipcMain.handle(IPC_CHANNELS.OPEN_EXTERNAL, (_event, url) => { UpdaterManager.openReleasePage(url) }) + + ipcMain.handle(IPC_CHANNELS.CANCEL_SESSION, handleCancelSession) } // 应用程序生命周期 diff --git a/electron/preload/preload.ts b/electron/preload/preload.ts index c2b76e7..5e251c4 100644 --- a/electron/preload/preload.ts +++ b/electron/preload/preload.ts @@ -54,6 +54,9 @@ export interface ElectronAPI { getUpdateStatus: () => Promise getAppVersion: () => Promise openExternal: (url: string) => Promise + + // 取消会话 + cancelSession: () => Promise } // 暴露安全的API到渲染进程 @@ -147,4 +150,7 @@ contextBridge.exposeInMainWorld('electronAPI', { getUpdateStatus: () => ipcRenderer.invoke(IPC_CHANNELS.GET_UPDATE_STATUS), getAppVersion: () => ipcRenderer.invoke(IPC_CHANNELS.GET_APP_VERSION), openExternal: (url: string) => ipcRenderer.invoke(IPC_CHANNELS.OPEN_EXTERNAL, url), + + // 取消会话 + cancelSession: () => ipcRenderer.invoke(IPC_CHANNELS.CANCEL_SESSION), } as ElectronAPI) diff --git a/electron/shared/types.ts b/electron/shared/types.ts index 5f9159e..5808009 100644 --- a/electron/shared/types.ts +++ b/electron/shared/types.ts @@ -95,6 +95,9 @@ export const IPC_CHANNELS = { GET_UPDATE_STATUS: 'update:get-status', GET_APP_VERSION: 'app:version', OPEN_EXTERNAL: 'app:open-external', + + // 取消回话 + CANCEL_SESSION: 'session:cancel', } as const export type OverlayStatus = 'recording' | 'processing' | 'success' | 'error' diff --git a/src/components/HUD.tsx b/src/components/HUD.tsx index 9f996d7..7d7759a 100644 --- a/src/components/HUD.tsx +++ b/src/components/HUD.tsx @@ -44,17 +44,9 @@ export function HUD() { }, [audioLevel]) const handleCancel = () => { - if (status === 'recording') { - window.electronAPI.stopSession() - } + window.electronAPI.cancelSession() } - // const handleConfirm = () => { - // if (status === 'recording') { - // window.electronAPI.stopSession() - // } - // } - return (
Date: Sat, 24 Jan 2026 22:38:38 +0800 Subject: [PATCH 3/6] feat(session): add cancellation checks in audio processing pipeline - Check session status after audio conversion - Check session status after ASR transcription - Check session status before text injection - Clean up temp files when session is cancelled --- electron/main/main.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/electron/main/main.ts b/electron/main/main.ts index c66b9c6..9c20e91 100644 --- a/electron/main/main.ts +++ b/electron/main/main.ts @@ -621,6 +621,15 @@ async function handleAudioData(buffer: Buffer) { const conversionStartTime = Date.now() await convertToMP3(tempWebmPath, tempMp3Path) + + // Check cancellation after conversion + if (!currentSession) { + console.log('[Main] Session cancelled during conversion, aborting.') + if (fs.existsSync(tempWebmPath)) fs.unlinkSync(tempWebmPath) + if (fs.existsSync(tempMp3Path)) fs.unlinkSync(tempMp3Path) + return + } + const conversionDuration = Date.now() - conversionStartTime console.log(`[Main] [${new Date().toISOString()}] Audio converted to MP3: ${tempMp3Path}`) console.log(`[Main] ⏱️ Total conversion process took ${conversionDuration}ms`) @@ -637,6 +646,15 @@ async function handleAudioData(buffer: Buffer) { const asrStartTime = Date.now() console.log(`[Main] [${new Date().toISOString()}] Sending audio to ASR service...`) const transcription = await asrProvider.transcribe(tempMp3Path) + + // Check cancellation after transcription + if (!currentSession) { + console.log('[Main] Session cancelled during transcription, aborting.') + if (fs.existsSync(tempWebmPath)) fs.unlinkSync(tempWebmPath) + if (fs.existsSync(tempMp3Path)) fs.unlinkSync(tempMp3Path) + return + } + const asrDuration = Date.now() - asrStartTime console.log(`[Main] [${new Date().toISOString()}] Transcription received`) console.log(`[Main] ⏱️ ASR transcription took ${asrDuration}ms`) @@ -655,6 +673,15 @@ async function handleAudioData(buffer: Buffer) { }) const injectStartTime = Date.now() + + // Check cancellation before injection + if (!currentSession) { + console.log('[Main] Session cancelled before injection, aborting.') + if (fs.existsSync(tempWebmPath)) fs.unlinkSync(tempWebmPath) + if (fs.existsSync(tempMp3Path)) fs.unlinkSync(tempMp3Path) + return + } + console.log(`[Main] [${new Date().toISOString()}] Injecting text...`) await textInjector.injectText(transcription.text) const injectDuration = Date.now() - injectStartTime From 3c41eab5e776685a1e0c8a4e4fbc3f6ec2fb33cb Mon Sep 17 00:00:00 2001 From: scofield Date: Sat, 24 Jan 2026 23:35:24 +0800 Subject: [PATCH 4/6] docs(readme): enhance README with logo, screenshots, and badges - Add logo and screenshot images - Add GitHub badges (contributors, forks, stars, issues) - Add table of contents with anchor links - Add tech stack section with framework badges - Add star history chart - Improve overall structure and readability --- README.md | 103 +++++++++++++++++++++++++++++++++++++++++--- README_EN.md | 99 +++++++++++++++++++++++++++++++++++++++--- imgs/logo.png | Bin 0 -> 5680 bytes imgs/screenshot.png | Bin 0 -> 91976 bytes 4 files changed, 190 insertions(+), 12 deletions(-) create mode 100644 imgs/logo.png create mode 100644 imgs/screenshot.png diff --git a/README.md b/README.md index 2d58061..a449cd0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,78 @@ + + +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] + [English](./README_EN.md) -# Voice Key +
+
+ + Logo + + +

Voice Key

+ +

+ 一款开源的桌面端语音输入产品 +
+
+ 查看演示 + · + 报告 Bug + · + 请求功能 +

+
-Voice Key 是一款开源的的桌面端语音输入产品。 + Voice Key Screenshot +

-## 主要功能 + +
+ 目录 +
    +
  1. + 主要功能 + +
  2. +
  3. 配置要求
  4. +
  5. macOS 安装指南
  6. +
  7. 开源协议
  8. +
  9. Star History
  10. +
+
+ +## 主要功能 - **语音转写**: 集成 GLM ASR (智谱AI) 实现高精度的语音转文字。 -## 配置要求 +### 技术栈 + +本项目使用了以下主要框架和库: + +- [![Electron][Electron.js]][Electron-url] +- [![React][React.js]][React-url] +- [![Vite][Vite.js]][Vite-url] +- [![TypeScript][TypeScript]][TypeScript-url] +- [![TailwindCSS][TailwindCSS]][TailwindCSS-url] +- [![shadcn/ui][shadcn/ui]][shadcn-url] +- [![Zustand][Zustand]][Zustand-url] + +

(back to top)

+ +## 配置要求 本应用依赖 **智谱 AI (GLM)** 的语音转写服务。使用前请务必配置 API Key。 1. **获取 API Key**: 访问智谱 AI 开放平台[中国版](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) 或者 [国际版](https://z.ai/manage-apikey/apikey-list) 注册并获取 Key。 2. **配置**: 打开 Voice Key 设置页面,填入你的 API Key。 -## macOS 安装指南 +## macOS 安装指南 由于应用未签名(我们还没有注册 Apple 开发者账户),安装后需执行以下步骤: @@ -33,6 +90,40 @@ Voice Key 是一款开源的的桌面端语音输入产品。 ![权限请求](imgs/macos-accessibility-prompt.png) ![权限设置](imgs/macos-accessibility-settings.png) -## 开源协议 +## 开源协议 本项目采用 [Elastic License 2.0](LICENSE) 开源协议。 + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=BuildWithAIs/voicekey&type=Date)](https://star-history.com/#BuildWithAIs/voicekey&Date) + +

(back to top)

+ + + + +[contributors-shield]: https://img.shields.io/github/contributors/BuildWithAIs/voicekey.svg?style=for-the-badge +[contributors-url]: https://github.com/BuildWithAIs/voicekey/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/BuildWithAIs/voicekey.svg?style=for-the-badge +[forks-url]: https://github.com/BuildWithAIs/voicekey/network/members +[stars-shield]: https://img.shields.io/github/stars/BuildWithAIs/voicekey.svg?style=for-the-badge +[stars-url]: https://github.com/BuildWithAIs/voicekey/stargazers +[issues-shield]: https://img.shields.io/github/issues/BuildWithAIs/voicekey.svg?style=for-the-badge +[issues-url]: https://github.com/BuildWithAIs/voicekey/issues +[license-shield]: https://img.shields.io/github/license/BuildWithAIs/voicekey.svg?style=for-the-badge +[license-url]: https://github.com/BuildWithAIs/voicekey/blob/master/LICENSE +[Electron.js]: https://img.shields.io/badge/Electron-191970?style=for-the-badge&logo=Electron&logoColor=white +[Electron-url]: https://www.electronjs.org/ +[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB +[React-url]: https://reactjs.org/ +[Vite.js]: https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge&logo=vite&logoColor=white +[Vite-url]: https://vitejs.dev/ +[TypeScript]: https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white +[TypeScript-url]: https://www.typescriptlang.org/ +[TailwindCSS]: https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white +[TailwindCSS-url]: https://tailwindcss.com/ +[shadcn/ui]: https://img.shields.io/badge/shadcn%2Fui-000000?style=for-the-badge&logo=shadcnui&logoColor=white +[shadcn-url]: https://ui.shadcn.com/ +[Zustand]: https://img.shields.io/badge/zustand-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB +[Zustand-url]: https://github.com/pmndrs/zustand diff --git a/README_EN.md b/README_EN.md index 89f5d1b..e2e99b5 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,19 +1,76 @@ -# Voice Key + -Voice Key is an open-source desktop voice input product. +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] -## Features +
+
+ + Logo + + +

Voice Key

+ +

+ An open-source desktop voice input product +
+
+ View Demo + · + Report Bug + · + Request Feature +

+
+ + Voice Key Screenshot +

+ + +
+ Table of Contents +
    +
  1. + Features + +
  2. +
  3. Configuration Requirements
  4. +
  5. macOS Installation Guide
  6. +
  7. License
  8. +
  9. Star History
  10. +
+
+ +## Features - **Voice Transcription**: Integrates GLM ASR (Zhipu AI) for high-precision speech-to-text. -## Configuration Requirements +### Built With + +This section lists the major frameworks and libraries used to bootstrap this project. + +- [![Electron][Electron.js]][Electron-url] +- [![React][React.js]][React-url] +- [![Vite][Vite.js]][Vite-url] +- [![TypeScript][TypeScript]][TypeScript-url] +- [![TailwindCSS][TailwindCSS]][TailwindCSS-url] +- [![shadcn/ui][shadcn/ui]][shadcn-url] +- [![Zustand][Zustand]][Zustand-url] + +

(back to top)

+ +## Configuration Requirements This application depends on the **Zhipu AI (GLM)** speech transcription service. You must configure an API Key before use. 1. **Get API Key**: Visit the Zhipu AI Open Platform ([China](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) or [International](https://z.ai/manage-apikey/apikey-list)) to register and obtain a Key. 2. **Configure**: Open the Voice Key settings page and enter your API Key. -## macOS Installation Guide +## macOS Installation Guide Since the application is unsigned (we have not yet registered an Apple Developer account), you need to perform the following steps after installation: @@ -31,6 +88,36 @@ Since the application is unsigned (we have not yet registered an Apple Developer ![Permission Request](imgs/macos-accessibility-prompt.png) ![Permission Settings](imgs/macos-accessibility-settings.png) -## License +## License This project is licensed under the [Elastic License 2.0](LICENSE). + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=BuildWithAIs/voicekey&type=Date)](https://star-history.com/#BuildWithAIs/voicekey&Date) + + + + +[contributors-shield]: https://img.shields.io/github/contributors/BuildWithAIs/voicekey.svg?style=for-the-badge +[contributors-url]: https://github.com/BuildWithAIs/voicekey/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/BuildWithAIs/voicekey.svg?style=for-the-badge +[forks-url]: https://github.com/BuildWithAIs/voicekey/network/members +[stars-shield]: https://img.shields.io/github/stars/BuildWithAIs/voicekey.svg?style=for-the-badge +[stars-url]: https://github.com/BuildWithAIs/voicekey/stargazers +[issues-shield]: https://img.shields.io/github/issues/BuildWithAIs/voicekey.svg?style=for-the-badge +[issues-url]: https://github.com/BuildWithAIs/voicekey/issues +[Electron.js]: https://img.shields.io/badge/Electron-191970?style=for-the-badge&logo=Electron&logoColor=white +[Electron-url]: https://www.electronjs.org/ +[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB +[React-url]: https://reactjs.org/ +[Vite.js]: https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge&logo=vite&logoColor=white +[Vite-url]: https://vitejs.dev/ +[TypeScript]: https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white +[TypeScript-url]: https://www.typescriptlang.org/ +[TailwindCSS]: https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white +[TailwindCSS-url]: https://tailwindcss.com/ +[shadcn/ui]: https://img.shields.io/badge/shadcn%2Fui-000000?style=for-the-badge&logo=shadcnui&logoColor=white +[shadcn-url]: https://ui.shadcn.com/ +[Zustand]: https://img.shields.io/badge/zustand-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB +[Zustand-url]: https://github.com/pmndrs/zustand diff --git a/imgs/logo.png b/imgs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ffd9b73adba966764f9abe4773c6ba0a5b8830 GIT binary patch literal 5680 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 HK7I2aV+jcQ literal 0 HcmV?d00001 diff --git a/imgs/screenshot.png b/imgs/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..ada232abff9afebf804e68212be6e9529577b30b GIT binary patch literal 91976 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 Date: Sat, 24 Jan 2026 23:41:58 +0800 Subject: [PATCH 5/6] docs(readme): add getting started guide - Add environment prerequisites section - Add installation steps with commands - Fix screenshot alignment with centered wrapper --- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ README_EN.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/README.md b/README.md index a449cd0..9b127e8 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@

+

Voice Key Screenshot

@@ -40,6 +41,13 @@
  • 技术栈
  • +
  • + 上手指南 + +
  • 配置要求
  • macOS 安装指南
  • 开源协议
  • @@ -65,6 +73,38 @@

    (back to top)

    +## 上手指南 + +按照以下步骤在本地搭建并运行项目。 + +### 环境要求 + +开发前请确保已安装 Node.js 和 npm。 + +- npm + ```sh + npm install npm@latest -g + ``` + +### 安装步骤 + +1. 获取免费 API Key (详见 [配置要求](#prerequisites)) +2. 克隆仓库 + ```sh + git clone https://github.com/BuildWithAIs/voicekey.git + ``` +3. 安装依赖包 + ```sh + npm install + ``` +4. 运行开发环境 + ```sh + npm run dev + ``` +5. 在应用设置中填入你的 API Key + +

    (back to top)

    + ## 配置要求 本应用依赖 **智谱 AI (GLM)** 的语音转写服务。使用前请务必配置 API Key。 diff --git a/README_EN.md b/README_EN.md index e2e99b5..be94619 100644 --- a/README_EN.md +++ b/README_EN.md @@ -25,6 +25,7 @@

    +

    Voice Key Screenshot

    @@ -38,6 +39,13 @@
  • Built With
  • +
  • + Getting Started + +
  • Configuration Requirements
  • macOS Installation Guide
  • License
  • @@ -63,6 +71,38 @@ This section lists the major frameworks and libraries used to bootstrap this pro

    (back to top)

    +## Getting Started + +Follow these simple steps to get a local copy up and running. + +### Prerequisites + +Ensure you have Node.js and npm installed. + +- npm + ```sh + npm install npm@latest -g + ``` + +### Installation + +1. Get a free API Key (See [Configuration Requirements](#prerequisites)) +2. Clone the repo + ```sh + git clone https://github.com/BuildWithAIs/voicekey.git + ``` +3. Install NPM packages + ```sh + npm install + ``` +4. Run locally + ```sh + npm run dev + ``` +5. Enter your API Key in the Settings + +

    (back to top)

    + ## Configuration Requirements This application depends on the **Zhipu AI (GLM)** speech transcription service. You must configure an API Key before use. From 6c677b6d2291c23b4116ad488d040fc59bdd89a4 Mon Sep 17 00:00:00 2001 From: Scofieldfree Date: Sun, 25 Jan 2026 00:28:08 +0800 Subject: [PATCH 6/6] docs(readme): document Waveform component and cancelSession API --- electron/main/README.md | 2 +- electron/preload/README.md | 1 + src/components/README.md | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/electron/main/README.md b/electron/main/README.md index 9518efa..80bf4fb 100644 --- a/electron/main/README.md +++ b/electron/main/README.md @@ -4,7 +4,7 @@ Electron 主进程目录,负责窗口管理、IPC、录音流程、ASR 调用 ## 文件列表 -- `main.ts` - 应用入口;创建后台/设置/浮窗窗口、托盘菜单与 IPC 处理,协调 PTT 录音 → 转录 → 注入流程并初始化 FFmpeg。 +- `main.ts` - 应用入口;创建后台/设置/浮窗窗口、托盘菜单与 IPC 处理,协调 PTT 录音 → 转录 → 注入流程、会话取消与 FFmpeg 初始化。 - `i18n.ts` - 主进程 i18next 初始化与语言切换。 - `config-manager.ts` - 使用 `electron-store` 持久化应用偏好、ASR 配置与快捷键配置。 - `history-manager.ts` - 录音历史存储(最多 1000 条),提供增删清空与统计接口。 diff --git a/electron/preload/README.md b/electron/preload/README.md index 6601d75..7ff854f 100644 --- a/electron/preload/README.md +++ b/electron/preload/README.md @@ -28,6 +28,7 @@ IPC 通信桥接脚本,运行在渲染进程上下文但可访问部分 Node.j - `onStopRecording(callback)` - 监听录音停止信号(主进程 → 渲染) - `sendAudioData(buffer)` - 发送录制的音频数据(渲染 → 主进程) - `sendError(error)` - 发送错误信息 +- `cancelSession()` - 取消当前会话并停止录音 **快捷键** diff --git a/src/components/README.md b/src/components/README.md index 9b57e94..fc89574 100644 --- a/src/components/README.md +++ b/src/components/README.md @@ -37,6 +37,14 @@ shadcn/ui 组件库,基于 Radix UI 构建的可复用 UI 组件集合。包 - 录制并发送快捷键数据回主进程 - 不渲染任何 UI(返回 `null`) +### `Waveform.tsx` + +音频波形可视化组件: + +- 根据音频电平动态显示条形波形动画 +- 支持自定义条形数量与颜色 +- 约 20fps 更新频率平滑动画 + ## HotkeySettings 快捷键设置组件,负责: