MCPcopy
hub / github.com/mudler/LocalAI / TTSStream

Method TTSStream

backend/go/qwen3-tts-cpp/goqwen3ttscpp.go:195–229  ·  view source on GitHub ↗
(req *pb.TTSRequest, results chan []byte)

Source from the content-addressed store, hash-verified

193}
194
195func (q *Qwen3TtsCpp) TTSStream(req *pb.TTSRequest, results chan []byte) error {
196 defer close(results)
197 if req.Text == "" {
198 return fmt.Errorf("qwen3-tts: TTSStream requires text")
199 }
200
201 streamCbOnce.Do(func() {
202 streamCbPtr = purego.NewCallback(streamCallback)
203 })
204
205 lang, instruct, speaker, refText, ref, s, err := q.resolveRequest(req)
206 if err != nil {
207 return err
208 }
209 var refPtr unsafe.Pointer
210 if len(ref) > 0 {
211 refPtr = unsafe.Pointer(&ref[0])
212 }
213
214 // Emit the WAV header first so the HTTP layer gets a self-describing stream.
215 results <- wavHeader24k()
216
217 streamMu.Lock()
218 streamChan = results
219 rc := CppTTSStream(req.Text, lang, instruct, speaker, refPtr, len(ref), refText,
220 s.seed, s.temperature, s.topK, s.topP, s.repPen, s.maxNew, streamCbPtr, 0)
221 streamChan = nil
222 streamMu.Unlock()
223 runtimeKeepAlive(ref)
224
225 if rc != 0 {
226 return fmt.Errorf("qwen3-tts: streaming synthesis failed (rc=%d)", rc)
227 }
228 return nil
229}

Callers

nothing calls this directly

Calls 5

resolveRequestMethod · 0.95
wavHeader24kFunction · 0.70
runtimeKeepAliveFunction · 0.70
LockMethod · 0.65
UnlockMethod · 0.65

Tested by

no test coverage detected