/v1/speech/stream is declared as an empty JSON 200, so no StreamAsStreamAsync is generated for the streaming TTS endpoint
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 0
- Forks
- 0
- Avg merge
- 1m
- Merged PRs (30d)
- 14
Description
Problem
src/libs/Murf/openapi.json declares POST /v1/speech/stream (operationId stream, "Stream Speech") with a 200 body of
"application/json": { "schema": { "$ref": "#/components/schemas/text_to_speech_stream_Response_200" } }
where text_to_speech_stream_Response_200 is { "type": "object", "properties": {}, "description": "Empty response body" }.
The real endpoint answers with chunked audio bytes (the whole point of the operation), so the generated SubpackageTextToSpeechClient.StreamAsync / StreamAsResponseAsync model an empty JSON object, and the package exposes no …AsStreamAsync for the one operation that streams. A consumer that wants first-audio latency from Murf has to bypass the SDK with a raw HttpClient today.
Fix
Declare the 200 as binary, e.g.
"200": { "content": { "audio/*": { "schema": { "type": "string", "format": "binary" } } } }
(or application/octet-stream), so AutoSDK emits StreamAsStreamAsync returning the response stream the same way Rime.TextToSpeechClient.CreateTtsAsStreamAsync, PlayHT.TextToSpeechClient.StreamSpeechAsStreamAsync and Cartesia.TtsClient.TtsBytesAsStreamAsync do.
Found while auditing which tryAGI TTS SDKs can feed a PCM streaming sink (HavenDV/Advantage, 2026-09-15).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/libs/Murf/openapi.json at POST /v1/speech/stream and compare its response declaration with the streaming TTS operations referenced in the issue. Regenerate or inspect the SDK and verify that StreamAsStreamAsync is emitted and exposes the endpoint's streamed audio response instead of an empty JSON object.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, openapi
- Domain
- api
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 88/100