> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/argmaxinc/WhisperKit/llms.txt
> Use this file to discover all available pages before exploring further.

# WhisperKit Documentation

> On-device speech recognition and text-to-speech for Apple Silicon

<div className="relative overflow-hidden bg-gradient-to-b from-[#0D0D0D] via-[#1a1a2e] to-[#0D0D0D] dark:from-[#0D0D0D] dark:via-[#1a1a2e] dark:to-[#0D0D0D]">
  <div className="absolute inset-0 bg-[radial-gradient(ellipse_at_top,rgba(70,69,242,0.15),transparent_50%)]" />

  <div className="relative max-w-7xl mx-auto px-6 py-20 sm:py-24 lg:py-28">
    <div className="text-center">
      <h1 className="text-4xl sm:text-5xl lg:text-6xl font-bold text-white mb-6 tracking-tight">
        On-Device Speech AI for

        <span className="block text-transparent bg-clip-text bg-gradient-to-r from-[#4645f2] to-[#a49cec]">
          Apple Silicon
        </span>
      </h1>

      <p className="mt-6 text-lg sm:text-xl text-gray-300 dark:text-gray-300 max-w-3xl mx-auto leading-relaxed">
        Deploy state-of-the-art speech-to-text and text-to-speech models directly on iOS, macOS, watchOS, and visionOS with real-time streaming, voice activity detection, and more.
      </p>

      <div className="mt-10 flex flex-wrap items-center justify-center gap-4">
        <a href="/quickstart" className="inline-flex items-center px-8 py-3.5 text-base font-semibold text-black bg-white rounded-lg hover:bg-gray-100 transition-colors shadow-lg">
          Get Started

          <svg className="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7l5 5m0 0l-5 5m5-5H6" />
          </svg>
        </a>

        <a href="/api/whisperkit/whisperkit-class" className="inline-flex items-center px-8 py-3.5 text-base font-semibold text-white bg-white/10 border border-white/20 rounded-lg hover:bg-white/20 hover:border-[#4645f2] transition-all">
          API Reference
        </a>

        <a href="https://github.com/argmaxinc/WhisperKit" target="_blank" rel="noopener noreferrer" className="inline-flex items-center px-8 py-3.5 text-base font-semibold text-white bg-white/10 border border-white/20 rounded-lg hover:bg-white/20 hover:border-[#4645f2] transition-all">
          <svg className="mr-2 w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
            <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
          </svg>

          View on GitHub
        </a>
      </div>
    </div>
  </div>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <div className="text-center mb-12">
    <h2 className="text-3xl font-semibold text-gray-900 dark:text-white mb-4">
      Quick start
    </h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
      Get up and running with WhisperKit in minutes
    </p>
  </div>

  <Steps>
    <Step title="Install via Swift Package Manager">
      Add WhisperKit to your project by adding the package dependency in Xcode or your `Package.swift` file:

      ```swift Package.swift theme={null}
      dependencies: [
          .package(url: "https://github.com/argmaxinc/WhisperKit.git", from: "0.9.0")
      ]
      ```

      Then add the products you need as target dependencies:

      ```swift theme={null}
      .target(
          name: "YourApp",
          dependencies: [
              "WhisperKit", // speech-to-text
              "TTSKit",     // text-to-speech
          ]
      )
      ```
    </Step>

    <Step title="Initialize WhisperKit">
      Import and initialize WhisperKit in your Swift code. The framework automatically downloads the recommended model for your device:

      ```swift theme={null}
      import WhisperKit

      Task {
          let pipe = try? await WhisperKit()
          print("WhisperKit initialized and ready")
      }
      ```

      <Note>
        WhisperKit automatically selects and downloads the optimal model for your device. For custom model selection, see the [model selection guide](/whisperkit/model-selection).
      </Note>
    </Step>

    <Step title="Transcribe audio">
      Use the `transcribe` method to convert audio files to text:

      ```swift theme={null}
      let transcription = try? await pipe!.transcribe(
          audioPath: "path/to/audio.wav"
      )?.text
      print(transcription)
      ```

      WhisperKit supports multiple audio formats including WAV, MP3, M4A, and FLAC.
    </Step>

    <Step title="Generate speech with TTSKit">
      For text-to-speech, import TTSKit and generate audio from text:

      ```swift theme={null}
      import TTSKit

      Task {
          let tts = try await TTSKit()
          let result = try await tts.generate(text: "Hello from TTSKit!")
          
          // Or play directly with streaming
          try await tts.play(text: "Hello from TTSKit!")
      }
      ```
    </Step>
  </Steps>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <div className="text-center mb-12">
    <h2 className="text-3xl font-semibold text-gray-900 dark:text-white mb-4">
      Core features
    </h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
      Everything you need for on-device speech AI
    </p>
  </div>

  <CardGroup cols={3}>
    <Card title="Speech-to-Text" icon="microphone" href="/whisperkit/overview">
      Deploy Whisper models on-device with real-time streaming transcription and word-level timestamps
    </Card>

    <Card title="Text-to-Speech" icon="volume-high" href="/ttskit/overview">
      Generate natural speech with multiple voices and languages using Qwen3 TTS models
    </Card>

    <Card title="Voice Activity Detection" icon="waveform-lines" href="/whisperkit/voice-activity-detection">
      Automatically detect speech segments with built-in energy-based VAD
    </Card>

    <Card title="Multi-Platform" icon="devices" href="/resources/supported-devices">
      Run on iOS, macOS, watchOS, and visionOS with optimized Core ML models
    </Card>

    <Card title="Local Server" icon="server" href="/advanced/local-server">
      OpenAI-compatible API for local speech processing with streaming support
    </Card>

    <Card title="Model Management" icon="box-archive" href="/whisperkit/model-selection">
      Automatic model downloading from HuggingFace with custom model support
    </Card>
  </CardGroup>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <div className="text-center mb-12">
    <h2 className="text-3xl font-semibold text-gray-900 dark:text-white mb-4">
      Explore by topic
    </h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
      Deep dive into WhisperKit capabilities
    </p>
  </div>

  <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
    <a href="/whisperkit/streaming" className="group block rounded-2xl border border-gray-200 dark:border-[#27272a] overflow-hidden hover:border-[#4645f2] dark:hover:border-[#4645f2] transition-all no-underline bg-white dark:bg-[#1a1d27]">
      <div className="p-6">
        <div className="flex items-start justify-between mb-3">
          <div className="p-3 rounded-lg bg-[#4645f2]/10 dark:bg-[#4645f2]/10">
            <svg className="w-6 h-6 text-[#4645f2]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
            </svg>
          </div>
        </div>

        <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-2">
          Real-Time Streaming
        </h3>

        <p className="text-sm text-gray-600 dark:text-gray-400 mb-4">
          Stream audio from microphone with live transcription using AudioStreamTranscriber
        </p>

        <div className="flex items-center text-sm font-medium text-[#4645f2] group-hover:text-[#4645f2]">
          Learn more

          <svg className="ml-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
          </svg>
        </div>
      </div>
    </a>

    <a href="/ttskit/playback" className="group block rounded-2xl border border-gray-200 dark:border-[#27272a] overflow-hidden hover:border-[#4645f2] dark:hover:border-[#4645f2] transition-all no-underline bg-white dark:bg-[#1a1d27]">
      <div className="p-6">
        <div className="flex items-start justify-between mb-3">
          <div className="p-3 rounded-lg bg-[#4645f2]/10 dark:bg-[#4645f2]/10">
            <svg className="w-6 h-6 text-[#4645f2]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15.536 8.464a5 5 0 010 7.072m2.828-9.9a9 9 0 010 12.728M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" />
            </svg>
          </div>
        </div>

        <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-2">
          Streaming Playback
        </h3>

        <p className="text-sm text-gray-600 dark:text-gray-400 mb-4">
          Real-time audio streaming with intelligent buffering strategies for smooth playback
        </p>

        <div className="flex items-center text-sm font-medium text-[#4645f2] group-hover:text-[#4645f2]">
          Learn more

          <svg className="ml-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
          </svg>
        </div>
      </div>
    </a>

    <a href="/advanced/custom-models" className="group block rounded-2xl border border-gray-200 dark:border-[#27272a] overflow-hidden hover:border-[#4645f2] dark:hover:border-[#4645f2] transition-all no-underline bg-white dark:bg-[#1a1d27]">
      <div className="p-6">
        <div className="flex items-start justify-between mb-3">
          <div className="p-3 rounded-lg bg-[#4645f2]/10 dark:bg-[#4645f2]/10">
            <svg className="w-6 h-6 text-[#4645f2]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" />

              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
            </svg>
          </div>
        </div>

        <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-2">
          Custom Models
        </h3>

        <p className="text-sm text-gray-600 dark:text-gray-400 mb-4">
          Fine-tune and deploy your own Whisper models with whisperkittools
        </p>

        <div className="flex items-center text-sm font-medium text-[#4645f2] group-hover:text-[#4645f2]">
          Learn more

          <svg className="ml-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
          </svg>
        </div>
      </div>
    </a>

    <a href="/advanced/performance-optimization" className="group block rounded-2xl border border-gray-200 dark:border-[#27272a] overflow-hidden hover:border-[#4645f2] dark:hover:border-[#4645f2] transition-all no-underline bg-white dark:bg-[#1a1d27]">
      <div className="p-6">
        <div className="flex items-start justify-between mb-3">
          <div className="p-3 rounded-lg bg-[#4645f2]/10 dark:bg-[#4645f2]/10">
            <svg className="w-6 h-6 text-[#4645f2]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
            </svg>
          </div>
        </div>

        <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-2">
          Performance Optimization
        </h3>

        <p className="text-sm text-gray-600 dark:text-gray-400 mb-4">
          Optimize inference speed and memory usage with compute unit selection
        </p>

        <div className="flex items-center text-sm font-medium text-[#4645f2] group-hover:text-[#4645f2]">
          Learn more

          <svg className="ml-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
          </svg>
        </div>
      </div>
    </a>
  </div>
