|
5 | 5 | [simulflow.async :refer [vthread-loop]] |
6 | 6 | [simulflow.frame :as frame] |
7 | 7 | [simulflow.schema :as schema] |
8 | | - [simulflow.secrets :as secrets] |
9 | 8 | [simulflow.utils.core :as u] |
10 | 9 | [taoensso.telemere :as t]) |
11 | 10 | (:import (java.nio HeapCharBuffer))) |
|
37 | 36 | :language_code language |
38 | 37 | :output_format (encoding->elevenlabs encoding sample-rate)}))) |
39 | 38 |
|
40 | | -(comment |
41 | | - (make-elevenlabs-ws-url |
42 | | - {:elevenlabs/api-key (secrets/secret [:elevenlabs :api-key]) |
43 | | - :elevenlabs/model-id "eleven_flash_v2_5" |
44 | | - :elevenlabs/voice-id (secrets/secret [:elevenlabs :voice-id]) |
45 | | - :voice/stability 0.5 |
46 | | - :voice/similarity-boost 0.8 |
47 | | - :voice/use-speaker-boost? true})) |
48 | | - |
49 | 39 | (defn begin-stream-message |
50 | 40 | [{:voice/keys [stability similarity-boost use-speaker-boost?] |
51 | 41 | :elevenlabs/keys [api-key] |
|
80 | 70 | {:min 32 ;; ElevenLabs API keys are typically long |
81 | 71 | :secret true ;; Marks this as sensitive data |
82 | 72 | :description "ElevenLabs API key"}]] |
83 | | - [:elevenlabs/model-id |
| 73 | + [:flow/language {:default :en} schema/Language] |
| 74 | + [:elevenlabs/model-id {:default :eleven_flash_v2_5 |
| 75 | + :description "ElevenLabs model identifier"} |
84 | 76 | (schema/flex-enum |
85 | | - {:default "eleven_flash_v2_5" |
86 | | - :description "ElevenLabs model identifier"} |
87 | | - ["eleven_multilingual_v2" "eleven_turbo_v2_5" "eleven_turbo_v2" "eleven_monolingual_v1" "eleven_multilingual_v1" "eleven_multilingual_sts_v2" "eleven_flash_v2" "eleven_flash_v2_5" "eleven_english_sts_v2"])] |
| 77 | + [:eleven_multilingual_v2 :eleven_turbo_v2_5 :eleven_turbo_v2 :eleven_monolingual_v1 |
| 78 | + :eleven_multilingual_v1 :eleven_multilingual_sts_v2 :eleven_flash_v2 :eleven_flash_v2_5 :eleven_english_sts_v2])] |
88 | 79 | [:elevenlabs/voice-id |
89 | 80 | [:string |
90 | 81 | {:min 20 ;; ElevenLabs voice IDs are fixed length |
91 | 82 | :max 20 |
92 | 83 | :description "ElevenLabs voice identifier"}]] |
93 | | - [:voice/stability |
| 84 | + [:voice/stability {:default 0.5 |
| 85 | + :description "Voice stability factor (0.0 to 1.0)"} |
94 | 86 | [:double |
95 | 87 | {:min 0.0 |
96 | | - :max 1.0 |
97 | | - :default 0.5 |
98 | | - :description "Voice stability factor (0.0 to 1.0)"}]] |
99 | | - [:voice/similarity-boost |
| 88 | + :max 1.0}]] |
| 89 | + [:voice/similarity-boost {:default 0.8 |
| 90 | + :description "Voice similarity boost factor (0.0 to 1.0)"} |
100 | 91 | [:double |
101 | 92 | {:min 0.0 |
102 | | - :max 1.0 |
103 | | - :default 0.8 |
104 | | - :description "Voice similarity boost factor (0.0 to 1.0)"}]] |
105 | | - [:voice/use-speaker-boost? |
106 | | - [:boolean |
107 | | - {:default true |
108 | | - :description "Whether to enable speaker beoost enhancement"}]]]) |
| 93 | + :max 1.0}]] |
| 94 | + [:voice/use-speaker-boost? {:default true |
| 95 | + :description "Whether to enable speaker beoost enhancement"} |
| 96 | + :boolean] |
| 97 | + [:audio.out/encoding {:default :pcm-signed} schema/AudioEncoding] |
| 98 | + [:audio.out/sample-rate {:default 16000} schema/SampleRate]]) |
109 | 99 |
|
110 | 100 | (defn accumulate-json-response |
111 | 101 | "Pure function to accumulate JSON response fragments. |
|
0 commit comments