Fix TTS: switch to 1.7B with ref_audio, speakable text on all lines
- Use 1.7B model (0.6B had tensor mismatch with cached prompts) - Speak endpoint uses ref_audio directly (not cached pkl) as fallback - Cache voice clone prompts in memory on startup - Add SpeakableText component: 🔊 icon on each p and li element - Remove old TTSReader sequential approach - Add global exception handler to TTS server - Fix profile localStorage caching - inference_mode + bf16 optimization Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import AuthGuard from "@/components/auth-guard";
|
||||
import NavBar from "@/components/nav-bar";
|
||||
import { useApi } from "@/lib/use-api";
|
||||
import ReactMarkdown from "react-markdown";
|
||||
import SpeakableText from "@/components/speakable-text";
|
||||
|
||||
interface Category {
|
||||
ID: string;
|
||||
@@ -314,10 +315,18 @@ export default function KnowledgeDetailPage() {
|
||||
h1: ({children}) => <h1 className="text-xl font-bold mt-6 mb-3">{children}</h1>,
|
||||
h2: ({children}) => <h2 className="text-lg font-bold mt-5 mb-2">{children}</h2>,
|
||||
h3: ({children}) => <h3 className="text-base font-bold mt-4 mb-2">{children}</h3>,
|
||||
p: ({children}) => <p className="mb-3">{children}</p>,
|
||||
p: ({children, node}) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const txt = node?.children?.map((c: any) => c.type === 'text' ? c.value : '').join('') || '';
|
||||
return <p className="mb-3"><SpeakableText text={txt}>{children}</SpeakableText></p>;
|
||||
},
|
||||
ul: ({children}) => <ul className="list-disc ml-5 mb-3 space-y-1">{children}</ul>,
|
||||
ol: ({children}) => <ol className="list-decimal ml-5 mb-3 space-y-1">{children}</ol>,
|
||||
li: ({children}) => <li className="leading-relaxed">{children}</li>,
|
||||
li: ({children, node}) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const txt = node?.children?.map((c: any) => c.type === 'text' ? c.value : '').join('') || '';
|
||||
return <li className="leading-relaxed"><SpeakableText text={txt}>{children}</SpeakableText></li>;
|
||||
},
|
||||
strong: ({children}) => <strong className="font-bold">{children}</strong>,
|
||||
blockquote: ({children}) => <blockquote className="border-l-2 border-[var(--color-primary)] pl-4 my-3 italic text-[var(--color-text-muted)]">{children}</blockquote>,
|
||||
code: ({children}) => <code className="bg-[var(--color-bg-hover)] px-1.5 py-0.5 rounded text-xs">{children}</code>,
|
||||
|
||||
Reference in New Issue
Block a user