Soniox 适配器提供对 Soniox 语音转录模型的访问。
npm install @soniox/tanstack-ai-adapter
在您的环境中设置 SONIOX_API_KEY,或在创建适配器时传递 apiKey。从 Soniox 控制台 获取您的 API 密钥。
import { generateTranscription } from "@tanstack/ai";
import { sonioxTranscription } from "@soniox/tanstack-ai-adapter";
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio: audioFile,
modelOptions: {
enableLanguageIdentification: true,
enableSpeakerDiarization: true,
},
});
console.log(result.text);
console.log(result.segments);
import { generateTranscription } from "@tanstack/ai";
import { createSonioxTranscription } from "@soniox/tanstack-ai-adapter";
const adapter = createSonioxTranscription("stt-async-v3", process.env.SONIOX_API_KEY!);
const result = await generateTranscription({
adapter,
audio: audioFile,
});
使用 createSonioxTranscription 自定义适配器实例
import { createSonioxTranscription } from "@soniox/tanstack-ai-adapter";
const adapter = createSonioxTranscription("stt-async-v3", process.env.SONIOX_API_KEY!, {
baseUrl: "https://api.soniox.com",
pollingIntervalMs: 1000,
timeout: 180000,
});
选项
如果您需要数据驻留,请参阅 Soniox 区域端点。
通过 modelOptions 传递每次请求的选项
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio,
modelOptions: {
languageHints: ["en", "es"],
enableLanguageIdentification: true,
enableSpeakerDiarization: true,
context: {
terms: ["Soniox", "TanStack"],
},
},
});
可用选项
有关更多详细信息,请查看 Soniox API 参考。
Soniox 自动检测和转录 60 多种语言的语音。当您知道音频中可能出现哪些语言时,提供 languageHints 以提高准确性,通过偏向于这些语言来提高识别度。
语言提示不会限制识别。如果您传递 TanStack language 选项,此适配器会将它合并到 languageHints 中。
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio,
modelOptions: {
languageHints: ["en", "es"],
},
});
有关更多详细信息,请参阅 Soniox 语言提示文档。
提供自定义上下文以提高语音转录和翻译的准确性。上下文有助于模型理解您的领域,识别重要术语并应用自定义词汇。
context 对象支持四个可选部分
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio,
modelOptions: {
context: {
general: [
{ key: "domain", value: "Healthcare" },
{ key: "topic", value: "Diabetes management consultation" },
{ key: "doctor", value: "Dr. Martha Smith" },
],
text: "The patient has a history of...",
terms: ["Celebrex", "Zyrtec", "Xanax"],
translationTerms: [
{ source: "Mr. Smith", target: "Sr. Smith" },
{ source: "MRI", target: "RM" },
],
},
},
});
有关更多详细信息,请参阅 Soniox 上下文文档。
配置您的语音转录的翻译
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio,
modelOptions: {
translation: {
type: "one_way",
targetLanguage: "es",
},
},
});
对于双向翻译
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio,
modelOptions: {
translation: {
type: "two_way",
languageA: "en",
languageB: "es",
},
},
});
在使用翻译时,API 会返回语音转录标记和翻译标记。 segments 数组始终仅包含语音转录标记。要访问翻译标记,请使用 providerMetadata 并按 translation_status === "translation" 过滤。
在使用翻译或处理多语言音频时,您可能需要访问带有每标记语言信息和翻译状态的原始标记。适配器会在运行时附加一个非标准 providerMetadata 字段
const result = await generateTranscription({
adapter: sonioxTranscription("stt-async-v3"),
audio,
modelOptions: {
translation: { type: "one_way", targetLanguage: "es" },
},
});
const rawTokens = (result as any).providerMetadata?.soniox?.tokens;
if (rawTokens) {
rawTokens.forEach((token) => {
// token.text - token text
// token.start_ms - start time in milliseconds
// token.end_ms - end time in milliseconds
// token.language - detected language for this token
// token.translation_status - translation status (if translation enabled)
// token.speaker - speaker identifier
// token.confidence - confidence score
});
}