Swift voice dictation

Swift voice dictation that types Pipeline.swift, not “pipeline dot swift”

Swift names are written to read like English: applyReplacements, isEmpty, makeURLRequest. That makes them easy to say and hard for a speech model to spell, because it cannot hear where one word’s capital begins. This guide follows the Swift API Design Guidelines into spoken form, shows what IraVoice types in Xcode, Terminal and coding agents on a Mac, covers the acronym-led and Boolean names that need care, and compares the alternatives.

Source-reviewed

1. What dictation makes of applyReplacements and Pipeline.swift

A general speech model, macOS Dictation included, transcribes sound into words. In Xcode or a Claude Code session, “apply replacements drops the last word in pipeline dot swift” arrives exactly like that: two words where your method is one, and a file name spelled out as a sentence. Swift’s habit of naming things in plain English makes this worse, not better, because TranscriptGuard is two words a model will happily write apart.

The cost shows up in the text around the code: prompts to an agent, commit messages, pull request comments and issues. The agent has to search for a symbol you described rather than named, and a reviewer has to translate your sentence back into identifiers.

2. The Swift API Design Guidelines, as you would say them

The guidelines’ case rule is short: names of types and protocols are UpperCamelCase, and everything else is lowerCamelCase. Acronyms and initialisms that commonly appear in all capitals in American English are uniformly up- or down-cased to fit, as in utf8Bytes, isRepresentableAsASCII and userSMTPServer. Other acronyms are treated as ordinary words: radarDetector, enjoysScubaDiving.

The guidelines also decide what names sound like. Uses of Boolean properties and methods read as assertions about the receiver, such as x.isEmpty or line1.intersects(line2). Protocols that describe what something is read as nouns, like Collection, and capability protocols take able, ible or ing, like Equatable and ProgressReporting. Files follow the type: Google’s Swift style guide names a file holding a single type MyType MyType.swift, and an extension adding conformance to MyProtocol MyType+MyProtocol.swift. A package’s manifest is Package.swift, and swift package init puts the entry point in Sources/main.swift.

  • TranscriptGuard is said “transcript guard”.
  • makeURLRequest is said “make URL request”; URL keeps its capitals because the code has them.
  • utf8Bytes is said “UTF 8 bytes”; letters and digits are compared, not spacing.
  • Pipeline+AudioCapturing.swift is said “pipeline audio capturing dot swift”, leaving out the plus.

3. Spoken to typed in an Xcode project or Swift package

Run against a small package with Sources/Core/Pipeline.swift, TranscriptGuard.swift, a SwiftUI ContentView.swift, a PipelineTests.swift test target and an Info.plist, IraVoice’s matching rules produce:

  • “apply replacements drops the last word” → applyReplacements drops the last word
  • “pipeline dot swift” → Pipeline.swift; “content view dot swift” → ContentView.swift
  • “transcript guard” → TranscriptGuard; “session store” → SessionStore, an actor
  • “audio capturing” → AudioCapturing, a protocol; “playback state” → PlaybackState, an enum
  • “make URL request” → makeURLRequest; “UTF 8 bytes” → utf8Bytes
  • “max retry count” → maxRetryCount
  • “test apply replacements keeps case” → testApplyReplacementsKeepsCase
  • “package dot swift” → Package.swift; “info dot plist” → Info.plist

4. Acronym-first types and Booleans that read like sentences

One-word types are left alone: “the pipeline will render” stays a sentence even though Pipeline is a class, because IraVoice never forces a single plain word into prose. Long names forgive a single slip, so a slightly misheard ending on testApplyReplacementsKeepsCase is still matched, but a short name needs an exact match.

Swift’s acronym rule produces names such as APIClient or URLBuilder that begin with capitals and never have a lowercase letter followed by a capital. IraVoice treats a name as code only when it has that step, a separator such as a dot or underscore, or digits among letters, so “API client” stays two words. The file is different: APIClient.swift has an extension, so “API client dot swift” arrives as APIClient.swift. Point the agent at the file and it will find the type.

The opposite problem comes from assertion-style Booleans. Because isRecording is a real property in the sample project, “the app is recording when it starts” is typed as the app isRecording when it starts. IraVoice does not press Enter by default, so read the line before you send it, and rephrase (“the app records”) or edit the word when that happens.

5. URLSession, SwiftUI and other Apple names

Framework names are declared by Apple, not by your project, so they are not in IraVoice’s list, and URLSession starts with an acronym anyway. Teach them once. Dictate, press ⌃⌥⇧F, correct “URL session” to URLSession or “swift UI” to SwiftUI in the Quick Fix window, and press Enter; the corrected text is copied for you to paste back. The tray menu’s Fix Last Dictation… item does the same. On a Mac, IraVoice also notices corrections you make by hand in most apps, by reading the text box it just typed into, once, on the computer.

