Audio to Text
approvedby geekwang
Transcribe audio embeds in Obsidian with configurable speech-to-text services. - This plugin has not been manually reviewed by Obsidian staff.
Audio to Text
Audio to Text is an Obsidian plugin that turns referenced audio files into Markdown transcripts. Select an audio reference in a note, choose the transcription command from the editor context menu, and the transcript is inserted below the reference.
Current transcription model
The default model is qwen3-asr-flash-filetrans from Alibaba Cloud Model Studio (DashScope). The plugin submits an asynchronous file-transcription task, polls until it is complete, downloads the timestamped result, and formats it as one-minute sections.
The endpoint, model name, and recognition language are configurable in the plugin settings. The project is designed to support additional hosted providers, local models, and self-hosted gateways in the future, so the plugin name is not tied to one provider.
Features
- Right-click an audio reference and choose 语音转文本.
- Optional automatic transcription when an audio reference is typed, pasted, or dropped into a note.
- Supports Obsidian Wiki embeds and regular Markdown links.
- Splits the transcript into one-minute sections using returned timestamps.
- Writes standard Markdown directly below the audio reference.
- Uploads local audio to Litterbox as a temporary public download URL before submitting the asynchronous task. This also supports recordings larger than 10 MB when the upload service accepts them.
- Skips a reference when a transcript is already present below it.
Supported references
![[recording.mp3]]
![[folder/meeting.m4a]]
[[recording.wav]]
[Recording](recording.m4a)
Output example
![[meeting.m4a]]
### 语音转文本
**00:00 - 01:00**
Transcript for the first minute.
**01:00 - 02:00**
Transcript for the second minute.
---

The heading and separator follow the plugin's current Markdown output format. Existing transcripts created by older versions remain detectable for compatibility.
Usage
- Open Settings → Audio to Text and enter your DashScope API key (or the key required by your configured endpoint).
- Confirm the endpoint and model. The defaults are the DashScope transcription endpoint and
qwen3-asr-flash-filetrans. - Optionally enter a recognition language such as
zhoren; leave it empty for automatic detection. - Set the temporary upload retention period.
24his recommended for asynchronous jobs. - Enable 自动转文字 if newly inserted audio references should start transcription automatically.
- In a Markdown editor, select an audio reference, right-click, and choose 语音转文本. The result is inserted below that reference.
Privacy and security
- The API key is stored in Obsidian's local plugin data and is not written to source code or console logs. Do not commit plugin data files to a public repository.
- Before transcription, the local audio is uploaded to Litterbox and passed to the model service as a public download URL. Anyone who obtains that URL may be able to access the file until it expires.
- Do not upload highly sensitive, regulated, or confidential recordings unless your policies allow this temporary third-party upload.
- Litterbox retention, file-size limits, availability, and rate limits are controlled by the upload service. The model service has its own audio duration and request limits.
Installation for users
End users do not need Node.js and should not run npm install or npm run build.
After community publication, open Settings → Community plugins in Obsidian, search for Audio to Text, then install and enable it.
Before publication, download the prebuilt main.js and manifest.json from a project Release and place them in:
.obsidian/plugins/audio-to-text/
Reload the plugin from Obsidian's community plugin settings.
For a one-file download, use the Audio-to-Text-<version>.zip asset attached to the same Release. Extract the archive directly into .obsidian/plugins/audio-to-text/ so that main.js and manifest.json are directly inside that folder. Then enable Audio to Text under Settings → Community plugins. The archive is generated automatically whenever a matching version tag is pushed.
Local development
These commands are only for contributors who modify the source or create a development build:
npm install
npm run build
Use watch mode during development:
npm run dev
Copy the generated main.js and manifest.json into the Vault plugin directory to test them in Obsidian.
Project structure
main.ts: plugin source.main.js: bundled file loaded by Obsidian.manifest.json: Obsidian plugin manifest.esbuild.config.mjs: production build configuration.
Contributing
Issues and pull requests are welcome. Provider integrations should keep service configuration, upload handling, request adaptation, polling, and result parsing separate. Please include coverage for different audio formats, long recordings, temporary-upload failures, and asynchronous API errors.
Community publication status
The project is being prepared for review as an Obsidian community plugin. Its plugin ID is audio-to-text, which follows the community manifest requirements. Provider coverage, error handling, tests, and release documentation may continue to evolve before publication.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.