geekwang63 downloadsTranscribe audio embeds in Obsidian with configurable speech-to-text services.
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.
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.
![[recording.mp3]]
![[folder/meeting.m4a]]
[[recording.wav]]
[Recording](recording.m4a)
![[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.
qwen3-asr-flash-filetrans.zh or en; leave it empty for automatic detection.24h is recommended for asynchronous jobs.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.
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.
main.ts: plugin source.main.js: bundled file loaded by Obsidian.manifest.json: Obsidian plugin manifest.esbuild.config.mjs: production build configuration.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.
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.