diff --git a/src/audio/interfaces.ts b/src/audio/interfaces.ts index 7b211c1..128cf18 100644 --- a/src/audio/interfaces.ts +++ b/src/audio/interfaces.ts @@ -3,7 +3,7 @@ import { BaseResponse } from "../../types"; export interface SpeechToTextParams { url?: string; file_store_key?: string; - language?: string; + language?: LanguageCodes | "auto"; translate?: boolean; by_speaker?: boolean; webhook_url?: string; @@ -31,3 +31,167 @@ export interface SpeechToTextWebhookResponse extends BaseResponse { status: "processing" | "error"; id: string; } + +export type LanguageCodes = + | "af" + | "am" + | "ar" + | "as" + | "az" + | "ba" + | "be" + | "bg" + | "bn" + | "bo" + | "br" + | "bs" + | "ca" + | "ch" + | "co" + | "cs" + | "cy" + | "da" + | "de" + | "dv" + | "dz" + | "el" + | "en" + | "eo" + | "es" + | "et" + | "eu" + | "fa" + | "ff" + | "fi" + | "fj" + | "fo" + | "fr" + | "fy" + | "ga" + | "gd" + | "gl" + | "gu" + | "gv" + | "ha" + | "he" + | "hi" + | "hr" + | "ht" + | "hu" + | "hy" + | "id" + | "ig" + | "is" + | "it" + | "iu" + | "ja" + | "jv" + | "ka" + | "kg" + | "ki" + | "kj" + | "kk" + | "kl" + | "km" + | "kn" + | "ko" + | "kr" + | "ks" + | "ku" + | "kv" + | "kw" + | "ky" + | "la" + | "lb" + | "lg" + | "li" + | "ln" + | "lo" + | "lt" + | "lu" + | "lv" + | "mg" + | "mh" + | "mi" + | "mk" + | "ml" + | "mn" + | "mo" + | "mr" + | "ms" + | "mt" + | "my" + | "na" + | "nb" + | "nd" + | "ne" + | "ng" + | "nl" + | "nn" + | "no" + | "nr" + | "nv" + | "ny" + | "oc" + | "oj" + | "om" + | "or" + | "os" + | "pa" + | "pi" + | "pl" + | "ps" + | "pt" + | "qu" + | "rm" + | "rn" + | "ro" + | "ru" + | "rw" + | "sa" + | "sc" + | "sd" + | "se" + | "sg" + | "sh" + | "si" + | "sk" + | "sl" + | "sm" + | "sn" + | "so" + | "sq" + | "sr" + | "ss" + | "st" + | "su" + | "sv" + | "sw" + | "ta" + | "te" + | "tg" + | "th" + | "ti" + | "tk" + | "tl" + | "tn" + | "to" + | "tr" + | "ts" + | "tt" + | "tw" + | "ty" + | "ug" + | "uk" + | "ur" + | "uz" + | "ve" + | "vi" + | "vo" + | "wo" + | "xh" + | "yi" + | "yo" + | "zh" + | "zh-TW" + | "zu"; diff --git a/src/vercel-ai-toolkit.ts b/src/vercel-ai-toolkit.ts index 13a64ae..cd03e16 100644 --- a/src/vercel-ai-toolkit.ts +++ b/src/vercel-ai-toolkit.ts @@ -1,5 +1,6 @@ import { z } from "zod"; import { BaseConfig } from "../types"; +import { LanguageCodes } from "./audio/interfaces"; import { JigsawStack } from "./core"; import { tool } from "./vercel-tool"; @@ -283,7 +284,7 @@ export class JigsawStackToolSet { return await this.jigsawStack.audio.speech_to_text({ url, file_store_key, - language, + language: language as LanguageCodes | "auto", translate, by_speaker, }); diff --git a/tests/audio.test.ts b/tests/audio.test.ts index 94a4fec..7a0aba7 100644 --- a/tests/audio.test.ts +++ b/tests/audio.test.ts @@ -66,4 +66,25 @@ describe("STT APIs", () => { expectProperty(result, "text"); expectType(result.text, "string"); }); + + test("speech to text with auto language", async () => { + const result = await client.audio.speech_to_text({ + url: audioUrl, + language: "auto", + }); + + expectSuccess(result); + expectProperty(result, "text"); + expectType(result.text, "string"); + }); + + test("speech to text with invalid language", async () => { + const result = await client.audio.speech_to_text({ + url: audioUrl, + }); + + expectSuccess(result); + expectProperty(result, "text"); + expectType(result.text, "string"); + }); }); diff --git a/tests/vision.test.ts b/tests/vision.test.ts index 5cba11c..afaf537 100644 --- a/tests/vision.test.ts +++ b/tests/vision.test.ts @@ -2,10 +2,9 @@ import { beforeEach, describe, test } from "node:test"; import { createJigsawStackClient, expectArray, expectProperty, expectSuccess, expectType } from "./test-helpers.js"; const TEST_URLS = { - image: "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/280px-PNG_transparency_demonstration_1.png", + image: "https://jigsawstack.com/preview/object-detection-example-input.jpg", pdf: "https://www.w3.org/WAI/WCAG21/working-examples/pdf-table/table.pdf", textImage: "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Vd-Orig.png/256px-Vd-Orig.png", - receipt: "https://jigsawstack.com/preview/receipt-example.jpg", // Example receipt image }; // Comprehensive VOCR API Tests