# Notetaker transcription settings

Source: https://developer.nylas.com/docs/v3/notetaker/transcription-settings/

`notetaker_settings.transcription_settings` tunes how Notetaker transcribes a meeting. It carries two independent controls: **language hints** that steer automatic language detection, and **keyword hints** that bias recognition toward specific terms. Set either, both, or neither. `transcription` must be `true` for any of these settings to take effect.

By default, Notetaker uses automatic language detection on every transcription and chooses from about 100 supported languages. If your users consistently speak one or more languages and you've seen Notetaker mis-identify them (for example, Portuguese coming back as Spanish, or a single-language meeting bouncing between codes), pass language hints. The hints either **force a single language** (pass one code in `expected_languages`) or **narrow what automatic detection considers** (pass two or more).

Language hints affect detection only. Notetaker transcribes each meeting in the language spoken and doesn't translate the transcript into another language.

You can set `transcription_settings` anywhere `notetaker_settings` is accepted: on a single Notetaker when you [invite](/docs/reference/api/notetaker/invite-notetaker/) or [update](/docs/reference/api/notetaker/update-notetaker/) it, on a [Notetaker configuration](/docs/v3/notetaker/configurations/), on [calendar sync](/docs/v3/notetaker/calendar-sync/) so every matching event picks it up, or on a single event.

## Set expected languages and a fallback

The language hints in `transcription_settings` are two fields:

