User-facing docs, About page and website now point at the fork and the Void xbps repository, with one credit line to upstream Vocalinux. Channels this fork does not publish are removed from navigation.
219 lines
7.9 KiB
TypeScript
219 lines
7.9 KiB
TypeScript
import Link from "next/link";
|
|
import { type Metadata } from "next";
|
|
import {
|
|
CheckCircle2,
|
|
ChevronRight,
|
|
Command,
|
|
Cpu,
|
|
Gauge,
|
|
Headphones,
|
|
PanelTop,
|
|
Trophy,
|
|
Waypoints,
|
|
} from "lucide-react";
|
|
import { SeoSubpageShell } from "@/components/seo-subpage-shell";
|
|
import { absoluteUrl, buildPageMetadata } from "@/lib/seo";
|
|
|
|
const comparisonRows = [
|
|
{
|
|
feature: "Interface and daily workflow",
|
|
voculinux: "Full GTK GUI + tray controls + keyboard shortcuts",
|
|
nerdDictation: "CLI-first terminal workflow",
|
|
winner: "Voculinux",
|
|
icon: PanelTop,
|
|
},
|
|
{
|
|
feature: "Offline voice dictation",
|
|
voculinux: "Local engines, plus an optional Remote API",
|
|
nerdDictation: "Offline dictation, single CLI-centered flow",
|
|
winner: "Voculinux",
|
|
icon: Command,
|
|
},
|
|
{
|
|
feature: "Wayland text injection",
|
|
voculinux: "Native IBus integration for dictation in any app",
|
|
nerdDictation: "IBus-based text injection on Wayland",
|
|
winner: "Voculinux",
|
|
icon: Waypoints,
|
|
},
|
|
{
|
|
feature: "GPU acceleration",
|
|
voculinux: "Vulkan acceleration across AMD, Intel, and NVIDIA",
|
|
nerdDictation: "CPU-focused workflow",
|
|
winner: "Voculinux",
|
|
icon: Cpu,
|
|
},
|
|
{
|
|
feature: "Push-to-talk",
|
|
voculinux: "Built-in push-to-talk and toggle mode",
|
|
nerdDictation: "Terminal-first trigger workflow",
|
|
winner: "Voculinux",
|
|
icon: Gauge,
|
|
},
|
|
{
|
|
feature: "Audio feedback",
|
|
voculinux: "Built-in pleasant sound effects for start/stop/error",
|
|
nerdDictation: "No native desktop sound-feedback layer",
|
|
winner: "Voculinux",
|
|
icon: Headphones,
|
|
},
|
|
{
|
|
feature: "System tray integration",
|
|
voculinux: "Tray icon with status, controls, and settings access",
|
|
nerdDictation: "No native system tray app",
|
|
winner: "Voculinux",
|
|
icon: Trophy,
|
|
},
|
|
];
|
|
|
|
export const metadata: Metadata = buildPageMetadata({
|
|
title: "Nerd Dictation Alternative for Linux | Voculinux",
|
|
description:
|
|
"Comparing Voculinux and Nerd Dictation for offline Linux voice dictation. CLI vs GUI, GPU vs CPU-only, Wayland support, and more.",
|
|
path: "/vs-nerd-dictation",
|
|
keywords: [
|
|
"voculinux vs nerd dictation",
|
|
"linux voice dictation comparison",
|
|
"offline speech to text linux",
|
|
],
|
|
});
|
|
|
|
export default function VsNerdDictationPage() {
|
|
const articleJsonLd = {
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
headline: "Voculinux vs Nerd Dictation: Best Offline Voice Dictation for Linux",
|
|
description:
|
|
"Comparing Voculinux and Nerd Dictation for offline Linux voice dictation. CLI vs GUI, GPU vs CPU-only, Wayland support, and more.",
|
|
dateModified: "2026-03-30",
|
|
author: {
|
|
"@type": "Person",
|
|
name: "Xavier Karma",
|
|
url: "https://bongbetic.com",
|
|
},
|
|
publisher: {
|
|
"@type": "Organization",
|
|
name: "Voculinux",
|
|
logo: {
|
|
"@type": "ImageObject",
|
|
url: absoluteUrl("/voculinux.png"),
|
|
},
|
|
},
|
|
mainEntityOfPage: absoluteUrl("/vs-nerd-dictation"),
|
|
};
|
|
|
|
return (
|
|
<SeoSubpageShell>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(articleJsonLd) }}
|
|
/>
|
|
|
|
<section>
|
|
<p className="subpage-kicker">
|
|
<Trophy className="h-4 w-4" />
|
|
Voculinux Comparison
|
|
</p>
|
|
<h1 className="mb-5 font-display text-4xl font-semibold tracking-tight sm:text-5xl">
|
|
Voculinux vs Nerd Dictation
|
|
</h1>
|
|
<p className="mb-8 max-w-4xl text-lg text-muted-foreground">
|
|
Nerd Dictation is a popular offline CLI tool for Linux. But if you want a complete desktop
|
|
dictation experience with GUI controls, tray integration, push-to-talk, and broad GPU support,
|
|
Voculinux is the better choice.
|
|
</p>
|
|
</section>
|
|
|
|
<section className="overflow-x-auto rounded-[12px] border border-border bg-background">
|
|
<h2 className="px-4 pb-2 pt-5 font-display text-2xl font-semibold">Feature-by-feature comparison</h2>
|
|
<table className="w-full border-collapse text-left">
|
|
<thead>
|
|
<tr className="border-b border-border">
|
|
<th className="px-4 py-3 text-sm font-semibold">Feature</th>
|
|
<th className="px-4 py-3 text-sm font-semibold">Voculinux</th>
|
|
<th className="px-4 py-3 text-sm font-semibold">Nerd Dictation</th>
|
|
<th className="px-4 py-3 text-sm font-semibold">Winner</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{comparisonRows.map((row) => {
|
|
const Icon = row.icon;
|
|
|
|
return (
|
|
<tr
|
|
key={row.feature}
|
|
className="border-b border-border align-top"
|
|
>
|
|
<td className="px-4 py-4 font-semibold">
|
|
<span className="inline-flex items-center gap-2">
|
|
<span className="rounded-md bg-primary/10 p-1.5">
|
|
<Icon className="h-4 w-4 text-primary" />
|
|
</span>
|
|
{row.feature}
|
|
</span>
|
|
</td>
|
|
<td className="px-4 py-4 text-sm text-muted-foreground">{row.voculinux}</td>
|
|
<td className="px-4 py-4 text-sm text-muted-foreground">{row.nerdDictation}</td>
|
|
<td className="px-4 py-4 text-sm font-semibold text-primary">
|
|
<span className="inline-flex items-center gap-2">
|
|
<CheckCircle2 className="h-4 w-4" />
|
|
{row.winner}
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
);
|
|
})}
|
|
</tbody>
|
|
</table>
|
|
</section>
|
|
|
|
<section className="mt-10 rounded-[12px] border border-border bg-muted p-6">
|
|
<h2 className="mb-4 font-display text-2xl font-semibold">Go deeper</h2>
|
|
<div className="grid gap-3 text-sm text-muted-foreground sm:grid-cols-2 lg:grid-cols-3">
|
|
<Link href="/offline/" className="font-semibold text-primary hover:underline">
|
|
Why offline dictation matters
|
|
</Link>
|
|
<Link href="/gpu-acceleration/" className="font-semibold text-primary hover:underline">
|
|
Vulkan GPU acceleration details
|
|
</Link>
|
|
<Link href="/wayland/" className="font-semibold text-primary hover:underline">
|
|
Wayland + IBus integration guide
|
|
</Link>
|
|
<Link href="/compare/" className="font-semibold text-primary hover:underline">
|
|
Engine comparison (whisper.cpp vs Whisper vs VOSK)
|
|
</Link>
|
|
<Link href="/for-developers/" className="font-semibold text-primary hover:underline">
|
|
Developer docs and architecture
|
|
</Link>
|
|
<Link href="/rsi-prevention/" className="font-semibold text-primary hover:underline">
|
|
RSI prevention with voice typing
|
|
</Link>
|
|
</div>
|
|
</section>
|
|
|
|
<section className="mt-10 rounded-[12px] border border-primary/20 bg-primary/5 p-8">
|
|
<h2 className="mb-4 font-display text-2xl font-semibold">Ready to switch from terminal-only dictation?</h2>
|
|
<p className="mb-6 max-w-3xl text-muted-foreground">
|
|
Install Voculinux for a native Linux voice dictation workflow with offline privacy, better
|
|
usability, and stronger performance options.
|
|
</p>
|
|
<div className="flex flex-wrap gap-4">
|
|
<Link
|
|
href="/install/"
|
|
className="inline-flex items-center gap-2 rounded-full bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground"
|
|
>
|
|
Install Voculinux
|
|
<ChevronRight className="h-4 w-4" />
|
|
</Link>
|
|
<Link
|
|
href="/compare/"
|
|
className="inline-flex items-center gap-2 rounded-lg border border-border bg-background px-4 py-2 text-sm font-semibold hover:bg-muted hover:bg-muted"
|
|
>
|
|
Engine comparison
|
|
</Link>
|
|
</div>
|
|
</section>
|
|
</SeoSubpageShell>
|
|
);
|
|
}
|