</div>

<div className="mt-16 mb-16 max-w-5xl mx-auto px-6">
  <div className="text-center mb-12">
    <h2 className="text-3xl font-semibold text-gray-900 dark:text-white mb-4">
      Resources
    </h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
      Additional resources to help you succeed
    </p>
  </div>

  <CardGroup cols={2}>
    <Card title="Model Catalog" icon="layer-group" href="/resources/model-catalog">
      Browse available Whisper and TTS models with performance benchmarks
    </Card>

    <Card title="Benchmarks" icon="chart-line" href="/resources/benchmarks">
      View performance metrics across different Apple Silicon devices
    </Card>

    <Card title="Contributing" icon="code-branch" href="/resources/contributing">
      Learn how to contribute to WhisperKit development
    </Card>

    <Card title="Discord Community" icon="discord" href="https://discord.gg/G5F5GZGecC">
      Join the community for support and discussions
    </Card>
  </CardGroup>
</div>

<div className="mt-20 mb-16 max-w-5xl mx-auto px-6">
  <div className="relative rounded-2xl overflow-hidden bg-gradient-to-r from-[#4645f2] to-[#6b6af5] dark:from-[#4645f2] dark:to-[#6b6af5] p-12 text-center">
    <div className="relative z-10">
      <h2 className="text-3xl font-bold text-white mb-4">
        Ready to get started?
      </h2>

      <p className="text-lg text-white/90 mb-8 max-w-2xl mx-auto">
        Build powerful on-device speech applications with WhisperKit today
      </p>

      <div className="flex flex-wrap items-center justify-center gap-4">
        <a href="/quickstart" className="inline-flex items-center px-8 py-3.5 text-base font-semibold text-[#4645f2] bg-white rounded-lg hover:bg-gray-100 transition-colors shadow-lg">
          View Quickstart

          <svg className="ml-2 w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7l5 5m0 0l-5 5m5-5H6" />
          </svg>
        </a>

        <a href="/examples/basic-transcription" className="inline-flex items-center px-8 py-3.5 text-base font-semibold text-white bg-white/20 border border-white/30 rounded-lg hover:bg-white/30 transition-all">
          View Examples
        </a>
      </div>
    </div>
  </div>
</div>
