spring-projects/spring-ai · error · IllegalArgumentException

Unsupported…

Error message

Unsupported spring.ai.openai.audio.transcription.chunking-strategy value: '<chunkingStrategy>'. Only 'auto' is supported through configuration properties; use OpenAiAudioTranscriptionOptions.Builder#chunkingStrategy(...) programmatically for voice-activity-detection tuning.

What it means

Error "Unsupported spring.ai.openai.audio.transcription.chunking-strategy value: '<chunkingStrategy>'. Only 'auto' is supported through configuration properties; use OpenAiAudioTranscriptionOptions.Builder#chunkingStrategy(...) programmatically for voice-activity-detection tuning." thrown in spring-projects/spring-ai.

Solutions

  1. Remove or set chunking-strategy to 'auto' in application properties
  2. Use OpenAiAudioTranscriptionOptions.Builder#chunkingStrategy(...) programmatically for voice-activity-detection tuning
  3. Build the options object directly instead of via the properties converter
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at auto-configurations/models/spring-ai-autoconfigure-model-openai/src/main/java/org/springframework/ai/model/openai/autoconfigure/OpenAiAudioTranscriptionProperties.java:172 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of spring-projects/spring-ai@98a7beda4f (2026-09-11). Data as JSON: /api/errors/a6ccec23df7e9099. Report an issue: GitHub.

Appendix: source

Thrown at auto-configurations/models/spring-ai-autoconfigure-model-openai/src/main/java/org/springframework/ai/model/openai/autoconfigure/OpenAiAudioTranscriptionProperties.java:172

		this.knownSpeakerReferences = knownSpeakerReferences;
	}

	public OpenAiAudioTranscriptionOptions toOptions() {
		OpenAiAudioTranscriptionOptions.Builder builder = OpenAiAudioTranscriptionOptions.builder()
			.model(this.model)
			.responseFormat(this.responseFormat)
			.prompt(this.prompt)
			.language(this.language)
			.temperature(this.temperature)
			.timestampGranularities(this.timestampGranularities)
			.knownSpeakerNames(this.knownSpeakerNames)
			.knownSpeakerReferences(this.knownSpeakerReferences);
		if (this.diarizedJsonWorkaroundEnabled != null) {
			builder.diarizedJsonWorkaroundEnabled(this.diarizedJsonWorkaroundEnabled);
		}
		if (this.chunkingStrategy != null) {
			if (!"auto".equalsIgnoreCase(this.chunkingStrategy)) {
				throw new IllegalArgumentException(
						"Unsupported spring.ai.openai.audio.transcription.chunking-strategy value: '"
								+ this.chunkingStrategy
								+ "'. Only 'auto' is supported through configuration properties; use "
								+ "OpenAiAudioTranscriptionOptions.Builder#chunkingStrategy(...) programmatically "
								+ "for voice-activity-detection tuning.");
			}
			builder.chunkingStrategy(TranscriptionCreateParams.ChunkingStrategy.ofAuto());
		}
		return builder.build();
	}

	private Options options = new Options();

	@DeprecatedConfigurationProperty(replacement = "spring.ai.openai.audio.transcription")
	@Deprecated(since = "2.0.0", forRemoval = true)
	public Options getOptions() {
		return this.options;
	}

View on GitHub (pinned to 98a7beda4f)