rebrand: rename VoiceBox to TalkBox throughout codebase
CI / frontend-quality (push) Canceled after 0s

- All 'voicebox'/'Voicebox'/'VOICEBOX' strings replaced with 'talkbox'/'TalkBox'/'TALKBOX'
- Port changed from 17493 to 17494 (avoids conflict with upstream VoiceBox)
- MCP tool namespace: voicebox.* -> talkbox.*
- App bundle ID: sh.voicebox.app -> com.talkbox.app
- Binary names: voicebox-server -> talkbox-server, voicebox-mcp -> talkbox-mcp
- Docker user/group: voicebox -> talkbox
- Database: voicebox.db -> talkbox.db
- Env vars: VOICEBOX_* -> TALKBOX_*
- Asset files renamed: voicebox-logo.* -> talkbox-logo.*, etc.
- External binaries in tauri.conf.json updated to talkbox-server/talkbox-mcp
This commit is contained in:
2026-08-24 19:45:56 -07:00
parent eaef8dd838
commit b8815e94ea
205 changed files with 1593 additions and 1593 deletions
+2 -2
View File
@@ -4,12 +4,12 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>voicebox</title>
<title>talkbox</title>
<script>
(function () {
try {
var theme = 'system';
var raw = localStorage.getItem('voicebox-ui');
var raw = localStorage.getItem('talkbox-ui');
if (raw) {
var parsed = JSON.parse(raw);
if (parsed && parsed.state && parsed.state.theme) theme = parsed.state.theme;
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@voicebox/app",
"name": "@talkbox/app",
"version": "0.5.0",
"private": true,
"type": "module",
+15 -15
View File
@@ -1,6 +1,6 @@
import { RouterProvider } from '@tanstack/react-router';
import { useEffect, useRef, useState } from 'react';
import voiceboxLogo from '@/assets/voicebox-logo.png';
import talkboxLogo from '@/assets/talkbox-logo.png';
import { DictateWindow } from '@/components/DictateWindow/DictateWindow';
import ShinyText from '@/components/ShinyText';
import { TitleBarDragRegion } from '@/components/TitleBarDragRegion';
@@ -16,7 +16,7 @@ import { router } from '@/router';
import { useLogStore } from '@/stores/logStore';
import {
getDefaultServerUrl,
isLoopbackVoiceboxServerUrl,
isLoopbackTalkBoxServerUrl,
useServerStore,
} from '@/stores/serverStore';
@@ -26,10 +26,10 @@ function isDictateView(): boolean {
}
/**
* Validate that a health response has the expected Voicebox-specific shape.
* Validate that a health response has the expected TalkBox-specific shape.
* Prevents misidentifying an unrelated service on the same port.
*/
function isVoiceboxHealthResponse(health: HealthResponse): boolean {
function isTalkBoxHealthResponse(health: HealthResponse): boolean {
return (
health?.status === 'healthy' &&
typeof health.model_loaded === 'boolean' &&
@@ -136,7 +136,7 @@ function MainApp() {
if (!platform.metadata.isTauri) {
const serverUrl = getDefaultServerUrl();
const currentServerUrl = useServerStore.getState().serverUrl;
if (currentServerUrl !== serverUrl && isLoopbackVoiceboxServerUrl(currentServerUrl)) {
if (currentServerUrl !== serverUrl && isLoopbackTalkBoxServerUrl(currentServerUrl)) {
useServerStore.getState().setServerUrl(serverUrl);
}
setServerReady(true); // Web assumes server is running
@@ -155,7 +155,7 @@ function MainApp() {
console.log('Dev mode: Skipping auto-start of server (run it separately)');
setServerReady(true); // Mark as ready so UI doesn't show loading screen
// Mark that server was not started by app (so we don't try to stop it on close)
window.__voiceboxServerStartedByApp = false;
window.__talkboxServerStartedByApp = false;
return;
}
@@ -177,12 +177,12 @@ function MainApp() {
useServerStore.getState().setServerUrl(serverUrl);
setServerReady(true);
// Mark that we started the server (so we know to stop it on close)
window.__voiceboxServerStartedByApp = true;
window.__talkboxServerStartedByApp = true;
})
.catch((error) => {
console.error('Failed to auto-start server:', error);
serverStartingRef.current = false;
window.__voiceboxServerStartedByApp = false;
window.__talkboxServerStartedByApp = false;
// Only fall back to health-check polling when the error indicates the
// port is occupied (likely an external server). For real failures
@@ -196,17 +196,17 @@ function MainApp() {
// Fall back to polling: the server may already be running externally
// (e.g. started via python/uvicorn/Docker). Poll the health endpoint
// until it responds with a valid Voicebox payload, then transition to
// until it responds with a valid TalkBox payload, then transition to
// the main UI.
console.log('Falling back to health-check polling...');
const pollInterval = setInterval(async () => {
try {
const health = await apiClient.getHealth();
if (!isVoiceboxHealthResponse(health)) {
console.log('Health response is not from a Voicebox server, keep polling...');
if (!isTalkBoxHealthResponse(health)) {
console.log('Health response is not from a TalkBox server, keep polling...');
return;
}
console.log('External Voicebox server detected via health check');
console.log('External TalkBox server detected via health check');
clearInterval(pollInterval);
setServerReady(true);
} catch {
@@ -219,7 +219,7 @@ function MainApp() {
clearInterval(pollInterval);
serverStartingRef.current = false;
setStartupError(
'Could not connect to a Voicebox server within 2 minutes. ' +
'Could not connect to a TalkBox server within 2 minutes. ' +
'Please check that the server is running and try again.',
);
}, 120_000);
@@ -264,8 +264,8 @@ function MainApp() {
<div className="w-48 h-48 rounded-full bg-accent/20 blur-3xl" />
</div>
<img
src={voiceboxLogo}
alt="Voicebox"
src={talkboxLogo}
alt="TalkBox"
className="w-48 h-48 object-contain animate-fade-in-scale relative z-10"
/>
</div>

Before

Width:  |  Height:  |  Size: 4.0 MiB

After

Width:  |  Height:  |  Size: 4.0 MiB

@@ -35,7 +35,7 @@ interface ChordPickerProps {
* before clicking Save (otherwise they'd be saving while still holding
* the shortcut, which is awkward).
*
* Browser limitation: we can only capture keys while Voicebox has key
* Browser limitation: we can only capture keys while TalkBox has key
* focus, so the picker pulls focus to a hidden capture surface inside
* the dialog. The actual chord runs through the Rust global hook —
* this picker only writes the configuration the hook reads.
@@ -122,7 +122,7 @@ export function ChordPicker({
});
}, []);
// Wire global listeners only while open. Capture phase so Voicebox's
// Wire global listeners only while open. Capture phase so TalkBox's
// own command palette / global shortcuts don't swallow the chord first.
useEffect(() => {
if (!open) return;
+3 -3
View File
@@ -39,7 +39,7 @@ export function MainEditor() {
const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const file = e.target.files?.[0];
if (file) {
if (!file.name.endsWith('.voicebox.zip')) {
if (!file.name.endsWith('.talkbox.zip')) {
toast({
title: t('main.import.invalidTitle'),
description: t('main.import.invalidDescription'),
@@ -84,7 +84,7 @@ export function MainEditor() {
<div className="absolute top-0 left-0 right-0 z-10">
<div className="flex items-center justify-between mb-4 px-1">
<h2 className="text-2xl font-bold">Voicebox</h2>
<h2 className="text-2xl font-bold">TalkBox</h2>
<div className="flex gap-2">
<Button variant="outline" onClick={handleImportClick}>
<Upload className="mr-2 h-4 w-4" />
@@ -93,7 +93,7 @@ export function MainEditor() {
<input
ref={fileInputRef}
type="file"
accept=".voicebox.zip"
accept=".talkbox.zip"
onChange={handleFileChange}
className="hidden"
/>
@@ -77,9 +77,9 @@ export function ConnectionForm() {
<FormItem>
<FormLabel>Server URL</FormLabel>
<FormControl>
<Input placeholder="http://127.0.0.1:17493" {...field} />
<Input placeholder="http://127.0.0.1:17494" {...field} />
</FormControl>
<FormDescription>Enter the URL of your voicebox backend server</FormDescription>
<FormDescription>Enter the URL of your talkbox backend server</FormDescription>
<FormMessage />
</FormItem>
)}
+5 -5
View File
@@ -2,7 +2,7 @@ import { ArrowUpRight } from 'lucide-react';
import type { CSSProperties, ReactNode } from 'react';
import { useEffect, useState } from 'react';
import { Trans, useTranslation } from 'react-i18next';
import voiceboxLogo from '@/assets/voicebox-logo.png';
import talkboxLogo from '@/assets/talkbox-logo.png';
import { usePlatform } from '@/platform/PlatformContext';
function FadeIn({ delay = 0, children }: { delay?: number; children: ReactNode }) {
@@ -45,12 +45,12 @@ export function AboutPage() {
<div className="max-w-md mx-auto h-full flex items-center">
<div className="flex flex-col items-center text-center space-y-5">
<FadeIn delay={0}>
<img src={voiceboxLogo} alt="Voicebox" className="w-20 h-20 object-contain" />
<img src={talkboxLogo} alt="TalkBox" className="w-20 h-20 object-contain" />
</FadeIn>
<FadeIn delay={80}>
<div className="space-y-1.5">
<h1 className="text-lg font-semibold">Voicebox</h1>
<h1 className="text-lg font-semibold">TalkBox</h1>
<p className="text-xs text-muted-foreground/60 h-4">
{version ? `v${version}` : '\u00A0'}
</p>
@@ -97,7 +97,7 @@ export function AboutPage() {
<ArrowUpRight className="h-3.5 w-3.5 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors" />
</a>
<a
href="https://github.com/jamiepine/voicebox"
href="https://github.com/jamiepine/talkbox"
target="_blank"
rel="noopener noreferrer"
className="group inline-flex items-center gap-2 rounded-lg border border-border/60 px-4 py-2 text-sm transition-colors hover:bg-muted/50"
@@ -124,7 +124,7 @@ export function AboutPage() {
link: (
// biome-ignore lint/a11y/useAnchorContent: Trans fills content at runtime
<a
href="https://github.com/jamiepine/voicebox/blob/main/LICENSE"
href="https://github.com/jamiepine/talkbox/blob/main/LICENSE"
target="_blank"
rel="noopener noreferrer"
className="hover:text-muted-foreground/60 transition-colors"
@@ -27,7 +27,7 @@ export function CloudSection() {
if (connected && polling) {
setPolling(false);
toast({
title: 'Connected to Voicebox Cloud',
title: 'Connected to TalkBox Cloud',
description: `Linked as ${status?.device_name ?? 'this device'}.`,
});
}
@@ -84,7 +84,7 @@ export function CloudSection() {
return (
<SettingSection
title="Voicebox Cloud"
title="TalkBox Cloud"
description="End-to-end encrypted backup & sync across your devices."
>
<SettingRow
@@ -138,7 +138,7 @@ export function CloudSection() {
>
<a
className="text-sm text-accent hover:underline"
href={status?.dashboard_url ?? 'https://voicebox.sh/account'}
href={status?.dashboard_url ?? 'https://talkbox.sh/account'}
rel="noopener noreferrer"
target="_blank"
>
+3 -3
View File
@@ -74,7 +74,7 @@ export function GeneralPage() {
<div className="space-y-8 max-w-2xl">
<div className="grid grid-cols-2 gap-3">
<a
href="https://docs.voicebox.sh"
href="https://docs.talkbox.sh"
target="_blank"
rel="noopener noreferrer"
className="group flex items-center gap-3 rounded-lg border border-border/60 p-4 transition-colors hover:bg-muted/50"
@@ -82,7 +82,7 @@ export function GeneralPage() {
<Book className="h-5 w-5 shrink-0 text-accent" strokeWidth={2.5} />
<div className="min-w-0 flex-1">
<div className="text-sm font-medium">{t('settings.general.docs.title')}</div>
<div className="text-xs text-muted-foreground">docs.voicebox.sh</div>
<div className="text-xs text-muted-foreground">docs.talkbox.sh</div>
</div>
<ArrowUpRight className="h-4 w-4 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors" />
</a>
@@ -126,7 +126,7 @@ export function GeneralPage() {
render={({ field }) => (
<FormItem className="flex-1">
<FormControl>
<Input placeholder="http://127.0.0.1:17493" {...field} />
<Input placeholder="http://127.0.0.1:17494" {...field} />
</FormControl>
<FormMessage />
</FormItem>
+14 -14
View File
@@ -18,23 +18,23 @@ import { SettingRow, SettingSection } from './SettingRow';
function getStdioShimCommand(): string {
if (typeof navigator === 'undefined') {
return '/Applications/Voicebox.app/Contents/MacOS/voicebox-mcp';
return '/Applications/TalkBox.app/Contents/MacOS/talkbox-mcp';
}
const platform = `${navigator.platform} ${navigator.userAgent}`.toLowerCase();
if (platform.includes('win')) {
return 'C:\\Program Files\\Voicebox\\voicebox-mcp.exe';
return 'C:\\Program Files\\TalkBox\\talkbox-mcp.exe';
}
if (platform.includes('linux')) {
return '/opt/voicebox/voicebox-mcp';
return '/opt/talkbox/talkbox-mcp';
}
return '/Applications/Voicebox.app/Contents/MacOS/voicebox-mcp';
return '/Applications/TalkBox.app/Contents/MacOS/talkbox-mcp';
}
/**
* Settings → MCP — configure per-agent voice binding and show copy-paste
* install snippets for major MCP clients. Backend runs at /mcp on the
* existing Voicebox server; this page is the agent-onboarding surface.
* existing TalkBox server; this page is the agent-onboarding surface.
*/
export function MCPPage() {
const { t } = useTranslation();
@@ -82,9 +82,9 @@ export function MCPPage() {
snippet={JSON.stringify(
{
mcpServers: {
voicebox: {
talkbox: {
url: mcpUrl,
headers: { 'X-Voicebox-Client-Id': 'claude-code' },
headers: { 'X-TalkBox-Client-Id': 'claude-code' },
},
},
},
@@ -95,7 +95,7 @@ export function MCPPage() {
<SnippetRow
title={t('settings.mcp.install.claudeCode.title')}
description={t('settings.mcp.install.claudeCode.description')}
snippet={`claude mcp add voicebox --transport http --url ${mcpUrl} --header "X-Voicebox-Client-Id: claude-code"`}
snippet={`claude mcp add talkbox --transport http --url ${mcpUrl} --header "X-TalkBox-Client-Id: claude-code"`}
/>
<SnippetRow
title={t('settings.mcp.install.stdio.title')}
@@ -103,9 +103,9 @@ export function MCPPage() {
snippet={JSON.stringify(
{
mcpServers: {
voicebox: {
talkbox: {
command: stdioShimCommand,
env: { VOICEBOX_CLIENT_ID: 'claude-code' },
env: { TALKBOX_CLIENT_ID: 'claude-code' },
},
},
},
@@ -276,19 +276,19 @@ export function MCPPage() {
<h3 className="text-sm font-semibold">{t('settings.mcp.sidebar.toolsTitle')}</h3>
<ul className="text-sm text-muted-foreground space-y-1.5 leading-relaxed">
<li>
<code className="text-accent">voicebox.speak</code>
<code className="text-accent">talkbox.speak</code>
<div>{t('settings.mcp.sidebar.tools.speak')}</div>
</li>
<li>
<code className="text-accent">voicebox.transcribe</code>
<code className="text-accent">talkbox.transcribe</code>
<div>{t('settings.mcp.sidebar.tools.transcribe')}</div>
</li>
<li>
<code className="text-accent">voicebox.list_captures</code>
<code className="text-accent">talkbox.list_captures</code>
<div>{t('settings.mcp.sidebar.tools.listCaptures')}</div>
</li>
<li>
<code className="text-accent">voicebox.list_profiles</code>
<code className="text-accent">talkbox.list_profiles</code>
<div>{t('settings.mcp.sidebar.tools.listProfiles')}</div>
</li>
</ul>
+2 -2
View File
@@ -2,7 +2,7 @@ import { Link, useMatchRoute } from '@tanstack/react-router';
import { AudioLines, Box, Captions, type LucideIcon, Mic, Settings, Volume2, Wand2 } from 'lucide-react';
import { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import voiceboxLogo from '@/assets/voicebox-logo.png';
import talkboxLogo from '@/assets/talkbox-logo.png';
import { cn } from '@/lib/utils/cn';
import { usePlatform } from '@/platform/PlatformContext';
import type { UpdateStatus } from '@/platform/types';
@@ -47,7 +47,7 @@ export function Sidebar({ isMacOS }: SidebarProps) {
>
{/* Logo */}
<div className="mb-2">
<img src={voiceboxLogo} alt="Voicebox" className="sidebar-logo w-12 h-12 object-contain" />
<img src={talkboxLogo} alt="TalkBox" className="sidebar-logo w-12 h-12 object-contain" />
</div>
{/* Navigation Buttons */}
+1 -1
View File
@@ -1,5 +1,5 @@
interface Window {
__voiceboxServerStartedByApp?: boolean;
__talkboxServerStartedByApp?: boolean;
}
declare module 'virtual:changelog' {
+1 -1
View File
@@ -47,7 +47,7 @@ i18n
react: { useSuspense: false },
detection: {
order: ['localStorage', 'navigator'],
lookupLocalStorage: 'voicebox:lang',
lookupLocalStorage: 'talkbox:lang',
caches: ['localStorage'],
},
});
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "Input Monitoring permission",
"ready": "macOS allows Voicebox to detect your global shortcut.",
"missing": "macOS needs to allow Voicebox to detect the global shortcut.",
"ready": "macOS allows TalkBox to detect your global shortcut.",
"missing": "macOS needs to allow TalkBox to detect the global shortcut.",
"openSettings": "Open Settings"
},
"accessibility": {
"label": "Accessibility permission",
"ready": "Voicebox can paste transcriptions into other apps.",
"ready": "TalkBox can paste transcriptions into other apps.",
"missing": "Required so transcriptions can paste into the focused app.",
"openSettings": "Open Settings"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "Grant Accessibility permission to enable auto-paste",
"body": "Voicebox needs <path>System Settings → Privacy & Security → Accessibility</path> to paste transcriptions into other apps. Your dictation still lands in the Captures tab without it.",
"body": "TalkBox needs <path>System Settings → Privacy & Security → Accessibility</path> to paste transcriptions into other apps. Your dictation still lands in the Captures tab without it.",
"openSettings": "Open Settings",
"recheck": "I've enabled it",
"rechecking": "Checking…",
"stillMissing": "Still not detected. macOS usually requires quitting and reopening Voicebox after toggling the permission."
"stillMissing": "Still not detected. macOS usually requires quitting and reopening TalkBox after toggling the permission."
},
"inputMonitoring": {
"title": "Grant Input Monitoring to enable the global shortcut",
"body": "Voicebox needs <path>System Settings → Privacy & Security → Input Monitoring</path> to detect your dictation chord. The toggle is on, but macOS is blocking key events until you allow it.",
"body": "TalkBox needs <path>System Settings → Privacy & Security → Input Monitoring</path> to detect your dictation chord. The toggle is on, but macOS is blocking key events until you allow it.",
"openSettings": "Open Settings",
"recheck": "I've enabled it",
"rechecking": "Checking…",
"stillMissing": "Still not detected. macOS usually requires quitting and reopening Voicebox after toggling the permission."
"stillMissing": "Still not detected. macOS usually requires quitting and reopening TalkBox after toggling the permission."
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "Create Voice",
"import": {
"invalidTitle": "Invalid file type",
"invalidDescription": "Please select a valid .voicebox.zip file",
"invalidDescription": "Please select a valid .talkbox.zip file",
"successTitle": "Profile imported",
"successDescription": "Voice profile imported successfully",
"failedTitle": "Failed to import profile",
@@ -748,7 +748,7 @@
},
"language": {
"label": "Language",
"description": "Choose the display language for Voicebox."
"description": "Choose the display language for TalkBox."
},
"theme": {
"label": "Theme",
@@ -769,7 +769,7 @@
},
"serverUrl": {
"title": "Server URL",
"description": "The address of your voicebox backend server.",
"description": "The address of your talkbox backend server.",
"invalidUrl": "Please enter a valid URL",
"updatedTitle": "Server URL updated",
"updatedDescription": "Connected to {{url}}"
@@ -824,7 +824,7 @@
},
"api": {
"title": "API Access",
"description": "Integrate Voicebox into your workflow via the REST API at <code>{{url}}</code>",
"description": "Integrate TalkBox into your workflow via the REST API at <code>{{url}}</code>",
"viewReference": "View the full API reference",
"endpoints": {
"generate": "Generate speech",
@@ -913,7 +913,7 @@
},
"autoPaste": {
"title": "Auto-paste into focused text field",
"description": "If a text input is focused in another app, paste directly into it. Voicebox saves and restores whatever was on your clipboard."
"description": "If a text input is focused in another app, paste directly into it. TalkBox saves and restores whatever was on your clipboard."
}
},
"transcription": {
@@ -921,7 +921,7 @@
"description": "Pick which speech-to-text model runs on your captures.",
"model": {
"title": "Transcription model",
"description": "Whisper ships with Voicebox and runs entirely on your machine.",
"description": "Whisper ships with TalkBox and runs entirely on your machine.",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -997,7 +997,7 @@
},
"storage": {
"title": "Storage",
"description": "Captures are saved as paired audio and transcript files in your Voicebox data directory.",
"description": "Captures are saved as paired audio and transcript files in your TalkBox data directory.",
"retention": {
"title": "Retention",
"description": "How long to keep captures. Applies to both audio and transcripts.",
@@ -1014,7 +1014,7 @@
},
"sidebar": {
"aboutTitle": "About Captures",
"aboutBody": "Hold a shortcut anywhere on your machine, speak, and Voicebox turns your voice into text. Replay it in any cloned voice, paste it into any app, or pipe it into your coding agent.",
"aboutBody": "Hold a shortcut anywhere on your machine, speak, and TalkBox turns your voice into text. Replay it in any cloned voice, paste it into any app, or pipe it into your coding agent.",
"differencesTitle": "What's different",
"local": {
"title": "Fully local.",
@@ -1030,14 +1030,14 @@
},
"windowsCaveat": {
"title": "Heads-up on Windows",
"body": "The shortcut won't fire while Voicebox itself or any app running as administrator is focused. Working on it."
"body": "The shortcut won't fire while TalkBox itself or any app running as administrator is focused. Working on it."
}
}
},
"mcp": {
"install": {
"title": "Install into your agent",
"description": "Voicebox exposes a local MCP server whenever the app is open. Paste one of these snippets into your agent's MCP config.",
"description": "TalkBox exposes a local MCP server whenever the app is open. Paste one of these snippets into your agent's MCP config.",
"http": {
"title": "HTTP (recommended)",
"description": "For clients that speak HTTP MCP — Claude Code, Cursor, Windsurf, VS Code."
@@ -1055,15 +1055,15 @@
},
"defaultVoice": {
"title": "Default voice",
"description": "Used when an agent calls voicebox.speak without a specific profile and has no per-client binding.",
"description": "Used when an agent calls talkbox.speak without a specific profile and has no per-client binding.",
"label": "Default playback voice",
"labelHint": "Shared with the Captures-tab 'Play as voice' dropdown — one default voice for passive playback.",
"none": "(none)"
},
"bindings": {
"title": "Per-agent voice",
"description": "Bind specific agents to specific voices so you can tell who's speaking without looking. The agent identifies itself by the X-Voicebox-Client-Id header (or VOICEBOX_CLIENT_ID env for stdio).",
"empty": "No bindings yet. Add one below, then configure your MCP client to send the matching <code>X-Voicebox-Client-Id</code>.",
"description": "Bind specific agents to specific voices so you can tell who's speaking without looking. The agent identifies itself by the X-TalkBox-Client-Id header (or TALKBOX_CLIENT_ID env for stdio).",
"empty": "No bindings yet. Add one below, then configure your MCP client to send the matching <code>X-TalkBox-Client-Id</code>.",
"lastSeen": "last seen {{when}}",
"lastSeenTitle": "Last seen {{when}}",
"neverConnected": "never connected",
@@ -1078,7 +1078,7 @@
},
"sidebar": {
"aboutTitle": "About MCP",
"aboutBody": "Model Context Protocol lets your AI coding agent — Claude Code, Cursor, Windsurf — call Voicebox tools. Speak in a cloned voice, transcribe audio, browse captures.",
"aboutBody": "Model Context Protocol lets your AI coding agent — Claude Code, Cursor, Windsurf — call TalkBox tools. Speak in a cloned voice, transcribe audio, browse captures.",
"toolsTitle": "Available tools",
"tools": {
"speak": "Speak text in a voice profile.",
@@ -1137,7 +1137,7 @@
"deleteCuda": "Failed to delete CUDA backend",
"deleteRocm": "Failed to delete ROCm backend"
},
"footer": "Voicebox automatically detects and uses the best available GPU on your system. On Apple Silicon Macs, the MLX backend runs natively on the Neural Engine and GPU via Metal Performance Shaders (MPS), with no additional setup required. On Windows, you can download optional CUDA (NVIDIA) or ROCm (AMD) backends for hardware-accelerated inference. Intel XPU and DirectML are also supported where available through PyTorch. When no GPU is detected, Voicebox falls back to CPU — all engines still work, just slower.",
"footer": "TalkBox automatically detects and uses the best available GPU on your system. On Apple Silicon Macs, the MLX backend runs natively on the Neural Engine and GPU via Metal Performance Shaders (MPS), with no additional setup required. On Windows, you can download optional CUDA (NVIDIA) or ROCm (AMD) backends for hardware-accelerated inference. Intel XPU and DirectML are also supported where available through PyTorch. When no GPU is detected, TalkBox falls back to CPU — all engines still work, just slower.",
"rocm": {
"title": "AMD ROCm Backend",
"activeTitle": "ROCm Backend Active",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "Permiso de Monitorización de entrada",
"ready": "macOS permite que Voicebox detecte tu atajo global.",
"missing": "macOS debe permitir que Voicebox detecte el atajo global.",
"ready": "macOS permite que TalkBox detecte tu atajo global.",
"missing": "macOS debe permitir que TalkBox detecte el atajo global.",
"openSettings": "Abrir Ajustes"
},
"accessibility": {
"label": "Permiso de Accesibilidad",
"ready": "Voicebox puede pegar transcripciones en otras apps.",
"ready": "TalkBox puede pegar transcripciones en otras apps.",
"missing": "Necesario para que las transcripciones se peguen en la app activa.",
"openSettings": "Abrir Ajustes"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "Concede el permiso de Accesibilidad para habilitar el pegado automático",
"body": "Voicebox necesita <path>Ajustes del Sistema → Privacidad y seguridad → Accesibilidad</path> para pegar transcripciones en otras apps. Tu dictado igualmente aparece en la pestaña Capturas sin él.",
"body": "TalkBox necesita <path>Ajustes del Sistema → Privacidad y seguridad → Accesibilidad</path> para pegar transcripciones en otras apps. Tu dictado igualmente aparece en la pestaña Capturas sin él.",
"openSettings": "Abrir Ajustes",
"recheck": "Ya lo he activado",
"rechecking": "Comprobando…",
"stillMissing": "Sigue sin detectarse. macOS suele requerir salir y reabrir Voicebox tras cambiar el permiso."
"stillMissing": "Sigue sin detectarse. macOS suele requerir salir y reabrir TalkBox tras cambiar el permiso."
},
"inputMonitoring": {
"title": "Concede Monitorización de entrada para habilitar el atajo global",
"body": "Voicebox necesita <path>Ajustes del Sistema → Privacidad y seguridad → Monitorización de entrada</path> para detectar tu combinación de dictado. La opción está activada, pero macOS bloquea los eventos de teclado hasta que lo permitas.",
"body": "TalkBox necesita <path>Ajustes del Sistema → Privacidad y seguridad → Monitorización de entrada</path> para detectar tu combinación de dictado. La opción está activada, pero macOS bloquea los eventos de teclado hasta que lo permitas.",
"openSettings": "Abrir Ajustes",
"recheck": "Ya lo he activado",
"rechecking": "Comprobando…",
"stillMissing": "Sigue sin detectarse. macOS suele requerir salir y reabrir Voicebox tras cambiar el permiso."
"stillMissing": "Sigue sin detectarse. macOS suele requerir salir y reabrir TalkBox tras cambiar el permiso."
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "Crear voz",
"import": {
"invalidTitle": "Tipo de archivo no válido",
"invalidDescription": "Selecciona un archivo .voicebox.zip válido",
"invalidDescription": "Selecciona un archivo .talkbox.zip válido",
"successTitle": "Perfil importado",
"successDescription": "Perfil de voz importado correctamente",
"failedTitle": "Error al importar el perfil",
@@ -748,7 +748,7 @@
},
"language": {
"label": "Idioma",
"description": "Elige el idioma de la interfaz de Voicebox."
"description": "Elige el idioma de la interfaz de TalkBox."
},
"theme": {
"label": "Tema",
@@ -769,7 +769,7 @@
},
"serverUrl": {
"title": "URL del servidor",
"description": "La dirección de tu servidor backend de Voicebox.",
"description": "La dirección de tu servidor backend de TalkBox.",
"invalidUrl": "Introduce una URL válida",
"updatedTitle": "URL del servidor actualizada",
"updatedDescription": "Conectado a {{url}}"
@@ -824,7 +824,7 @@
},
"api": {
"title": "Acceso a la API",
"description": "Integra Voicebox en tu flujo de trabajo mediante la API REST en <code>{{url}}</code>",
"description": "Integra TalkBox en tu flujo de trabajo mediante la API REST en <code>{{url}}</code>",
"viewReference": "Ver la referencia completa de la API",
"endpoints": {
"generate": "Generar voz",
@@ -913,7 +913,7 @@
},
"autoPaste": {
"title": "Pegar automáticamente en el campo de texto activo",
"description": "Si hay un campo de texto activo en otra app, pega directamente en él. Voicebox guarda y restaura lo que hubiera en tu portapapeles."
"description": "Si hay un campo de texto activo en otra app, pega directamente en él. TalkBox guarda y restaura lo que hubiera en tu portapapeles."
}
},
"transcription": {
@@ -921,7 +921,7 @@
"description": "Elige qué modelo de voz a texto se ejecuta en tus capturas.",
"model": {
"title": "Modelo de transcripción",
"description": "Whisper viene incluido con Voicebox y se ejecuta enteramente en tu equipo.",
"description": "Whisper viene incluido con TalkBox y se ejecuta enteramente en tu equipo.",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -997,7 +997,7 @@
},
"storage": {
"title": "Almacenamiento",
"description": "Las capturas se guardan como archivos emparejados de audio y transcripción en tu directorio de datos de Voicebox.",
"description": "Las capturas se guardan como archivos emparejados de audio y transcripción en tu directorio de datos de TalkBox.",
"retention": {
"title": "Retención",
"description": "Cuánto tiempo conservar las capturas. Se aplica tanto al audio como a las transcripciones.",
@@ -1014,7 +1014,7 @@
},
"sidebar": {
"aboutTitle": "Acerca de Capturas",
"aboutBody": "Mantén pulsado un atajo en cualquier parte de tu equipo, habla, y Voicebox convierte tu voz en texto. Reprodúcelo con cualquier voz clonada, pégalo en cualquier app o canalízalo a tu agente de programación.",
"aboutBody": "Mantén pulsado un atajo en cualquier parte de tu equipo, habla, y TalkBox convierte tu voz en texto. Reprodúcelo con cualquier voz clonada, pégalo en cualquier app o canalízalo a tu agente de programación.",
"differencesTitle": "Qué lo diferencia",
"local": {
"title": "Totalmente local.",
@@ -1030,14 +1030,14 @@
},
"windowsCaveat": {
"title": "Aviso en Windows",
"body": "El atajo no se activará mientras Voicebox o cualquier app ejecutada como administrador esté en primer plano. Estamos en ello."
"body": "El atajo no se activará mientras TalkBox o cualquier app ejecutada como administrador esté en primer plano. Estamos en ello."
}
}
},
"mcp": {
"install": {
"title": "Instalar en tu agente",
"description": "Voicebox expone un servidor MCP local siempre que la app está abierta. Pega uno de estos fragmentos en la configuración MCP de tu agente.",
"description": "TalkBox expone un servidor MCP local siempre que la app está abierta. Pega uno de estos fragmentos en la configuración MCP de tu agente.",
"http": {
"title": "HTTP (recomendado)",
"description": "Para clientes que hablan MCP por HTTP: Claude Code, Cursor, Windsurf, VS Code."
@@ -1055,15 +1055,15 @@
},
"defaultVoice": {
"title": "Voz predeterminada",
"description": "Se usa cuando un agente llama a voicebox.speak sin un perfil específico y no tiene una vinculación por cliente.",
"description": "Se usa cuando un agente llama a talkbox.speak sin un perfil específico y no tiene una vinculación por cliente.",
"label": "Voz de reproducción predeterminada",
"labelHint": "Compartida con el desplegable 'Reproducir como voz' de la pestaña Capturas: una voz predeterminada para la reproducción pasiva.",
"none": "(ninguna)"
},
"bindings": {
"title": "Voz por agente",
"description": "Vincula agentes concretos a voces concretas para saber quién habla sin mirar. El agente se identifica mediante la cabecera X-Voicebox-Client-Id (o la variable de entorno VOICEBOX_CLIENT_ID para stdio).",
"empty": "Aún no hay vinculaciones. Añade una abajo y luego configura tu cliente MCP para que envíe el <code>X-Voicebox-Client-Id</code> correspondiente.",
"description": "Vincula agentes concretos a voces concretas para saber quién habla sin mirar. El agente se identifica mediante la cabecera X-TalkBox-Client-Id (o la variable de entorno TALKBOX_CLIENT_ID para stdio).",
"empty": "Aún no hay vinculaciones. Añade una abajo y luego configura tu cliente MCP para que envíe el <code>X-TalkBox-Client-Id</code> correspondiente.",
"lastSeen": "visto por última vez {{when}}",
"lastSeenTitle": "Visto por última vez {{when}}",
"neverConnected": "nunca conectado",
@@ -1078,7 +1078,7 @@
},
"sidebar": {
"aboutTitle": "Acerca de MCP",
"aboutBody": "El Model Context Protocol permite que tu agente de programación con IA —Claude Code, Cursor, Windsurf— llame a las herramientas de Voicebox. Habla con una voz clonada, transcribe audio, explora capturas.",
"aboutBody": "El Model Context Protocol permite que tu agente de programación con IA —Claude Code, Cursor, Windsurf— llame a las herramientas de TalkBox. Habla con una voz clonada, transcribe audio, explora capturas.",
"toolsTitle": "Herramientas disponibles",
"tools": {
"speak": "Pronuncia texto con un perfil de voz.",
@@ -1135,7 +1135,7 @@
"deleteCuda": "Error al eliminar el backend CUDA",
"deleteRocm": "Error al eliminar el backend ROCm"
},
"footer": "Voicebox detecta y usa automáticamente la mejor GPU disponible en tu sistema. En Macs con Apple Silicon, el backend MLX se ejecuta de forma nativa en el Neural Engine y la GPU mediante Metal Performance Shaders (MPS), sin configuración adicional. En Windows, puedes descargar backends opcionales CUDA (NVIDIA) o ROCm (AMD) para inferencia acelerada por hardware. Intel XPU y DirectML también son compatibles cuando están disponibles a través de PyTorch. Cuando no se detecta ninguna GPU, Voicebox recurre a la CPU: todos los motores siguen funcionando, solo que más despacio.",
"footer": "TalkBox detecta y usa automáticamente la mejor GPU disponible en tu sistema. En Macs con Apple Silicon, el backend MLX se ejecuta de forma nativa en el Neural Engine y la GPU mediante Metal Performance Shaders (MPS), sin configuración adicional. En Windows, puedes descargar backends opcionales CUDA (NVIDIA) o ROCm (AMD) para inferencia acelerada por hardware. Intel XPU y DirectML también son compatibles cuando están disponibles a través de PyTorch. Cuando no se detecta ninguna GPU, TalkBox recurre a la CPU: todos los motores siguen funcionando, solo que más despacio.",
"activeBackend": {
"description": "La aceleración por GPU está habilitada actualmente."
},
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "Autorisation de surveillance d'entrée",
"ready": "macOS permet à Voicebox de détecter votre raccourci global.",
"missing": "macOS doit autoriser Voicebox à détecter le raccourci global.",
"ready": "macOS permet à TalkBox de détecter votre raccourci global.",
"missing": "macOS doit autoriser TalkBox à détecter le raccourci global.",
"openSettings": "Ouvrir les réglages"
},
"accessibility": {
"label": "Autorisation d'accessibilité",
"ready": "Voicebox peut coller les transcriptions dans d'autres applications.",
"ready": "TalkBox peut coller les transcriptions dans d'autres applications.",
"missing": "Requis pour que les transcriptions puissent être collées dans l'application active.",
"openSettings": "Ouvrir les réglages"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "Accordez l'autorisation d'accessibilité pour activer le collage automatique",
"body": "Voicebox a besoin de <path>Réglages Système → Confidentialité et Sécurité → Accessibilité</path> pour coller les transcriptions dans d'autres applications. Vos dictées arriveront quand même dans l'onglet Captures sans cela.",
"body": "TalkBox a besoin de <path>Réglages Système → Confidentialité et Sécurité → Accessibilité</path> pour coller les transcriptions dans d'autres applications. Vos dictées arriveront quand même dans l'onglet Captures sans cela.",
"openSettings": "Ouvrir les réglages",
"recheck": "Je l'ai activé",
"rechecking": "Vérification…",
"stillMissing": "Toujours pas détecté. macOS nécessite généralement de quitter et rouvrir Voicebox après avoir activé l'autorisation."
"stillMissing": "Toujours pas détecté. macOS nécessite généralement de quitter et rouvrir TalkBox après avoir activé l'autorisation."
},
"inputMonitoring": {
"title": "Accordez la surveillance d'entrée pour activer le raccourci global",
"body": "Voicebox a besoin de <path>Réglages Système → Confidentialité et Sécurité → Surveillance d'entrée</path> pour détecter votre combinaison de dictée. L'interrupteur est activé, mais macOS bloque les événements clavier tant que vous ne l'autorisez pas.",
"body": "TalkBox a besoin de <path>Réglages Système → Confidentialité et Sécurité → Surveillance d'entrée</path> pour détecter votre combinaison de dictée. L'interrupteur est activé, mais macOS bloque les événements clavier tant que vous ne l'autorisez pas.",
"openSettings": "Ouvrir les réglages",
"recheck": "Je l'ai activé",
"rechecking": "Vérification…",
"stillMissing": "Toujours pas détecté. macOS nécessite généralement de quitter et rouvrir Voicebox après avoir activé l'autorisation."
"stillMissing": "Toujours pas détecté. macOS nécessite généralement de quitter et rouvrir TalkBox après avoir activé l'autorisation."
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "Créer une voix",
"import": {
"invalidTitle": "Type de fichier invalide",
"invalidDescription": "Veuillez sélectionner un fichier .voicebox.zip valide",
"invalidDescription": "Veuillez sélectionner un fichier .talkbox.zip valide",
"successTitle": "Profil importé",
"successDescription": "Profil vocal importé avec succès",
"failedTitle": "Échec de l'importation du profil",
@@ -748,7 +748,7 @@
},
"language": {
"label": "Langue",
"description": "Choisissez la langue d'affichage de Voicebox."
"description": "Choisissez la langue d'affichage de TalkBox."
},
"theme": {
"label": "Thème",
@@ -764,7 +764,7 @@
"discord": { "title": "Rejoindre le Discord", "subtitle": "Obtenez de l'aide et partagez des voix" },
"serverUrl": {
"title": "URL du serveur",
"description": "L'adresse de votre serveur Voicebox.",
"description": "L'adresse de votre serveur TalkBox.",
"invalidUrl": "Veuillez saisir une URL valide",
"updatedTitle": "URL du serveur mise à jour",
"updatedDescription": "Connecté à {{url}}"
@@ -819,7 +819,7 @@
},
"api": {
"title": "Accès API",
"description": "Intégrez Voicebox dans votre flux de travail via l'API REST à <code>{{url}}</code>",
"description": "Intégrez TalkBox dans votre flux de travail via l'API REST à <code>{{url}}</code>",
"viewReference": "Voir la référence API complète",
"endpoints": {
"generate": "Générer de la parole",
@@ -908,7 +908,7 @@
},
"autoPaste": {
"title": "Coller automatiquement dans le champ de texte actif",
"description": "Si un champ de texte est actif dans une autre application, collez-y directement. Voicebox sauvegarde et restaure le contenu de votre presse-papiers."
"description": "Si un champ de texte est actif dans une autre application, collez-y directement. TalkBox sauvegarde et restaure le contenu de votre presse-papiers."
}
},
"transcription": {
@@ -916,7 +916,7 @@
"description": "Choisissez quel modèle de reconnaissance vocale est utilisé pour vos captures.",
"model": {
"title": "Modèle de transcription",
"description": "Whisper est fourni avec Voicebox et fonctionne entièrement sur votre machine.",
"description": "Whisper est fourni avec TalkBox et fonctionne entièrement sur votre machine.",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -992,7 +992,7 @@
},
"storage": {
"title": "Stockage",
"description": "Les captures sont sauvegardées sous forme de paires audio/transcription dans votre répertoire de données Voicebox.",
"description": "Les captures sont sauvegardées sous forme de paires audio/transcription dans votre répertoire de données TalkBox.",
"retention": {
"title": "Rétention",
"description": "Durée de conservation des captures. S'applique à l'audio et aux transcriptions.",
@@ -1009,7 +1009,7 @@
},
"sidebar": {
"aboutTitle": "À propos des Captures",
"aboutBody": "Maintenez un raccourci n'importe où sur votre machine, parlez, et Voicebox transforme votre voix en texte. Rejouez-la avec n'importe quelle voix clonée, collez-la dans n'importe quelle application, ou transmettez-la à votre agent de codage.",
"aboutBody": "Maintenez un raccourci n'importe où sur votre machine, parlez, et TalkBox transforme votre voix en texte. Rejouez-la avec n'importe quelle voix clonée, collez-la dans n'importe quelle application, ou transmettez-la à votre agent de codage.",
"differencesTitle": "Ce qui est différent",
"local": {
"title": "Entièrement local.",
@@ -1025,14 +1025,14 @@
},
"windowsCaveat": {
"title": "Attention sur Windows",
"body": "Le raccourci ne fonctionne pas lorsque Voicebox ou une application en mode administrateur est active. En cours d'amélioration."
"body": "Le raccourci ne fonctionne pas lorsque TalkBox ou une application en mode administrateur est active. En cours d'amélioration."
}
}
},
"mcp": {
"install": {
"title": "Installer dans votre agent",
"description": "Voicebox expose un serveur MCP local dès que l'application est ouverte. Collez l'un de ces extraits dans la configuration MCP de votre agent.",
"description": "TalkBox expose un serveur MCP local dès que l'application est ouverte. Collez l'un de ces extraits dans la configuration MCP de votre agent.",
"http": {
"title": "HTTP (recommandé)",
"description": "Pour les clients qui parlent HTTP MCP — Claude Code, Cursor, Windsurf, VS Code."
@@ -1050,15 +1050,15 @@
},
"defaultVoice": {
"title": "Voix par défaut",
"description": "Utilisée quand un agent appelle voicebox.speak sans profil spécifique et sans liaison par client.",
"description": "Utilisée quand un agent appelle talkbox.speak sans profil spécifique et sans liaison par client.",
"label": "Voix de lecture par défaut",
"labelHint": "Partagé avec la liste déroulante « Lire avec » de l'onglet Captures — une voix par défaut pour la lecture passive.",
"none": "(aucune)"
},
"bindings": {
"title": "Voix par agent",
"description": "Liez des agents spécifiques à des voix spécifiques pour savoir qui parle sans regarder. L'agent s'identifie via l'en-tête X-Voicebox-Client-Id (ou la variable d'env VOICEBOX_CLIENT_ID pour stdio).",
"empty": "Encore aucune liaison. Ajoutez-en une ci-dessous, puis configurez votre client MCP pour envoyer le <code>X-Voicebox-Client-Id</code> correspondant.",
"description": "Liez des agents spécifiques à des voix spécifiques pour savoir qui parle sans regarder. L'agent s'identifie via l'en-tête X-TalkBox-Client-Id (ou la variable d'env TALKBOX_CLIENT_ID pour stdio).",
"empty": "Encore aucune liaison. Ajoutez-en une ci-dessous, puis configurez votre client MCP pour envoyer le <code>X-TalkBox-Client-Id</code> correspondant.",
"lastSeen": "vu {{when}}",
"lastSeenTitle": "Dernière vue {{when}}",
"neverConnected": "jamais connecté",
@@ -1073,7 +1073,7 @@
},
"sidebar": {
"aboutTitle": "À propos de MCP",
"aboutBody": "Le Model Context Protocol permet à votre agent de codage IA — Claude Code, Cursor, Windsurf — d'appeler les outils de Voicebox. Parlez avec une voix clonée, transcrivez de l'audio, parcourez les captures.",
"aboutBody": "Le Model Context Protocol permet à votre agent de codage IA — Claude Code, Cursor, Windsurf — d'appeler les outils de TalkBox. Parlez avec une voix clonée, transcrivez de l'audio, parcourez les captures.",
"toolsTitle": "Outils disponibles",
"tools": {
"speak": "Prononcer un texte avec un profil vocal.",
@@ -1128,7 +1128,7 @@
"switchCpu": "Échec du basculement vers CPU",
"deleteCuda": "Échec de la suppression du backend CUDA"
},
"footer": "Voicebox détecte et utilise automatiquement le meilleur GPU disponible sur votre système. Sur les Mac Apple Silicon, le backend MLX fonctionne nativement sur le Neural Engine et le GPU via Metal Performance Shaders (MPS), sans configuration supplémentaire. Sur Windows et Linux avec GPU NVIDIA, vous pouvez télécharger un backend CUDA optionnel pour l'inférence accélérée par le matériel. AMD ROCm, Intel XPU et DirectML sont également pris en charge là où disponibles via PyTorch. Quand aucun GPU n'est détecté, Voicebox utilise le CPU — tous les moteurs fonctionnent, mais plus lentement."
"footer": "TalkBox détecte et utilise automatiquement le meilleur GPU disponible sur votre système. Sur les Mac Apple Silicon, le backend MLX fonctionne nativement sur le Neural Engine et le GPU via Metal Performance Shaders (MPS), sans configuration supplémentaire. Sur Windows et Linux avec GPU NVIDIA, vous pouvez télécharger un backend CUDA optionnel pour l'inférence accélérée par le matériel. AMD ROCm, Intel XPU et DirectML sont également pris en charge là où disponibles via PyTorch. Quand aucun GPU n'est détecté, TalkBox utilise le CPU — tous les moteurs fonctionnent, mais plus lentement."
},
"logs": {
"title": "Journaux du serveur",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "Permesso Monitoraggio input",
"ready": "macOS consente a Voicebox di rilevare la tua scorciatoia globale.",
"missing": "macOS deve consentire a Voicebox di rilevare la scorciatoia globale.",
"ready": "macOS consente a TalkBox di rilevare la tua scorciatoia globale.",
"missing": "macOS deve consentire a TalkBox di rilevare la scorciatoia globale.",
"openSettings": "Apri Impostazioni"
},
"accessibility": {
"label": "Permesso Accessibilità",
"ready": "Voicebox può incollare le trascrizioni in altre app.",
"ready": "TalkBox può incollare le trascrizioni in altre app.",
"missing": "Richiesto per poter incollare le trascrizioni nell'app in primo piano.",
"openSettings": "Apri Impostazioni"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "Concedi il permesso di Accessibilità per attivare l'incollo automatico",
"body": "Voicebox richiede <path>Impostazioni di Sistema → Privacy e Sicurezza → Accessibilità</path> per incollare le trascrizioni in altre app. Senza di questo, la tua dettatura verrà comunque salvata nella scheda Acquisizioni.",
"body": "TalkBox richiede <path>Impostazioni di Sistema → Privacy e Sicurezza → Accessibilità</path> per incollare le trascrizioni in altre app. Senza di questo, la tua dettatura verrà comunque salvata nella scheda Acquisizioni.",
"openSettings": "Apri Impostazioni",
"recheck": "L'ho abilitato",
"rechecking": "Verifica in corso…",
"stillMissing": "Non ancora rilevato. Di solito macOS richiede la chiusura e la riapertura di Voicebox dopo aver attivato il permesso."
"stillMissing": "Non ancora rilevato. Di solito macOS richiede la chiusura e la riapertura di TalkBox dopo aver attivato il permesso."
},
"inputMonitoring": {
"title": "Concedi il Monitoraggio input per attivare la scorciatoia globale",
"body": "Voicebox richiede <path>Impostazioni di Sistema → Privacy e Sicurezza → Monitoraggio input</path> per rilevare la tua combinazione di dettatura. L'opzione è attiva, ma macOS sta bloccando gli eventi della tastiera finché non lo consenti.",
"body": "TalkBox richiede <path>Impostazioni di Sistema → Privacy e Sicurezza → Monitoraggio input</path> per rilevare la tua combinazione di dettatura. L'opzione è attiva, ma macOS sta bloccando gli eventi della tastiera finché non lo consenti.",
"openSettings": "Opzioni Impostazioni",
"recheck": "L'ho abilitato",
"rechecking": "Verifica in corso…",
"stillMissing": "Non ancora rilevato. Di solito macOS richiede la chiusura e la riapertura di Voicebox dopo aver attivato il permesso."
"stillMissing": "Non ancora rilevato. Di solito macOS richiede la chiusura e la riapertura di TalkBox dopo aver attivato il permesso."
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "Crea voce",
"import": {
"invalidTitle": "Tipo di file non valido",
"invalidDescription": "Seleziona un file .voicebox.zip valido",
"invalidDescription": "Seleziona un file .talkbox.zip valido",
"successTitle": "Profilo importato",
"successDescription": "Profilo vocale importato con successo",
"failedTitle": "Impossibile importare il profilo",
@@ -748,7 +748,7 @@
},
"language": {
"label": "Lingua",
"description": "Scegli la lingua di visualizzazione di Voicebox."
"description": "Scegli la lingua di visualizzazione di TalkBox."
},
"theme": {
"label": "Tema",
@@ -769,7 +769,7 @@
},
"serverUrl": {
"title": "URL del server",
"description": "L'indirizzo del server backend di Voicebox.",
"description": "L'indirizzo del server backend di TalkBox.",
"invalidUrl": "Inserisci un URL valido",
"updatedTitle": "URL del server aggiornato",
"updatedDescription": "Connesso a {{url}}"
@@ -824,7 +824,7 @@
},
"api": {
"title": "Accesso API",
"description": "Integra Voicebox nel tuo flusso di lavoro tramite l'API REST all'indirizzo <code>{{url}}</code>",
"description": "Integra TalkBox nel tuo flusso di lavoro tramite l'API REST all'indirizzo <code>{{url}}</code>",
"viewReference": "Visualizza il riferimento API completo",
"endpoints": {
"generate": "Genera testo parlato",
@@ -913,7 +913,7 @@
},
"autoPaste": {
"title": "Incollo automatico nel campo di testo attivo",
"description": "Se un campo di inserimento testo è attivo in un'altra app, incolla direttamente al suo interno. Voicebox salva e ripristina il contenuto precedente dei tuoi appunti."
"description": "Se un campo di inserimento testo è attivo in un'altra app, incolla direttamente al suo interno. TalkBox salva e ripristina il contenuto precedente dei tuoi appunti."
}
},
"transcription": {
@@ -921,7 +921,7 @@
"description": "Scegli quale modello di riconoscimento vocale (speech-to-text) eseguire sulle tue acquisizioni.",
"model": {
"title": "Modello di trascrizione",
"description": "Whisper è integrato in Voicebox ed è eseguito interamente sul tuo computer.",
"description": "Whisper è integrato in TalkBox ed è eseguito interamente sul tuo computer.",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -997,7 +997,7 @@
},
"storage": {
"title": "Archiviazione",
"description": "Le acquisizioni vengono salvate come file audio e di trascrizione accoppiati nella cartella dei dati di Voicebox.",
"description": "Le acquisizioni vengono salvate come file audio e di trascrizione accoppiati nella cartella dei dati di TalkBox.",
"retention": {
"title": "Conservazione",
"description": "Per quanto tempo conservare le acquisizioni. Si applica sia all'audio che alle trascrizioni.",
@@ -1014,7 +1014,7 @@
},
"sidebar": {
"aboutTitle": "Informazioni sulle Acquisizioni",
"aboutBody": "Tieni premuta una scorciatoia in qualsiasi punto del tuo computer, parla e Voicebox trasformerà la tua voce in testo. Riproducilo con qualsiasi voce clonata, incollalo in qualsiasi app o invialo direttamente al tuo agente di programmazione.",
"aboutBody": "Tieni premuta una scorciatoia in qualsiasi punto del tuo computer, parla e TalkBox trasformerà la tua voce in testo. Riproducilo con qualsiasi voce clonata, incollalo in qualsiasi app o invialo direttamente al tuo agente di programmazione.",
"differencesTitle": "Cosa cambia",
"local": {
"title": "Interamente locale.",
@@ -1030,14 +1030,14 @@
},
"windowsCaveat": {
"title": "Attenzione su Windows",
"body": "La scorciatoia non si attiverà mentre Voicebox stesso o qualsiasi applicazione eseguita come amministratore è in primo piano. Ci stiamo lavorando."
"body": "La scorciatoia non si attiverà mentre TalkBox stesso o qualsiasi applicazione eseguita come amministratore è in primo piano. Ci stiamo lavorando."
}
}
},
"mcp": {
"install": {
"title": "Installa nel tuo agente",
"description": "Voicebox espone un server MCP locale ogni volta che l'app è aperta. Incolla uno di questi frammenti nella configurazione MCP del tuo agente.",
"description": "TalkBox espone un server MCP locale ogni volta che l'app è aperta. Incolla uno di questi frammenti nella configurazione MCP del tuo agente.",
"http": {
"title": "HTTP (consigliato)",
"description": "Per i client che supportano HTTP MCP — Claude Code, Cursor, Windsurf, VS Code."
@@ -1055,15 +1055,15 @@
},
"defaultVoice": {
"title": "Voce predefinita",
"description": "Utilizzata quando un agente chiama voicebox.speak senza specificare un profilo e non ha un'associazione per singolo client.",
"description": "Utilizzata quando un agente chiama talkbox.speak senza specificare un profilo e non ha un'associazione per singolo client.",
"label": "Voce di riproduzione predefinita",
"labelHint": "Condivisa con il menu a discesa 'Riproduci come voce' della scheda Acquisizioni — una sola voce predefinita per la riproduzione passiva.",
"none": "(nessuna)"
},
"bindings": {
"title": "Voce per singolo agente",
"description": "Associa agenti specifici a voci specifiche, in modo da poter capire chi sta parlando senza guardare lo schermo. L'agente si identifica tramite l'intestazione X-Voicebox-Client-Id (o la variabile d'ambiente VOICEBOX_CLIENT_ID per stdio).",
"empty": "Ancora nessuna associazione. Aggiungine una qui sotto, quindi configura il tuo client MCP per inviare il corrispondente <code>X-Voicebox-Client-Id</code>.",
"description": "Associa agenti specifici a voci specifiche, in modo da poter capire chi sta parlando senza guardare lo schermo. L'agente si identifica tramite l'intestazione X-TalkBox-Client-Id (o la variabile d'ambiente TALKBOX_CLIENT_ID per stdio).",
"empty": "Ancora nessuna associazione. Aggiungine una qui sotto, quindi configura il tuo client MCP per inviare il corrispondente <code>X-TalkBox-Client-Id</code>.",
"lastSeen": "ultimo rilevamento {{when}}",
"lastSeenTitle": "Ultimo rilevamento {{when}}",
"neverConnected": "mai connesso",
@@ -1078,7 +1078,7 @@
},
"sidebar": {
"aboutTitle": "Informazioni su MCP",
"aboutBody": "Il protocollo Model Context Protocol consente al tuo agente di programmazione IA — Claude Code, Cursor, Windsurf — di chiamare gli strumenti di Voicebox. Parla con una voce clonata, trascrivi tracce audio, sfoglia le acquisizioni.",
"aboutBody": "Il protocollo Model Context Protocol consente al tuo agente di programmazione IA — Claude Code, Cursor, Windsurf — di chiamare gli strumenti di TalkBox. Parla con una voce clonata, trascrivi tracce audio, sfoglia le acquisizioni.",
"toolsTitle": "Strumenti disponibili",
"tools": {
"speak": "Pronuncia il testo all'interno di un profilo vocale.",
@@ -1137,7 +1137,7 @@
"deleteCuda": "Impossibile eliminare il backend CUDA",
"deleteRocm": "Impossibile eliminare il backend ROCm"
},
"footer": "Voicebox rileva e utilizza automaticamente la migliore GPU disponibile sul tuo sistema. Sui Mac con chip Apple Silicon, il backend MLX viene eseguito nativamente sul Neural Engine e sulla GPU tramite Metal Performance Shaders (MPS), senza richiedere alcuna configurazione aggiuntiva. Su Windows, puoi scaricare i backend opzionali CUDA (NVIDIA) o ROCm (AMD) per l'inferenza con accelerazione hardware. Dove disponibili tramite PyTorch, sono supportati anche Intel XPU e DirectML. Quando non viene rilevata alcuna GPU, Voicebox si affida alla CPU — tutti i motori continuano a funzionare, solo più lentamente.",
"footer": "TalkBox rileva e utilizza automaticamente la migliore GPU disponibile sul tuo sistema. Sui Mac con chip Apple Silicon, il backend MLX viene eseguito nativamente sul Neural Engine e sulla GPU tramite Metal Performance Shaders (MPS), senza richiedere alcuna configurazione aggiuntiva. Su Windows, puoi scaricare i backend opzionali CUDA (NVIDIA) o ROCm (AMD) per l'inferenza con accelerazione hardware. Dove disponibili tramite PyTorch, sono supportati anche Intel XPU e DirectML. Quando non viene rilevata alcuna GPU, TalkBox si affida alla CPU — tutti i motori continuano a funzionare, solo più lentamente.",
"rocm": {
"title": "Backend AMD ROCm",
"activeTitle": "Backend ROCm attivo",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "入力監視の権限",
"ready": "macOS が Voicebox にグローバルショートカットの検出を許可しています。",
"missing": "macOS で Voicebox にグローバルショートカットの検出を許可する必要があります。",
"ready": "macOS が TalkBox にグローバルショートカットの検出を許可しています。",
"missing": "macOS で TalkBox にグローバルショートカットの検出を許可する必要があります。",
"openSettings": "設定を開く"
},
"accessibility": {
"label": "アクセシビリティの権限",
"ready": "Voicebox が他のアプリに文字起こしを貼り付けできます。",
"ready": "TalkBox が他のアプリに文字起こしを貼り付けできます。",
"missing": "フォーカス中のアプリに文字起こしを貼り付けるために必要です。",
"openSettings": "設定を開く"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "自動貼り付けを有効にするためアクセシビリティの権限を付与してください",
"body": "他のアプリに文字起こしを貼り付けるには、Voicebox に <path>「システム設定」→「プライバシーとセキュリティ」→「アクセシビリティ」</path> の許可が必要です。許可がなくてもディクテーションはキャプチャタブに保存されます。",
"body": "他のアプリに文字起こしを貼り付けるには、TalkBox に <path>「システム設定」→「プライバシーとセキュリティ」→「アクセシビリティ」</path> の許可が必要です。許可がなくてもディクテーションはキャプチャタブに保存されます。",
"openSettings": "設定を開く",
"recheck": "有効にしました",
"rechecking": "確認中…",
"stillMissing": "まだ検出されません。macOS では権限を切り替えた後、Voicebox を終了して再起動する必要があります。"
"stillMissing": "まだ検出されません。macOS では権限を切り替えた後、TalkBox を終了して再起動する必要があります。"
},
"inputMonitoring": {
"title": "グローバルショートカットを有効にするため入力監視の権限を付与してください",
"body": "ディクテーションのコードを検出するには、Voicebox に <path>「システム設定」→「プライバシーとセキュリティ」→「入力監視」</path> の許可が必要です。トグルは有効ですが、許可されるまで macOS がキーイベントをブロックしています。",
"body": "ディクテーションのコードを検出するには、TalkBox に <path>「システム設定」→「プライバシーとセキュリティ」→「入力監視」</path> の許可が必要です。トグルは有効ですが、許可されるまで macOS がキーイベントをブロックしています。",
"openSettings": "設定を開く",
"recheck": "有効にしました",
"rechecking": "確認中…",
"stillMissing": "まだ検出されません。macOS では権限を切り替えた後、Voicebox を終了して再起動する必要があります。"
"stillMissing": "まだ検出されません。macOS では権限を切り替えた後、TalkBox を終了して再起動する必要があります。"
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "ボイスを作成",
"import": {
"invalidTitle": "無効なファイル形式",
"invalidDescription": "有効な .voicebox.zip ファイルを選択してください",
"invalidDescription": "有効な .talkbox.zip ファイルを選択してください",
"successTitle": "プロファイルをインポートしました",
"successDescription": "ボイスプロファイルを正常にインポートしました",
"failedTitle": "プロファイルのインポートに失敗しました",
@@ -748,7 +748,7 @@
},
"language": {
"label": "言語",
"description": "Voicebox の表示言語を選択します。"
"description": "TalkBox の表示言語を選択します。"
},
"theme": {
"label": "テーマ",
@@ -764,7 +764,7 @@
"discord": { "title": "Discord に参加", "subtitle": "ヘルプやボイスの共有" },
"serverUrl": {
"title": "サーバー URL",
"description": "Voicebox バックエンドサーバーのアドレス。",
"description": "TalkBox バックエンドサーバーのアドレス。",
"invalidUrl": "有効な URL を入力してください",
"updatedTitle": "サーバー URL を更新しました",
"updatedDescription": "{{url}} に接続しました"
@@ -819,7 +819,7 @@
},
"api": {
"title": "API アクセス",
"description": "<code>{{url}}</code> の REST API を通じて Voicebox をワークフローに統合できます",
"description": "<code>{{url}}</code> の REST API を通じて TalkBox をワークフローに統合できます",
"viewReference": "API リファレンス全文を表示",
"endpoints": {
"generate": "音声を生成",
@@ -908,7 +908,7 @@
},
"autoPaste": {
"title": "フォーカス中のテキストフィールドに自動貼り付け",
"description": "他のアプリでテキスト入力欄がフォーカスされている場合、直接そこに貼り付けます。Voicebox はクリップボードの内容を一旦保存し、後で復元します。"
"description": "他のアプリでテキスト入力欄がフォーカスされている場合、直接そこに貼り付けます。TalkBox はクリップボードの内容を一旦保存し、後で復元します。"
}
},
"transcription": {
@@ -916,7 +916,7 @@
"description": "キャプチャに使う音声認識モデルを選びます。",
"model": {
"title": "文字起こしモデル",
"description": "Whisper は Voicebox に同梱されており、すべてマシン上で動作します。",
"description": "Whisper は TalkBox に同梱されており、すべてマシン上で動作します。",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -992,7 +992,7 @@
},
"storage": {
"title": "ストレージ",
"description": "キャプチャは Voicebox のデータディレクトリに、音声と文字起こしのペアファイルとして保存されます。",
"description": "キャプチャは TalkBox のデータディレクトリに、音声と文字起こしのペアファイルとして保存されます。",
"retention": {
"title": "保持期間",
"description": "キャプチャを保持する期間です。音声と文字起こしの両方に適用されます。",
@@ -1009,7 +1009,7 @@
},
"sidebar": {
"aboutTitle": "キャプチャについて",
"aboutBody": "マシン上のどこからでもショートカットを押し続けて話すと、Voicebox があなたの声をテキストに変換します。クローンしたどのボイスでも再生でき、任意のアプリに貼り付けたり、コーディングエージェントに渡したりできます。",
"aboutBody": "マシン上のどこからでもショートカットを押し続けて話すと、TalkBox があなたの声をテキストに変換します。クローンしたどのボイスでも再生でき、任意のアプリに貼り付けたり、コーディングエージェントに渡したりできます。",
"differencesTitle": "ここが違います",
"local": {
"title": "完全にローカル。",
@@ -1025,14 +1025,14 @@
},
"windowsCaveat": {
"title": "Windows での注意点",
"body": "Voicebox 自体や管理者として実行中のアプリにフォーカスがあるあいだは、ショートカットが反応しません。現在対応中です。"
"body": "TalkBox 自体や管理者として実行中のアプリにフォーカスがあるあいだは、ショートカットが反応しません。現在対応中です。"
}
}
},
"mcp": {
"install": {
"title": "エージェントにインストール",
"description": "アプリが開いている間、Voicebox はローカルで MCP サーバーを公開します。以下のスニペットを、お使いのエージェントの MCP 設定に貼り付けてください。",
"description": "アプリが開いている間、TalkBox はローカルで MCP サーバーを公開します。以下のスニペットを、お使いのエージェントの MCP 設定に貼り付けてください。",
"http": {
"title": "HTTP(推奨)",
"description": "HTTP MCP に対応するクライアント向け — Claude Code、Cursor、Windsurf、VS Code。"
@@ -1050,15 +1050,15 @@
},
"defaultVoice": {
"title": "デフォルトボイス",
"description": "エージェントが特定のプロファイルを指定せず、クライアントごとのバインディングもない状態で voicebox.speak を呼び出したときに使われます。",
"description": "エージェントが特定のプロファイルを指定せず、クライアントごとのバインディングもない状態で talkbox.speak を呼び出したときに使われます。",
"label": "デフォルトの再生ボイス",
"labelHint": "キャプチャタブの「ボイスで再生」ドロップダウンと共有 — パッシブ再生用に 1 つのデフォルトボイスを設定します。",
"none": "(なし)"
},
"bindings": {
"title": "エージェントごとのボイス",
"description": "特定のエージェントに特定のボイスを割り当てて、見なくても誰が話しているか分かるようにします。エージェントは X-Voicebox-Client-Id ヘッダー(stdio の場合は VOICEBOX_CLIENT_ID 環境変数)で自身を識別します。",
"empty": "バインディングはまだありません。下から追加し、対応する <code>X-Voicebox-Client-Id</code> を送信するように MCP クライアントを設定してください。",
"description": "特定のエージェントに特定のボイスを割り当てて、見なくても誰が話しているか分かるようにします。エージェントは X-TalkBox-Client-Id ヘッダー(stdio の場合は TALKBOX_CLIENT_ID 環境変数)で自身を識別します。",
"empty": "バインディングはまだありません。下から追加し、対応する <code>X-TalkBox-Client-Id</code> を送信するように MCP クライアントを設定してください。",
"lastSeen": "最終接続 {{when}}",
"lastSeenTitle": "最終接続 {{when}}",
"neverConnected": "未接続",
@@ -1073,7 +1073,7 @@
},
"sidebar": {
"aboutTitle": "MCP について",
"aboutBody": "Model Context Protocol を使うと、Claude Code、Cursor、Windsurf などの AI コーディングエージェントから Voicebox のツールを呼び出せます。クローンしたボイスで発話したり、音声を文字起こししたり、キャプチャを参照したりできます。",
"aboutBody": "Model Context Protocol を使うと、Claude Code、Cursor、Windsurf などの AI コーディングエージェントから TalkBox のツールを呼び出せます。クローンしたボイスで発話したり、音声を文字起こししたり、キャプチャを参照したりできます。",
"toolsTitle": "利用可能なツール",
"tools": {
"speak": "ボイスプロファイルでテキストを発話します。",
@@ -1128,7 +1128,7 @@
"switchCpu": "CPU への切り替えに失敗しました",
"deleteCuda": "CUDA バックエンドの削除に失敗しました"
},
"footer": "Voicebox はシステムで利用可能な最適な GPU を自動で検出し使用します。Apple Silicon Mac では、MLX バックエンドが Metal Performance Shaders(MPS)を介して Neural Engine と GPU 上でネイティブに動作し、追加のセットアップは不要です。NVIDIA GPU 搭載の Windows および Linux では、オプションの CUDA バックエンドをダウンロードしてハードウェアアクセラレーションによる推論が可能です。AMD ROCm、Intel XPU、DirectML も PyTorch を通じて利用可能な環境でサポートされます。GPU が検出されない場合、Voicebox は CPU にフォールバックし、すべてのエンジンはそのまま動作しますが速度は低下します。"
"footer": "TalkBox はシステムで利用可能な最適な GPU を自動で検出し使用します。Apple Silicon Mac では、MLX バックエンドが Metal Performance Shaders(MPS)を介して Neural Engine と GPU 上でネイティブに動作し、追加のセットアップは不要です。NVIDIA GPU 搭載の Windows および Linux では、オプションの CUDA バックエンドをダウンロードしてハードウェアアクセラレーションによる推論が可能です。AMD ROCm、Intel XPU、DirectML も PyTorch を通じて利用可能な環境でサポートされます。GPU が検出されない場合、TalkBox は CPU にフォールバックし、すべてのエンジンはそのまま動作しますが速度は低下します。"
},
"logs": {
"title": "サーバーログ",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "입력 모니터링 권한",
"ready": "macOS가 Voicebox의 전역 단축키 감지를 허용합니다.",
"missing": "macOS에서 Voicebox의 전역 단축키 감지를 허용해야 합니다.",
"ready": "macOS가 TalkBox의 전역 단축키 감지를 허용합니다.",
"missing": "macOS에서 TalkBox의 전역 단축키 감지를 허용해야 합니다.",
"openSettings": "설정 열기"
},
"accessibility": {
"label": "손쉬운 사용 권한",
"ready": "Voicebox가 다른 앱에 대본을 붙여넣을 수 있습니다.",
"ready": "TalkBox가 다른 앱에 대본을 붙여넣을 수 있습니다.",
"missing": "대본을 포커스된 앱에 붙여넣는 데 필요합니다.",
"openSettings": "설정 열기"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "자동 붙여넣기를 활성화하려면 손쉬운 사용 권한을 허용하세요",
"body": "Voicebox가 다른 앱에 대본을 붙여넣으려면 <path>시스템 설정 → 개인정보 보호 및 보안 → 손쉬운 사용</path> 권한이 필요합니다. 권한이 없어도 받아쓰기는 캡처 탭에 저장됩니다.",
"body": "TalkBox가 다른 앱에 대본을 붙여넣으려면 <path>시스템 설정 → 개인정보 보호 및 보안 → 손쉬운 사용</path> 권한이 필요합니다. 권한이 없어도 받아쓰기는 캡처 탭에 저장됩니다.",
"openSettings": "설정 열기",
"recheck": "활성화했습니다",
"rechecking": "확인 중…",
"stillMissing": "아직 감지되지 않았습니다. macOS에서는 일반적으로 권한을 켠 후 Voicebox를 종료하고 다시 열어야 합니다."
"stillMissing": "아직 감지되지 않았습니다. macOS에서는 일반적으로 권한을 켠 후 TalkBox를 종료하고 다시 열어야 합니다."
},
"inputMonitoring": {
"title": "전역 단축키를 활성화하려면 입력 모니터링을 허용하세요",
"body": "Voicebox가 받아쓰기 단축키를 감지하려면 <path>시스템 설정 → 개인정보 보호 및 보안 → 입력 모니터링</path> 권한이 필요합니다. 스위치가 켜져 있지만 macOS에서 키 이벤트를 차단하고 있습니다.",
"body": "TalkBox가 받아쓰기 단축키를 감지하려면 <path>시스템 설정 → 개인정보 보호 및 보안 → 입력 모니터링</path> 권한이 필요합니다. 스위치가 켜져 있지만 macOS에서 키 이벤트를 차단하고 있습니다.",
"openSettings": "설정 열기",
"recheck": "활성화했습니다",
"rechecking": "확인 중…",
"stillMissing": "아직 감지되지 않았습니다. macOS에서는 일반적으로 권한을 켠 후 Voicebox를 종료하고 다시 열어야 합니다."
"stillMissing": "아직 감지되지 않았습니다. macOS에서는 일반적으로 권한을 켠 후 TalkBox를 종료하고 다시 열어야 합니다."
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "음성 만들기",
"import": {
"invalidTitle": "잘못된 파일 형식",
"invalidDescription": "올바른 .voicebox.zip 파일을 선택해 주세요",
"invalidDescription": "올바른 .talkbox.zip 파일을 선택해 주세요",
"successTitle": "프로필 가져오기 완료",
"successDescription": "음성 프로필을 성공적으로 가져왔습니다",
"failedTitle": "프로필 가져오기 실패",
@@ -748,7 +748,7 @@
},
"language": {
"label": "언어",
"description": "Voicebox의 표시 언어를 선택하세요."
"description": "TalkBox의 표시 언어를 선택하세요."
},
"theme": {
"label": "테마",
@@ -764,7 +764,7 @@
"discord": { "title": "Discord 참여하기", "subtitle": "도움말 & 음성 공유" },
"serverUrl": {
"title": "서버 URL",
"description": "voicebox 백엔드 서버 주소입니다.",
"description": "talkbox 백엔드 서버 주소입니다.",
"invalidUrl": "올바른 URL을 입력해 주세요",
"updatedTitle": "서버 URL 업데이트됨",
"updatedDescription": "{{url}}에 연결되었습니다"
@@ -819,7 +819,7 @@
},
"api": {
"title": "API 액세스",
"description": "<code>{{url}}</code>에서 REST API를 통해 Voicebox를 워크플로우에 통합하세요.",
"description": "<code>{{url}}</code>에서 REST API를 통해 TalkBox를 워크플로우에 통합하세요.",
"viewReference": "전체 API 참조 보기",
"endpoints": {
"generate": "음성 생성",
@@ -908,7 +908,7 @@
},
"autoPaste": {
"title": "포커스된 텍스트 필드에 자동 붙여넣기",
"description": "다른 앱에서 텍스트 입력이 포커스되어 있으면 직접 붙여넣습니다. Voicebox가 클립보드 내용을 저장하고 복원합니다."
"description": "다른 앱에서 텍스트 입력이 포커스되어 있으면 직접 붙여넣습니다. TalkBox가 클립보드 내용을 저장하고 복원합니다."
}
},
"transcription": {
@@ -916,7 +916,7 @@
"description": "캡처에 사용할 음성-텍스트 모델을 선택하세요.",
"model": {
"title": "변환 모델",
"description": "Whisper가 Voicebox에 포함되어 있으며 기기에서 완전히 실행됩니다.",
"description": "Whisper가 TalkBox에 포함되어 있으며 기기에서 완전히 실행됩니다.",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -992,7 +992,7 @@
},
"storage": {
"title": "저장소",
"description": "캡처는 Voicebox 데이터 디렉토리에 오디오와 대본 파일 쌍으로 저장됩니다.",
"description": "캡처는 TalkBox 데이터 디렉토리에 오디오와 대본 파일 쌍으로 저장됩니다.",
"retention": {
"title": "보관 기간",
"description": "캡처 보관 기간입니다. 오디오와 대본 모두에 적용됩니다.",
@@ -1009,7 +1009,7 @@
},
"sidebar": {
"aboutTitle": "캡처 정보",
"aboutBody": "어디서든 단축키를 누르고 말하면 Voicebox가 음성을 텍스트로 변환합니다. 복제된 음성으로 재생하고, 앱에 붙여넣고, 코딩 에이전트로 보내세요.",
"aboutBody": "어디서든 단축키를 누르고 말하면 TalkBox가 음성을 텍스트로 변환합니다. 복제된 음성으로 재생하고, 앱에 붙여넣고, 코딩 에이전트로 보내세요.",
"differencesTitle": "차이점",
"local": {
"title": "완전 로컬.",
@@ -1025,14 +1025,14 @@
},
"windowsCaveat": {
"title": "Windows 참고사항",
"body": "Voicebox 자체 또는 관리자 권한으로 실행 중인 앱이 포커스된 경우 단축키가 작동하지 않습니다. 개선 중입니다."
"body": "TalkBox 자체 또는 관리자 권한으로 실행 중인 앱이 포커스된 경우 단축키가 작동하지 않습니다. 개선 중입니다."
}
}
},
"mcp": {
"install": {
"title": "에이전트에 설치",
"description": "Voicebox는 앱이 열려 있을 때 로컬 MCP 서버를 제공합니다. 다음 중 하나를 에이전트의 MCP 설정에 붙여넣으세요.",
"description": "TalkBox는 앱이 열려 있을 때 로컬 MCP 서버를 제공합니다. 다음 중 하나를 에이전트의 MCP 설정에 붙여넣으세요.",
"http": {
"title": "HTTP (권장)",
"description": "HTTP MCP를 사용하는 클라이언트용 — Claude Code, Cursor, Windsurf, VS Code."
@@ -1050,15 +1050,15 @@
},
"defaultVoice": {
"title": "기본 음성",
"description": "에이전트가 특정 프로필 없이 voicebox.speak를 호출하고 클라이언트별 바인딩도 없을 때 사용됩니다.",
"description": "에이전트가 특정 프로필 없이 talkbox.speak를 호출하고 클라이언트별 바인딩도 없을 때 사용됩니다.",
"label": "기본 재생 음성",
"labelHint": "캡처 탭의 'Play as 음성' 드롭다운과 공유 — 수동 재생용 기본 음성입니다.",
"none": "(없음)"
},
"bindings": {
"title": "에이전트별 음성",
"description": "특정 에이전트를 특정 음성에 바인딩하여 누가 말하는지 바로 알 수 있습니다. 에이전트는 X-Voicebox-Client-Id 헤더(또는 stdio용 VOICEBOX_CLIENT_ID 환경변수)로 자신을 식별합니다.",
"empty": "아직 바인딩이 없습니다. 아래에서 추가한 후 MCP 클라이언트가 일치하는 <code>X-Voicebox-Client-Id</code>를 보내도록 설정하세요.",
"description": "특정 에이전트를 특정 음성에 바인딩하여 누가 말하는지 바로 알 수 있습니다. 에이전트는 X-TalkBox-Client-Id 헤더(또는 stdio용 TALKBOX_CLIENT_ID 환경변수)로 자신을 식별합니다.",
"empty": "아직 바인딩이 없습니다. 아래에서 추가한 후 MCP 클라이언트가 일치하는 <code>X-TalkBox-Client-Id</code>를 보내도록 설정하세요.",
"lastSeen": "마지막 접속 {{when}}",
"lastSeenTitle": "마지막 접속 {{when}}",
"neverConnected": "연결된 적 없음",
@@ -1073,7 +1073,7 @@
},
"sidebar": {
"aboutTitle": "MCP 정보",
"aboutBody": "Model Context Protocol을 통해 AI 코딩 에이전트(Claude Code, Cursor, Windsurf)가 Voicebox 도구를 호출할 수 있습니다. 복제된 음성으로 말하고, 오디오를 변환하고, 캡처를 탐색하세요.",
"aboutBody": "Model Context Protocol을 통해 AI 코딩 에이전트(Claude Code, Cursor, Windsurf)가 TalkBox 도구를 호출할 수 있습니다. 복제된 음성으로 말하고, 오디오를 변환하고, 캡처를 탐색하세요.",
"toolsTitle": "사용 가능한 도구",
"tools": {
"speak": "음성 프로필로 텍스트 읽기.",
@@ -1133,7 +1133,7 @@
"deleteCuda": "CUDA 백엔드 삭제 실패",
"deleteRocm": "ROCm 백엔드 삭제 실패"
},
"footer": "Voicebox는 시스템에서 사용 가능한 최고의 GPU를 자동으로 감지하여 사용합니다. Apple Silicon Mac에서는 Metal Performance Shaders(MPS)를 통해 MLX 백엔드가 Neural Engine과 GPU에서 기본 실행되며 추가 설정이 필요하지 않습니다. Windows에서는 선택적 CUDA(NVIDIA) 또는 ROCm(AMD) 백엔드를 다운로드하여 하드웨어 가속 추론을 사용할 수 있습니다. Intel XPU와 DirectML도 PyTorch를 통해 지원됩니다. GPU가 감지되지 않으면 Voicebox가 CPU로 대체됩니다 — 모든 엔진이 작동하지만 더 느립니다.",
"footer": "TalkBox는 시스템에서 사용 가능한 최고의 GPU를 자동으로 감지하여 사용합니다. Apple Silicon Mac에서는 Metal Performance Shaders(MPS)를 통해 MLX 백엔드가 Neural Engine과 GPU에서 기본 실행되며 추가 설정이 필요하지 않습니다. Windows에서는 선택적 CUDA(NVIDIA) 또는 ROCm(AMD) 백엔드를 다운로드하여 하드웨어 가속 추론을 사용할 수 있습니다. Intel XPU와 DirectML도 PyTorch를 통해 지원됩니다. GPU가 감지되지 않으면 TalkBox가 CPU로 대체됩니다 — 모든 엔진이 작동하지만 더 느립니다.",
"rocm": {
"title": "AMD ROCm 백엔드",
"activeTitle": "ROCm 백엔드 활성",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "Permissão de Monitoramento de Entrada",
"ready": "O macOS permite que o Voicebox detecte seu atalho global.",
"missing": "O macOS precisa permitir que o Voicebox detecte o atalho global.",
"ready": "O macOS permite que o TalkBox detecte seu atalho global.",
"missing": "O macOS precisa permitir que o TalkBox detecte o atalho global.",
"openSettings": "Abrir Ajustes"
},
"accessibility": {
"label": "Permissão de Acessibilidade",
"ready": "O Voicebox pode colar transcrições em outros apps.",
"ready": "O TalkBox pode colar transcrições em outros apps.",
"missing": "Necessária para que as transcrições possam ser coladas no app em foco.",
"openSettings": "Abrir Ajustes"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "Conceda a permissão de Acessibilidade para ativar a colagem automática",
"body": "O Voicebox precisa de <path>Ajustes do Sistema → Privacidade e Segurança → Acessibilidade</path> para colar transcrições em outros apps. Seu ditado ainda aparece na aba Capturas sem isso.",
"body": "O TalkBox precisa de <path>Ajustes do Sistema → Privacidade e Segurança → Acessibilidade</path> para colar transcrições em outros apps. Seu ditado ainda aparece na aba Capturas sem isso.",
"openSettings": "Abrir Ajustes",
"recheck": "Já ativei",
"rechecking": "Verificando…",
"stillMissing": "Ainda não detectado. O macOS geralmente exige fechar e reabrir o Voicebox depois de alternar a permissão."
"stillMissing": "Ainda não detectado. O macOS geralmente exige fechar e reabrir o TalkBox depois de alternar a permissão."
},
"inputMonitoring": {
"title": "Conceda Monitoramento de Entrada para ativar o atalho global",
"body": "O Voicebox precisa de <path>Ajustes do Sistema → Privacidade e Segurança → Monitoramento de Entrada</path> para detectar sua combinação de ditado. A opção está ligada, mas o macOS está bloqueando os eventos de tecla até você permitir.",
"body": "O TalkBox precisa de <path>Ajustes do Sistema → Privacidade e Segurança → Monitoramento de Entrada</path> para detectar sua combinação de ditado. A opção está ligada, mas o macOS está bloqueando os eventos de tecla até você permitir.",
"openSettings": "Abrir Ajustes",
"recheck": "Já ativei",
"rechecking": "Verificando…",
"stillMissing": "Ainda não detectado. O macOS geralmente exige fechar e reabrir o Voicebox depois de alternar a permissão."
"stillMissing": "Ainda não detectado. O macOS geralmente exige fechar e reabrir o TalkBox depois de alternar a permissão."
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "Criar Voz",
"import": {
"invalidTitle": "Tipo de arquivo inválido",
"invalidDescription": "Selecione um arquivo .voicebox.zip válido",
"invalidDescription": "Selecione um arquivo .talkbox.zip válido",
"successTitle": "Perfil importado",
"successDescription": "Perfil de voz importado com sucesso",
"failedTitle": "Falha ao importar o perfil",
@@ -748,7 +748,7 @@
},
"language": {
"label": "Idioma",
"description": "Escolha o idioma de exibição do Voicebox."
"description": "Escolha o idioma de exibição do TalkBox."
},
"theme": {
"label": "Tema",
@@ -764,7 +764,7 @@
"discord": { "title": "Entrar no Discord", "subtitle": "Tire dúvidas e compartilhe vozes" },
"serverUrl": {
"title": "URL do Servidor",
"description": "O endereço do seu servidor backend do Voicebox.",
"description": "O endereço do seu servidor backend do TalkBox.",
"invalidUrl": "Digite uma URL válida",
"updatedTitle": "URL do servidor atualizada",
"updatedDescription": "Conectado a {{url}}"
@@ -819,7 +819,7 @@
},
"api": {
"title": "Acesso à API",
"description": "Integre o Voicebox ao seu fluxo de trabalho via API REST em <code>{{url}}</code>",
"description": "Integre o TalkBox ao seu fluxo de trabalho via API REST em <code>{{url}}</code>",
"viewReference": "Ver a referência completa da API",
"endpoints": {
"generate": "Gerar fala",
@@ -908,7 +908,7 @@
},
"autoPaste": {
"title": "Colar automaticamente no campo de texto em foco",
"description": "Se um campo de texto estiver em foco em outro app, cola diretamente nele. O Voicebox salva e restaura o que estava na sua área de transferência."
"description": "Se um campo de texto estiver em foco em outro app, cola diretamente nele. O TalkBox salva e restaura o que estava na sua área de transferência."
}
},
"transcription": {
@@ -916,7 +916,7 @@
"description": "Escolha qual modelo de fala para texto roda nas suas capturas.",
"model": {
"title": "Modelo de transcrição",
"description": "O Whisper vem com o Voicebox e roda inteiramente na sua máquina.",
"description": "O Whisper vem com o TalkBox e roda inteiramente na sua máquina.",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -992,7 +992,7 @@
},
"storage": {
"title": "Armazenamento",
"description": "As capturas são salvas como arquivos pareados de áudio e transcrição no seu diretório de dados do Voicebox.",
"description": "As capturas são salvas como arquivos pareados de áudio e transcrição no seu diretório de dados do TalkBox.",
"retention": {
"title": "Retenção",
"description": "Por quanto tempo manter as capturas. Vale tanto para áudio quanto para transcrições.",
@@ -1009,7 +1009,7 @@
},
"sidebar": {
"aboutTitle": "Sobre as Capturas",
"aboutBody": "Segure um atalho em qualquer lugar da sua máquina, fale, e o Voicebox transforma sua voz em texto. Reproduza-o em qualquer voz clonada, cole-o em qualquer app ou envie-o ao seu agente de programação.",
"aboutBody": "Segure um atalho em qualquer lugar da sua máquina, fale, e o TalkBox transforma sua voz em texto. Reproduza-o em qualquer voz clonada, cole-o em qualquer app ou envie-o ao seu agente de programação.",
"differencesTitle": "O que muda",
"local": {
"title": "Totalmente local.",
@@ -1025,14 +1025,14 @@
},
"windowsCaveat": {
"title": "Atenção no Windows",
"body": "O atalho não dispara enquanto o próprio Voicebox ou qualquer app rodando como administrador estiver em foco. Estamos trabalhando nisso."
"body": "O atalho não dispara enquanto o próprio TalkBox ou qualquer app rodando como administrador estiver em foco. Estamos trabalhando nisso."
}
}
},
"mcp": {
"install": {
"title": "Instalar no seu agente",
"description": "O Voicebox expõe um servidor MCP local sempre que o app está aberto. Cole um destes trechos na configuração de MCP do seu agente.",
"description": "O TalkBox expõe um servidor MCP local sempre que o app está aberto. Cole um destes trechos na configuração de MCP do seu agente.",
"http": {
"title": "HTTP (recomendado)",
"description": "Para clientes que falam MCP via HTTP — Claude Code, Cursor, Windsurf, VS Code."
@@ -1050,15 +1050,15 @@
},
"defaultVoice": {
"title": "Voz padrão",
"description": "Usada quando um agente chama voicebox.speak sem um perfil específico e não tem vínculo por cliente.",
"description": "Usada quando um agente chama talkbox.speak sem um perfil específico e não tem vínculo por cliente.",
"label": "Voz de reprodução padrão",
"labelHint": "Compartilhada com o menu 'Reproduzir como voz' da aba Capturas — uma voz padrão para reprodução passiva.",
"none": "(nenhuma)"
},
"bindings": {
"title": "Voz por agente",
"description": "Vincule agentes específicos a vozes específicas para saber quem está falando sem olhar. O agente se identifica pelo cabeçalho X-Voicebox-Client-Id (ou pela variável de ambiente VOICEBOX_CLIENT_ID no stdio).",
"empty": "Nenhum vínculo ainda. Adicione um abaixo e configure seu cliente MCP para enviar o <code>X-Voicebox-Client-Id</code> correspondente.",
"description": "Vincule agentes específicos a vozes específicas para saber quem está falando sem olhar. O agente se identifica pelo cabeçalho X-TalkBox-Client-Id (ou pela variável de ambiente TALKBOX_CLIENT_ID no stdio).",
"empty": "Nenhum vínculo ainda. Adicione um abaixo e configure seu cliente MCP para enviar o <code>X-TalkBox-Client-Id</code> correspondente.",
"lastSeen": "visto pela última vez {{when}}",
"lastSeenTitle": "Visto pela última vez {{when}}",
"neverConnected": "nunca conectado",
@@ -1073,7 +1073,7 @@
},
"sidebar": {
"aboutTitle": "Sobre o MCP",
"aboutBody": "O Model Context Protocol permite que seu agente de programação com IA — Claude Code, Cursor, Windsurf — chame as ferramentas do Voicebox. Fale em uma voz clonada, transcreva áudio, navegue pelas capturas.",
"aboutBody": "O Model Context Protocol permite que seu agente de programação com IA — Claude Code, Cursor, Windsurf — chame as ferramentas do TalkBox. Fale em uma voz clonada, transcreva áudio, navegue pelas capturas.",
"toolsTitle": "Ferramentas disponíveis",
"tools": {
"speak": "Falar texto em um perfil de voz.",
@@ -1128,7 +1128,7 @@
"switchCpu": "Falha ao mudar para CPU",
"deleteCuda": "Falha ao excluir o backend CUDA"
},
"footer": "O Voicebox detecta e usa automaticamente a melhor GPU disponível no seu sistema. Em Macs com Apple Silicon, o backend MLX roda nativamente no Neural Engine e na GPU via Metal Performance Shaders (MPS), sem configuração adicional. No Windows e no Linux com GPUs NVIDIA, você pode baixar um backend CUDA opcional para inferência acelerada por hardware. AMD ROCm, Intel XPU e DirectML também são suportados quando disponíveis através do PyTorch. Quando nenhuma GPU é detectada, o Voicebox recorre à CPU — todos os motores ainda funcionam, só que mais devagar."
"footer": "O TalkBox detecta e usa automaticamente a melhor GPU disponível no seu sistema. Em Macs com Apple Silicon, o backend MLX roda nativamente no Neural Engine e na GPU via Metal Performance Shaders (MPS), sem configuração adicional. No Windows e no Linux com GPUs NVIDIA, você pode baixar um backend CUDA opcional para inferência acelerada por hardware. AMD ROCm, Intel XPU e DirectML também são suportados quando disponíveis através do PyTorch. Quando nenhuma GPU é detectada, o TalkBox recorre à CPU — todos os motores ainda funcionam, só que mais devagar."
},
"logs": {
"title": "Logs do Servidor",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "「输入监控」权限",
"ready": "macOS 允许 Voicebox 检测您的全局快捷键。",
"missing": "macOS 需要允许 Voicebox 检测全局快捷键。",
"ready": "macOS 允许 TalkBox 检测您的全局快捷键。",
"missing": "macOS 需要允许 TalkBox 检测全局快捷键。",
"openSettings": "打开设置"
},
"accessibility": {
"label": "「辅助功能」权限",
"ready": "Voicebox 可以将转录粘贴到其他应用中。",
"ready": "TalkBox 可以将转录粘贴到其他应用中。",
"missing": "需要此权限,转录才能粘贴到当前焦点应用。",
"openSettings": "打开设置"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "授予「辅助功能」权限以启用自动粘贴",
"body": "Voicebox 需要在 <path>系统设置 → 隐私与安全性 → 辅助功能</path> 中获得权限,才能将转录粘贴到其他应用。即使没有此权限,听写仍会保存到「捕获」标签页。",
"body": "TalkBox 需要在 <path>系统设置 → 隐私与安全性 → 辅助功能</path> 中获得权限,才能将转录粘贴到其他应用。即使没有此权限,听写仍会保存到「捕获」标签页。",
"openSettings": "打开设置",
"recheck": "我已启用",
"rechecking": "检查中…",
"stillMissing": "仍未检测到。切换权限后,macOS 通常需要退出并重新打开 Voicebox。"
"stillMissing": "仍未检测到。切换权限后,macOS 通常需要退出并重新打开 TalkBox。"
},
"inputMonitoring": {
"title": "授予「输入监控」权限以启用全局快捷键",
"body": "Voicebox 需要在 <path>系统设置 → 隐私与安全性 → 输入监控</path> 中获得权限,才能检测您的听写组合键。开关已开启,但在您允许之前 macOS 会拦截按键事件。",
"body": "TalkBox 需要在 <path>系统设置 → 隐私与安全性 → 输入监控</path> 中获得权限,才能检测您的听写组合键。开关已开启,但在您允许之前 macOS 会拦截按键事件。",
"openSettings": "打开设置",
"recheck": "我已启用",
"rechecking": "检查中…",
"stillMissing": "仍未检测到。切换权限后,macOS 通常需要退出并重新打开 Voicebox。"
"stillMissing": "仍未检测到。切换权限后,macOS 通常需要退出并重新打开 TalkBox。"
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "创建声音",
"import": {
"invalidTitle": "文件类型无效",
"invalidDescription": "请选择有效的 .voicebox.zip 文件",
"invalidDescription": "请选择有效的 .talkbox.zip 文件",
"successTitle": "声音已导入",
"successDescription": "成功导入声音档案",
"failedTitle": "导入声音档案失败",
@@ -748,7 +748,7 @@
},
"language": {
"label": "语言",
"description": "选择 Voicebox 的显示语言。"
"description": "选择 TalkBox 的显示语言。"
},
"theme": {
"label": "主题",
@@ -764,7 +764,7 @@
"discord": { "title": "加入 Discord", "subtitle": "获取帮助 & 分享声音" },
"serverUrl": {
"title": "服务器 URL",
"description": "Voicebox 后端服务器的地址。",
"description": "TalkBox 后端服务器的地址。",
"invalidUrl": "请输入有效的 URL",
"updatedTitle": "服务器 URL 已更新",
"updatedDescription": "已连接到 {{url}}"
@@ -819,7 +819,7 @@
},
"api": {
"title": "API 访问",
"description": "通过 <code>{{url}}</code> 的 REST API 将 Voicebox 集成到您的工作流程中",
"description": "通过 <code>{{url}}</code> 的 REST API 将 TalkBox 集成到您的工作流程中",
"viewReference": "查看完整的 API 参考",
"endpoints": {
"generate": "生成语音",
@@ -908,7 +908,7 @@
},
"autoPaste": {
"title": "自动粘贴到当前焦点的文本字段",
"description": "如果其他应用中有焦点输入框,则直接粘贴进去。Voicebox 会保存并恢复您剪贴板原有的内容。"
"description": "如果其他应用中有焦点输入框,则直接粘贴进去。TalkBox 会保存并恢复您剪贴板原有的内容。"
}
},
"transcription": {
@@ -916,7 +916,7 @@
"description": "选择捕获时使用哪个语音转文本模型。",
"model": {
"title": "转录模型",
"description": "Whisper 随 Voicebox 一同发布,完全在您的设备上运行。",
"description": "Whisper 随 TalkBox 一同发布,完全在您的设备上运行。",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -992,7 +992,7 @@
},
"storage": {
"title": "存储",
"description": "捕获以配对的音频和转录文件保存在您的 Voicebox 数据目录中。",
"description": "捕获以配对的音频和转录文件保存在您的 TalkBox 数据目录中。",
"retention": {
"title": "保留",
"description": "捕获保留多久。同时适用于音频和转录。",
@@ -1009,7 +1009,7 @@
},
"sidebar": {
"aboutTitle": "关于「捕获」",
"aboutBody": "在系统的任何位置按住快捷键说话,Voicebox 就会把您的声音转换成文本。可用任何克隆的声音回放、粘贴到任何应用,或导入到您的编程代理中。",
"aboutBody": "在系统的任何位置按住快捷键说话,TalkBox 就会把您的声音转换成文本。可用任何克隆的声音回放、粘贴到任何应用,或导入到您的编程代理中。",
"differencesTitle": "不同之处",
"local": {
"title": "完全本地。",
@@ -1025,14 +1025,14 @@
},
"windowsCaveat": {
"title": "Windows 上的提示",
"body": "当 Voicebox 自身或任何以管理员身份运行的应用处于焦点时,快捷键不会触发。我们正在解决这个问题。"
"body": "当 TalkBox 自身或任何以管理员身份运行的应用处于焦点时,快捷键不会触发。我们正在解决这个问题。"
}
}
},
"mcp": {
"install": {
"title": "安装到您的代理",
"description": "只要应用打开,Voicebox 就会暴露一个本地 MCP 服务器。将以下任一片段粘贴到您的代理 MCP 配置中。",
"description": "只要应用打开,TalkBox 就会暴露一个本地 MCP 服务器。将以下任一片段粘贴到您的代理 MCP 配置中。",
"http": {
"title": "HTTP(推荐)",
"description": "适用于支持 HTTP MCP 的客户端——Claude Code、Cursor、Windsurf、VS Code。"
@@ -1050,15 +1050,15 @@
},
"defaultVoice": {
"title": "默认声音",
"description": "当代理调用 voicebox.speak 但未指定具体档案、且没有按客户端绑定时使用。",
"description": "当代理调用 talkbox.speak 但未指定具体档案、且没有按客户端绑定时使用。",
"label": "默认播放声音",
"labelHint": "与「捕获」标签页的「播放为」下拉菜单共享——被动播放的统一默认声音。",
"none": "(无)"
},
"bindings": {
"title": "按代理设置声音",
"description": "将特定代理绑定到特定声音,这样不用看也能分辨谁在说话。代理通过 X-Voicebox-Client-Id 请求头(stdio 则用 VOICEBOX_CLIENT_ID 环境变量)来标识自己。",
"empty": "暂无绑定。在下方添加一个,然后将您的 MCP 客户端配置为发送匹配的 <code>X-Voicebox-Client-Id</code>。",
"description": "将特定代理绑定到特定声音,这样不用看也能分辨谁在说话。代理通过 X-TalkBox-Client-Id 请求头(stdio 则用 TALKBOX_CLIENT_ID 环境变量)来标识自己。",
"empty": "暂无绑定。在下方添加一个,然后将您的 MCP 客户端配置为发送匹配的 <code>X-TalkBox-Client-Id</code>。",
"lastSeen": "最后活跃 {{when}}",
"lastSeenTitle": "最后活跃 {{when}}",
"neverConnected": "从未连接",
@@ -1073,7 +1073,7 @@
},
"sidebar": {
"aboutTitle": "关于 MCP",
"aboutBody": "Model Context Protocol 让您的 AI 编程代理——Claude Code、Cursor、Windsurf——可以调用 Voicebox 工具。以克隆的声音朗读、转录音频、浏览捕获。",
"aboutBody": "Model Context Protocol 让您的 AI 编程代理——Claude Code、Cursor、Windsurf——可以调用 TalkBox 工具。以克隆的声音朗读、转录音频、浏览捕获。",
"toolsTitle": "可用工具",
"tools": {
"speak": "用声音档案朗读文本。",
@@ -1128,7 +1128,7 @@
"switchCpu": "切换到 CPU 失败",
"deleteCuda": "删除 CUDA 后端失败"
},
"footer": "Voicebox 会自动检测并使用系统上可用的最佳 GPU。在 Apple Silicon Mac 上,MLX 后端通过 Metal Performance Shaders (MPS) 在神经引擎和 GPU 上原生运行,无需额外设置。在配备 NVIDIA GPU 的 Windows 和 Linux 上,您可以下载可选的 CUDA 后端以获得硬件加速推理。AMD ROCm、Intel XPU 和 DirectML 也通过 PyTorch 获得支持。未检测到 GPU 时,Voicebox 会退回到 CPU——所有引擎仍可工作,只是速度较慢。"
"footer": "TalkBox 会自动检测并使用系统上可用的最佳 GPU。在 Apple Silicon Mac 上,MLX 后端通过 Metal Performance Shaders (MPS) 在神经引擎和 GPU 上原生运行,无需额外设置。在配备 NVIDIA GPU 的 Windows 和 Linux 上,您可以下载可选的 CUDA 后端以获得硬件加速推理。AMD ROCm、Intel XPU 和 DirectML 也通过 PyTorch 获得支持。未检测到 GPU 时,TalkBox 会退回到 CPU——所有引擎仍可工作,只是速度较慢。"
},
"logs": {
"title": "服务器日志",
+22 -22
View File
@@ -135,13 +135,13 @@
},
"inputMonitoring": {
"label": "輸入監控權限",
"ready": "macOS 允許 Voicebox 偵測您的全域快捷鍵。",
"missing": "macOS 需要允許 Voicebox 偵測全域快捷鍵。",
"ready": "macOS 允許 TalkBox 偵測您的全域快捷鍵。",
"missing": "macOS 需要允許 TalkBox 偵測全域快捷鍵。",
"openSettings": "開啟設定"
},
"accessibility": {
"label": "輔助使用權限",
"ready": "Voicebox 可將轉錄文字貼到其他 App。",
"ready": "TalkBox 可將轉錄文字貼到其他 App。",
"missing": "需要此權限才能將轉錄文字貼到目前作用中的 App。",
"openSettings": "開啟設定"
}
@@ -149,19 +149,19 @@
"permissions": {
"accessibility": {
"title": "授予輔助使用權限以啟用自動貼上",
"body": "Voicebox 需要 <path>系統設定 → 私隱與安全性 → 輔助使用</path> 才能將轉錄文字貼到其他 App。即使沒有此權限,口述內容仍會出現在「擷取」分頁。",
"body": "TalkBox 需要 <path>系統設定 → 私隱與安全性 → 輔助使用</path> 才能將轉錄文字貼到其他 App。即使沒有此權限,口述內容仍會出現在「擷取」分頁。",
"openSettings": "開啟設定",
"recheck": "我已啟用",
"rechecking": "檢查中…",
"stillMissing": "仍未偵測到。macOS 通常需要在切換權限後結束並重新開啟 Voicebox。"
"stillMissing": "仍未偵測到。macOS 通常需要在切換權限後結束並重新開啟 TalkBox。"
},
"inputMonitoring": {
"title": "授予輸入監控權限以啟用全域快捷鍵",
"body": "Voicebox 需要 <path>系統設定 → 私隱與安全性 → 輸入監控</path> 才能偵測您的口述組合鍵。功能已開啟,但 macOS 在您允許前會封鎖按鍵事件。",
"body": "TalkBox 需要 <path>系統設定 → 私隱與安全性 → 輸入監控</path> 才能偵測您的口述組合鍵。功能已開啟,但 macOS 在您允許前會封鎖按鍵事件。",
"openSettings": "開啟設定",
"recheck": "我已啟用",
"rechecking": "檢查中…",
"stillMissing": "仍未偵測到。macOS 通常需要在切換權限後結束並重新開啟 Voicebox。"
"stillMissing": "仍未偵測到。macOS 通常需要在切換權限後結束並重新開啟 TalkBox。"
}
}
},
@@ -725,7 +725,7 @@
"createVoice": "建立聲音",
"import": {
"invalidTitle": "檔案類型無效",
"invalidDescription": "請選擇有效的 .voicebox.zip 檔案",
"invalidDescription": "請選擇有效的 .talkbox.zip 檔案",
"successTitle": "聲音已匯入",
"successDescription": "成功匯入聲音檔案",
"failedTitle": "匯入聲音檔案失敗",
@@ -748,7 +748,7 @@
},
"language": {
"label": "語言",
"description": "選擇 Voicebox 的顯示語言。"
"description": "選擇 TalkBox 的顯示語言。"
},
"theme": {
"label": "佈景主題",
@@ -764,7 +764,7 @@
"discord": { "title": "加入 Discord", "subtitle": "取得協助與分享聲音" },
"serverUrl": {
"title": "伺服器 URL",
"description": "Voicebox 後端伺服器的位址。",
"description": "TalkBox 後端伺服器的位址。",
"invalidUrl": "請輸入有效的 URL",
"updatedTitle": "伺服器 URL 已更新",
"updatedDescription": "已連線至 {{url}}"
@@ -819,7 +819,7 @@
},
"api": {
"title": "API 存取",
"description": "透過 <code>{{url}}</code> 的 REST API 將 Voicebox 整合到您的工作流程中",
"description": "透過 <code>{{url}}</code> 的 REST API 將 TalkBox 整合到您的工作流程中",
"viewReference": "檢視完整的 API 參考",
"endpoints": {
"generate": "生成語音",
@@ -908,7 +908,7 @@
},
"autoPaste": {
"title": "自動貼到目前作用中的文字欄位",
"description": "若另一個 App 中已聚焦於文字輸入,直接貼進去。Voicebox 會儲存並還原您原本剪貼簿上的內容。"
"description": "若另一個 App 中已聚焦於文字輸入,直接貼進去。TalkBox 會儲存並還原您原本剪貼簿上的內容。"
}
},
"transcription": {
@@ -916,7 +916,7 @@
"description": "選擇用於擷取的語音轉文字模型。",
"model": {
"title": "轉錄模型",
"description": "Whisper 隨 Voicebox 提供,完全在您的電腦上執行。",
"description": "Whisper 隨 TalkBox 提供,完全在您的電腦上執行。",
"base": "Whisper Base · 74M · {{tail}}",
"small": "Whisper Small · 244M · {{tail}}",
"medium": "Whisper Medium · 769M · {{tail}}",
@@ -992,7 +992,7 @@
},
"storage": {
"title": "儲存",
"description": "擷取會以成對的音訊與轉錄文字檔形式,儲存在您的 Voicebox 資料目錄中。",
"description": "擷取會以成對的音訊與轉錄文字檔形式,儲存在您的 TalkBox 資料目錄中。",
"retention": {
"title": "保留期限",
"description": "擷取保留的時間長度。同時適用於音訊與轉錄文字。",
@@ -1009,7 +1009,7 @@
},
"sidebar": {
"aboutTitle": "關於擷取",
"aboutBody": "在電腦上任何位置按住快捷鍵說話,Voicebox 會將您的聲音轉成文字。可以用任何複製的聲音重播、貼到任何 App,或送進您的程式碼代理。",
"aboutBody": "在電腦上任何位置按住快捷鍵說話,TalkBox 會將您的聲音轉成文字。可以用任何複製的聲音重播、貼到任何 App,或送進您的程式碼代理。",
"differencesTitle": "有何不同",
"local": {
"title": "完全在本機。",
@@ -1025,14 +1025,14 @@
},
"windowsCaveat": {
"title": "Windows 上的提醒",
"body": "當 Voicebox 本身或任何以系統管理員身分執行的應用程式取得焦點時,快捷鍵不會觸發。我們正在處理中。"
"body": "當 TalkBox 本身或任何以系統管理員身分執行的應用程式取得焦點時,快捷鍵不會觸發。我們正在處理中。"
}
}
},
"mcp": {
"install": {
"title": "安裝到您的代理",
"description": "App 開啟時 Voicebox 會提供本地 MCP 伺服器。將以下其中一段程式碼貼到您的代理 MCP 設定中。",
"description": "App 開啟時 TalkBox 會提供本地 MCP 伺服器。將以下其中一段程式碼貼到您的代理 MCP 設定中。",
"http": {
"title": "HTTP(建議)",
"description": "適用於支援 HTTP MCP 的客戶端——Claude Code、Cursor、Windsurf、VS Code。"
@@ -1050,15 +1050,15 @@
},
"defaultVoice": {
"title": "預設聲音",
"description": "當代理呼叫 voicebox.speak 卻未指定聲音檔案,且沒有對應客戶端綁定時使用。",
"description": "當代理呼叫 talkbox.speak 卻未指定聲音檔案,且沒有對應客戶端綁定時使用。",
"label": "預設播放聲音",
"labelHint": "與「擷取」分頁的「以聲音播放」下拉選單共用——一個用於被動播放的預設聲音。",
"none": "(無)"
},
"bindings": {
"title": "個別代理聲音",
"description": "將特定代理綁定到特定聲音,讓您不用看就能聽出是誰在說話。代理透過 X-Voicebox-Client-Id 標頭(stdio 則用 VOICEBOX_CLIENT_ID 環境變數)識別自己。",
"empty": "尚無綁定。請在下方新增,然後將您的 MCP 客戶端設定為傳送對應的 <code>X-Voicebox-Client-Id</code>。",
"description": "將特定代理綁定到特定聲音,讓您不用看就能聽出是誰在說話。代理透過 X-TalkBox-Client-Id 標頭(stdio 則用 TALKBOX_CLIENT_ID 環境變數)識別自己。",
"empty": "尚無綁定。請在下方新增,然後將您的 MCP 客戶端設定為傳送對應的 <code>X-TalkBox-Client-Id</code>。",
"lastSeen": "最後出現於 {{when}}",
"lastSeenTitle": "最後出現於 {{when}}",
"neverConnected": "從未連線",
@@ -1073,7 +1073,7 @@
},
"sidebar": {
"aboutTitle": "關於 MCP",
"aboutBody": "Model Context Protocol 讓您的 AI 程式碼代理——Claude Code、Cursor、Windsurf——可以呼叫 Voicebox 工具。以複製的聲音說話、轉錄音訊、瀏覽擷取。",
"aboutBody": "Model Context Protocol 讓您的 AI 程式碼代理——Claude Code、Cursor、Windsurf——可以呼叫 TalkBox 工具。以複製的聲音說話、轉錄音訊、瀏覽擷取。",
"toolsTitle": "可用工具",
"tools": {
"speak": "以聲音檔案說出文字。",
@@ -1128,7 +1128,7 @@
"switchCpu": "切換到 CPU 失敗",
"deleteCuda": "刪除 CUDA 後端失敗"
},
"footer": "Voicebox 會自動偵測並使用系統上可用的最佳 GPU。在 Apple Silicon Mac 上,MLX 後端透過 Metal Performance Shaders (MPS) 在神經引擎與 GPU 上原生執行,無需額外設定。在配備 NVIDIA GPU 的 Windows 與 Linux 上,可以下載選用的 CUDA 後端以取得硬體加速推論。AMD ROCm、Intel XPU 與 DirectML 也透過 PyTorch 獲得支援。未偵測到 GPU 時,Voicebox 會退回到 CPU——所有引擎仍可運作,只是速度較慢。"
"footer": "TalkBox 會自動偵測並使用系統上可用的最佳 GPU。在 Apple Silicon Mac 上,MLX 後端透過 Metal Performance Shaders (MPS) 在神經引擎與 GPU 上原生執行,無需額外設定。在配備 NVIDIA GPU 的 Windows 與 Linux 上,可以下載選用的 CUDA 後端以取得硬體加速推論。AMD ROCm、Intel XPU 與 DirectML 也透過 PyTorch 獲得支援。未偵測到 GPU 時,TalkBox 會退回到 CPU——所有引擎仍可運作,只是速度較慢。"
},
"logs": {
"title": "伺服器日誌",
+2 -2
View File
@@ -54,11 +54,11 @@ export function useExportGeneration() {
.substring(0, 30)
.replace(/[^a-z0-9]/gi, '-')
.toLowerCase();
const filename = `generation-${safeText}-${generationId.substring(0, 8)}.voicebox.zip`;
const filename = `generation-${safeText}-${generationId.substring(0, 8)}.talkbox.zip`;
await platform.filesystem.saveFile(filename, blob, [
{
name: 'Voicebox Generation',
name: 'TalkBox Generation',
extensions: ['zip'],
},
]);
+2 -2
View File
@@ -126,11 +126,11 @@ export function useExportProfile() {
// Get profile name for filename
const profile = await apiClient.getProfile(profileId);
const safeName = profile.name.replace(/[^a-z0-9]/gi, '-').toLowerCase();
const filename = `profile-${safeName}.voicebox.zip`;
const filename = `profile-${safeName}.talkbox.zip`;
await platform.filesystem.saveFile(filename, blob, [
{
name: 'Voicebox Profile',
name: 'TalkBox Profile',
extensions: ['zip'],
},
]);
+1 -1
View File
@@ -36,7 +36,7 @@ export const useAudioChannelStore = create<AudioChannelStore>()(
})),
}),
{
name: 'voicebox-audio-channels',
name: 'talkbox-audio-channels',
},
),
);
+4 -4
View File
@@ -28,7 +28,7 @@ function invalidateAllServerData() {
}
export function getDefaultServerUrl(): string {
const fallback = 'http://127.0.0.1:17493';
const fallback = 'http://127.0.0.1:17494';
if (!import.meta.env.PROD || typeof window === 'undefined') {
return fallback;
@@ -46,11 +46,11 @@ export function getDefaultServerUrl(): string {
return fallback;
}
export function isLoopbackVoiceboxServerUrl(url: string): boolean {
export function isLoopbackTalkBoxServerUrl(url: string): boolean {
try {
const parsed = new URL(url);
return (
parsed.port === '17493' &&
parsed.port === '17494' &&
(parsed.hostname === '127.0.0.1' ||
parsed.hostname === 'localhost' ||
parsed.hostname === '[::1]' ||
@@ -86,7 +86,7 @@ export const useServerStore = create<ServerStore>()(
setCustomModelsDir: (dir) => set({ customModelsDir: dir }),
}),
{
name: 'voicebox-server',
name: 'talkbox-server',
},
),
);
+1 -1
View File
@@ -96,7 +96,7 @@ export const useUIStore = create<UIStore>()(
},
}),
{
name: 'voicebox-ui',
name: 'talkbox-ui',
partialize: (state) => ({
selectedProfileId: state.selectedProfileId,
theme: state.theme,
+1 -1
View File
@@ -1,4 +1,4 @@
// Shared TypeScript types for the voicebox application
// Shared TypeScript types for the talkbox application
export interface VoiceProfile {
id: string;