// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.media.outputs;

import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class TransformOutputAudioAnalyzerPreset {
    /**
     * @return Possible values are `Basic` or `Standard`. Determines the set of audio analysis operations to be performed. Default to `Standard`.
     * 
     */
    private @Nullable String audioAnalysisMode;
    /**
     * @return The language for the audio payload in the input using the BCP-47 format of &#39;language tag-region&#39; (e.g: &#39;en-US&#39;). If you know the language of your content, it is recommended that you specify it. The language must be specified explicitly for AudioAnalysisMode:Basic, since automatic language detection is not included in basic mode. If the language isn&#39;t specified, automatic language detection will choose the first language detected and process with the selected language for the duration of the file. It does not currently support dynamically switching between languages after the first language is detected. The automatic detection works best with audio recordings with clearly discernible speech. If automatic detection fails to find the language, transcription would fall back to `en-US`. The list of supported languages is available here: &lt;https://go.microsoft.com/fwlink/?linkid=2109463&gt;.
     * 
     */
    private @Nullable String audioLanguage;
    /**
     * @return Dictionary containing key value pairs for parameters not exposed in the preset itself.
     * 
     */
    private @Nullable Map<String,String> experimentalOptions;

    private TransformOutputAudioAnalyzerPreset() {}
    /**
     * @return Possible values are `Basic` or `Standard`. Determines the set of audio analysis operations to be performed. Default to `Standard`.
     * 
     */
    public Optional<String> audioAnalysisMode() {
        return Optional.ofNullable(this.audioAnalysisMode);
    }
    /**
     * @return The language for the audio payload in the input using the BCP-47 format of &#39;language tag-region&#39; (e.g: &#39;en-US&#39;). If you know the language of your content, it is recommended that you specify it. The language must be specified explicitly for AudioAnalysisMode:Basic, since automatic language detection is not included in basic mode. If the language isn&#39;t specified, automatic language detection will choose the first language detected and process with the selected language for the duration of the file. It does not currently support dynamically switching between languages after the first language is detected. The automatic detection works best with audio recordings with clearly discernible speech. If automatic detection fails to find the language, transcription would fall back to `en-US`. The list of supported languages is available here: &lt;https://go.microsoft.com/fwlink/?linkid=2109463&gt;.
     * 
     */
    public Optional<String> audioLanguage() {
        return Optional.ofNullable(this.audioLanguage);
    }
    /**
     * @return Dictionary containing key value pairs for parameters not exposed in the preset itself.
     * 
     */
    public Map<String,String> experimentalOptions() {
        return this.experimentalOptions == null ? Map.of() : this.experimentalOptions;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(TransformOutputAudioAnalyzerPreset defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable String audioAnalysisMode;
        private @Nullable String audioLanguage;
        private @Nullable Map<String,String> experimentalOptions;
        public Builder() {}
        public Builder(TransformOutputAudioAnalyzerPreset defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.audioAnalysisMode = defaults.audioAnalysisMode;
    	      this.audioLanguage = defaults.audioLanguage;
    	      this.experimentalOptions = defaults.experimentalOptions;
        }

        @CustomType.Setter
        public Builder audioAnalysisMode(@Nullable String audioAnalysisMode) {
            this.audioAnalysisMode = audioAnalysisMode;
            return this;
        }
        @CustomType.Setter
        public Builder audioLanguage(@Nullable String audioLanguage) {
            this.audioLanguage = audioLanguage;
            return this;
        }
        @CustomType.Setter
        public Builder experimentalOptions(@Nullable Map<String,String> experimentalOptions) {
            this.experimentalOptions = experimentalOptions;
            return this;
        }
        public TransformOutputAudioAnalyzerPreset build() {
            final var o = new TransformOutputAudioAnalyzerPreset();
            o.audioAnalysisMode = audioAnalysisMode;
            o.audioLanguage = audioLanguage;
            o.experimentalOptions = experimentalOptions;
            return o;
        }
    }
}
