FlowiseAI/Flowise · error · Error

Speech to text is not selected, but found a recorded audio f

Error message

Speech to text is not selected, but found a recorded audio file. Please fix the chain.

What it means

Thrown by the speech-to-text handler when an incoming request carries a recorded audio file but no speech-to-text node/provider was selected in the chatflow chain. The code reaches the `else` branch only because the upstream component captured audio yet the chain has no STT consumer wired to process it.

Source

Thrown at packages/components/src/speechToText.ts:130

                const groqClient = new Groq({
                    apiKey: credentialData.groqApiKey
                })
                const file = await toFile(audio_file, upload.name)
                const groqTranscription = await groqClient.audio.transcriptions.create({
                    file,
                    model: speechToTextConfig?.model || 'whisper-large-v3',
                    language: speechToTextConfig?.language,
                    temperature: speechToTextConfig?.temperature ? parseFloat(speechToTextConfig.temperature) : undefined,
                    response_format: 'verbose_json'
                })
                if (groqTranscription?.text) {
                    return groqTranscription.text
                }
                break
            }
        }
    } else {
        throw new Error('Speech to text is not selected, but found a recorded audio file. Please fix the chain.')
    }
    return undefined
}

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Add and connect a Speech-to-Text node to the chain and select a provider type.
  2. Provide the required credentials for the chosen STT provider in the node configuration.
  3. If audio input is unintended, remove the audio capture node so no audio_file reaches this handler.

Example fix

// before: chain has audio input node but no STT node
// after: connect a SpeechToText node and set e.g. type = GROQ_WHISPER with a valid groqApiKey
Defensive patterns

Strategy: validation

Validate before calling

function assertSttConfigured(audioFile: unknown, sttType: unknown): void {
  if (audioFile && !sttType) {
    throw new Error('Audio input present but no Speech-to-Text node is configured in the chain')
  }
}
// call before dispatching audio to the STT handler

Type guard

function isSpeechToTextType(v: unknown): v is 'OPENAI_WHISPER' | 'AZURE_SPEECH_TO_TEXT' | 'GROQ_WHISPER' {
  return typeof v === 'string' && ['OPENAI_WHISPER','AZURE_SPEECH_TO_TEXT','GROQ_WHISPER'].includes(v)
}

Try / catch

try {
  const text = await transcribeAudio(audioFile, sttType, config)
} catch (e) {
  if (/Speech to text is not selected/.test(e.message)) {
    // prompt user to wire an STT node into the chain
  }
  throw e
}

Prevention

When it happens

Trigger: A chatflow or agent chain that includes audio recording (e.g. a microphone/upload input producing audio_file) but does not select a SpeechToTextType (OPENAI_WHISPER, AZURE_SPEECH_TO_TEXT, or GROQ_WHISPER). The throw is at speechToText.ts:130.

Common situations: Enabling voice input on a chatflow without adding/configuring the speech-to-text node; removing or disabling the STT node while the audio input node remains connected.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/e20f03b380f15212. Report an issue: GitHub.