- **`expected_languages`**: An array of language codes the audio is expected to contain. Optional. When you set it, it must contain at least one [supported code](#supported-language-codes) and can't be `null` or empty. Omit it and transcription considers all supported languages.
- **`fallback_language`**: Optional. The code to use when Notetaker doesn't detect one of the `expected_languages`. When `expected_languages` is set, the fallback must be one of those codes. When you omit `expected_languages`, it can be any supported code. Leave it out and the transcriber detects the language automatically. The field isn't stored, so a `GET` won't return it.

The simplest valid object declares the expected languages and nothing else. The transcriber then chooses between the 2 codes instead of guessing across every supported language, which is the fix for a meeting that keeps flipping between similar languages.

```json
{
  "notetaker_settings": {
    "transcription": true,
    "transcription_settings": {
      "expected_languages": ["en", "es"]
    }
  }
}
```

For a deterministic fallback, set `fallback_language` to a concrete code that's also in `expected_languages`. Notetaker uses it whenever the audio doesn't clearly match one of the expected codes, so a mostly-English meeting with a few Spanish phrases always comes back as English rather than as a mix.

```json
{
  "notetaker_settings": {
    "transcription": true,
    "transcription_settings": {
      "expected_languages": ["en", "es"],
      "fallback_language": "en"
    }
  }
}
```

When you omit `expected_languages`, transcription considers all supported languages, and `fallback_language` isn't limited to a list. You can set it to any supported code. This is useful when you want automatic detection most of the time but a predictable result when detection is unsure.

```json
{
  "notetaker_settings": {
    "transcription": true,
    "transcription_settings": {
      "fallback_language": "en"
    }
  }
}
```

## Improve recognition of names and jargon

Keyword hints bias the transcriber toward domain-specific terms it would otherwise mis-hear, such as people's names, company names, product names, and acronyms. Like language hints, they live in `transcription_settings`, and `transcription` must be `true`. Keyword hints are independent of `expected_languages`, so you can set them on their own.

- **`keywords`**: An array of terms to prioritize during transcription. Up to 200 terms. Each term must be 1 to 200 characters and can't contain control characters. Can't be `null`.
- **`use_speaker_names_as_keywords`**: A boolean. When `true`, Notetaker adds known speaker names to the keyword set so they're transcribed accurately. Can't be `null`.

The request below primes the transcriber with three product and vendor names and turns on speaker-name keywords. A term only needs to appear once in the list; Notetaker applies it to the whole meeting.

```json
{
  "notetaker_settings": {
    "transcription": true,
    "transcription_settings": {
      "keywords": ["Nylas", "AssemblyAI", "OAuth"],
      "use_speaker_names_as_keywords": true
    }
  }
}
```

You can combine keyword hints with language hints in the same object:

```json
{
  "notetaker_settings": {
    "transcription": true,
    "transcription_settings": {
      "expected_languages": ["en", "es"],
      "keywords": ["Nylas", "AssemblyAI"]
    }
  }
}
```

## Replace or clear transcription settings

`transcription_settings` is one of the [composite settings](/docs/v3/notetaker/configurations/#how-settings-combine) that Nylas replaces as a whole rather than field-merging. To change anything inside it, whether that's a language code, the fallback, or the keyword list, send the full object you want to end up with. You can't add a keyword while inheriting `expected_languages` from a parent calendar; send every field together, or omit the object entirely to inherit it unchanged.

To clear `transcription_settings`, whether to remove settings already on a Notetaker or to override settings inherited from a calendar on a single event, send it as either `null` or `{}`. The two are equivalent: both remove inherited language and keyword hints and return the Notetaker to default transcription behavior.

```json
{
  "notetaker_settings": {
    "transcription_settings": null
  }
}
```

## Supported language codes

These codes are valid in both `expected_languages` and `fallback_language`. The list covers about 100 languages, including 3 regional variants of English.

| Code | Language | Code | Language | Code | Language | Code | Language |
| ---- | -------- | ---- | -------- | ---- | -------- | ---- | -------- |
| `af` | Afrikaans | `am` | Amharic | `ar` | Arabic | `as` | Assamese |
| `az` | Azerbaijani | `ba` | Bashkir | `be` | Belarusian | `bg` | Bulgarian |
| `bn` | Bengali | `bo` | Tibetan | `br` | Breton | `bs` | Bosnian |
| `ca` | Catalan | `cs` | Czech | `cy` | Welsh | `da` | Danish |
| `de` | German | `el` | Greek | `en` | English | `en_au` | English (Australian) |
| `en_uk` | English (British) | `en_us` | English (American) | `es` | Spanish | `et` | Estonian |
| `eu` | Basque | `fa` | Persian | `fi` | Finnish | `fo` | Faroese |
| `fr` | French | `gl` | Galician | `gu` | Gujarati | `ha` | Hausa |
| `haw` | Hawaiian | `he` | Hebrew | `hi` | Hindi | `hr` | Croatian |
| `ht` | Haitian Creole | `hu` | Hungarian | `hy` | Armenian | `id` | Indonesian |
| `is` | Icelandic | `it` | Italian | `ja` | Japanese | `jw` | Javanese |
| `ka` | Georgian | `kk` | Kazakh | `km` | Khmer | `kn` | Kannada |
| `ko` | Korean | `la` | Latin | `lb` | Luxembourgish | `ln` | Lingala |
| `lo` | Lao | `lt` | Lithuanian | `lv` | Latvian | `mg` | Malagasy |
| `mi` | Maori | `mk` | Macedonian | `ml` | Malayalam | `mn` | Mongolian |
| `mr` | Marathi | `ms` | Malay | `mt` | Maltese | `my` | Burmese |
| `ne` | Nepali | `nl` | Dutch | `nn` | Norwegian Nynorsk | `no` | Norwegian |
| `oc` | Occitan | `pa` | Punjabi | `pl` | Polish | `ps` | Pashto |
| `pt` | Portuguese | `ro` | Romanian | `ru` | Russian | `sa` | Sanskrit |
| `sd` | Sindhi | `si` | Sinhala | `sk` | Slovak | `sl` | Slovenian |
| `sn` | Shona | `so` | Somali | `sq` | Albanian | `sr` | Serbian |
| `su` | Sundanese | `sv` | Swedish | `sw` | Swahili | `ta` | Tamil |
| `te` | Telugu | `tg` | Tajik | `th` | Thai | `tk` | Turkmen |
| `tl` | Tagalog | `tr` | Turkish | `tt` | Tatar | `uk` | Ukrainian |
| `ur` | Urdu | `uz` | Uzbek | `vi` | Vietnamese | `yi` | Yiddish |
| `yo` | Yoruba | `zh` | Chinese | | | | |

`auto` is valid only for `fallback_language`, not `expected_languages`. Omitting `fallback_language` produces the same automatic detection.

## Related topics

- [Using Nylas Notetaker](/docs/v3/notetaker/) for the invite flow and the rest of `notetaker_settings`.
- [Notetaker media formats](/docs/v3/notetaker/media-formats/#transcript-format) for the transcript file, including the `language` field that reports the detected code.
- [Notetaker configurations](/docs/v3/notetaker/configurations/) for setting transcription defaults once across many Notetakers.