Each lesson is a word pair kept on the Mac; review or forget it under Advanced → Learn from my fixes. Replacements give exact text for a phrase: your repository URL, your team’s bundle identifier prefix, or a review note you leave often, such as a reminder to run the tests on a device.

6. Xcode, the terminal, Windows and the alternatives

On a Mac, IraVoice spells names in Xcode, in Terminal, iTerm2, Ghostty, Warp and other terminals, in VS Code, Cursor, Windsurf, Zed, the JetBrains IDEs and Sublime Text, and in the Claude and Codex desktop apps, which covers Claude Code or Codex running in a terminal beside Xcode. It needs macOS 13 or later on Apple silicon; there is no iPhone or iPad app. Swift also runs on Linux and Windows. On Windows, IraVoice spells names in VS Code, Cursor and Windows Terminal; on Linux its beta dictates without names.

It is not Swift by voice. It will not type braces, closures, property wrappers or the arrow in a function signature; use it for the words and let Xcode’s completion or the agent write the code.

macOS Dictation is built in, and Apple lets you check in Keyboard settings whether general dictation is processed on your device. Claude Code’s /voice is tuned for coding vocabulary and adds the project and branch names as hints, with audio sent to Anthropic’s servers and a Claude.ai login required. Talon offers hands-free control on macOS, with formatters such as camel and hammer for building names word by word.

IraVoice recognizes speech with NVIDIA Parakeet on the Mac itself, after a one-time download of the Parakeet Unified EN model. Hold Right Command, speak, and release; Esc cancels. It costs $79 once for one computer, $109 for two, or $149 for three, with a 3-day free trial and no account.

Decision guide

Which voice option fits your Swift work?

Most Swift work happens on a Mac, so the choice is mainly about privacy and names.

If you needChooseWhy
Prompts in Claude Code or Codex beside Xcode, naming your types and filesIraVoice on an Apple silicon MacIt types the project’s own spelling of declared names and file names, on the Mac.
URLSession, SwiftUI or another Apple framework nameQuick Fix onceFramework names are not declared in your project; a learned word pair covers them everywhere.
Short notes and messages with no code namesmacOS DictationBuilt in and free; check Keyboard settings to see whether it runs on your device.
Driving the Mac and writing Swift entirely by voiceTalonIt is a hands-free input system with code formatters, not a dictation app.
Claude Code only, with a Claude.ai loginClaude Code /voiceBuilt in and tuned for coding vocabulary; audio is transcribed on Anthropic’s servers.

Primary sources

Use the current documentation.

This guide was reviewed October 3, 2026. Product versions, settings, policies, and availability can change.

  1. Swift.org: API Design Guidelines ↗

    Case conventions, acronym casing (utf8Bytes, isRepresentableAsASCII, userSMTPServer, radarDetector), Boolean assertions and protocol naming.

  2. Google Swift Style Guide: File Names ↗

    MyType.swift for a single type and MyType+MyProtocol.swift for a conformance extension.

  3. Swift.org: Getting started with the Swift Package Manager ↗

    Package.swift as the package manifest, Sources/main.swift as the entry point, and Swift on macOS, Linux and Windows.

  4. Apple Support: Dictate messages and documents on Mac ↗

    Starting Dictation, and checking Keyboard settings for on-device processing.

  5. Claude Code Docs: Voice dictation ↗

    Coding-vocabulary tuning, project and branch hints, cloud transcription and the Claude.ai requirement.

  6. Talon: Powerful hands-free input ↗

    Hands-free input for macOS, Windows and Linux (X11), with commands and dictation.

Questions

What readers usually ask next.

Does IraVoice work in Xcode?

Yes. Xcode is one of the developer apps IraVoice recognizes on a Mac, so names from the Git project you have open are spelled as declared when you dictate there.

Why does “API client” stay as two words?

A type named APIClient starts with an acronym and never has a lowercase letter followed by a capital, so IraVoice does not treat it as a code name. Say the file instead, “API client dot swift”, which arrives as APIClient.swift.

Can I dictate SwiftUI code?

No. IraVoice types words and spells your project’s names inside them, but it does not produce braces, closures, modifiers or property wrappers. Describe the view you want and let the agent or Xcode write it.

Is there an iPhone or iPad version for Swift Playgrounds?

No. IraVoice runs on Apple silicon Macs, Windows PCs and Linux (beta), with no mobile app.

Does IraVoice send my Swift code anywhere?

No. It reads only names from the project, never keeps source text, skips secrets such as provisioning profiles and dependency folders such as Pods, and nothing leaves the Mac. Its only connections are the one-time model download, license check-ins and update checks.

Mac, Windows, and Linux

Try private, on-device dictation for yourself.

Hold one key, speak, and the words are typed where your cursor is. The 3-day free trial starts with your first dictation.