murmur-cli 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +9 -0
- package/README.md +74 -2
- package/bin/murmur.js +48 -0
- package/package.json +11 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tarun Yadav
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,75 @@
|
|
|
1
|
-
#
|
|
1
|
+
# murmur-cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Command line and MCP access to [Murmur](https://www.murmurtts.com/), an offline text-to-speech and voice cloning app for Mac. Speech is generated on your own computer; your text is never uploaded.
|
|
4
|
+
|
|
5
|
+
This package is a small launcher. It finds the signed CLI that ships inside Murmur.app and runs it, so you can call `murmur` from any project, npm script or AI agent.
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
- macOS 15 or later (Apple Silicon or Intel)
|
|
10
|
+
- The Murmur app, free to download: https://www.murmurtts.com/download/latest
|
|
11
|
+
- Automation turned on once in Murmur > Settings > Automation
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
npm install -g murmur-cli
|
|
17
|
+
murmur status
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Or run it without installing:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
npx murmur-cli status
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Generate speech
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
murmur generate --text "Welcome back. Today we're building a local voice workflow." \
|
|
30
|
+
--voice af_bella --speed 0.95 --output audio/intro.wav
|
|
31
|
+
|
|
32
|
+
murmur generate --input scripts/chapter-01.txt --model kokoro --output audio/chapter-01.m4a
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Other commands:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
murmur models [--json]
|
|
39
|
+
murmur models install MODEL_ID
|
|
40
|
+
murmur voices [--model ID] [--json]
|
|
41
|
+
murmur batch --manifest scenes.json
|
|
42
|
+
murmur jobs get JOB_ID
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Run `murmur --help` for every option.
|
|
46
|
+
|
|
47
|
+
## Use with AI agents (MCP)
|
|
48
|
+
|
|
49
|
+
Murmur includes an MCP server, so Claude Code, Codex, Cursor and other MCP clients can generate voiceovers on your Mac.
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
claude mcp add --transport stdio --scope user murmur -- npx -y murmur-cli mcp serve
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"mcpServers": {
|
|
58
|
+
"murmur": { "command": "npx", "args": ["-y", "murmur-cli", "mcp", "serve"] }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Custom app location
|
|
64
|
+
|
|
65
|
+
If Murmur.app is not in `/Applications` or `~/Applications`, point to the helper:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
export MURMUR_HELPER="/path/to/Murmur.app/Contents/Helpers/murmur"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Docs
|
|
72
|
+
|
|
73
|
+
Full CLI and MCP guide: https://www.murmurtts.com/docs/automation
|
|
74
|
+
|
|
75
|
+
The launcher in this package is MIT licensed. The Murmur app has its own license, with a free plan and a one-time Pro upgrade.
|
package/bin/murmur.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
// Thin launcher for the signed Murmur CLI that ships inside Murmur.app.
|
|
4
|
+
// All speech generation happens in the app on this Mac; this script only finds the helper and runs it.
|
|
5
|
+
const { spawn } = require("node:child_process");
|
|
6
|
+
const { existsSync } = require("node:fs");
|
|
7
|
+
const { homedir } = require("node:os");
|
|
8
|
+
const { join } = require("node:path");
|
|
9
|
+
|
|
10
|
+
const HELPER = "Murmur.app/Contents/Helpers/murmur";
|
|
11
|
+
const candidates = [
|
|
12
|
+
process.env.MURMUR_HELPER,
|
|
13
|
+
join("/Applications", HELPER),
|
|
14
|
+
join(homedir(), "Applications", HELPER),
|
|
15
|
+
].filter(Boolean);
|
|
16
|
+
|
|
17
|
+
if (process.platform !== "darwin") {
|
|
18
|
+
console.error("murmur-cli needs macOS. The Murmur CLI ships with the Mac app: https://www.murmurtts.com/");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const helper = candidates.find((p) => existsSync(p));
|
|
23
|
+
if (!helper) {
|
|
24
|
+
console.error(
|
|
25
|
+
[
|
|
26
|
+
"Murmur.app was not found in /Applications or ~/Applications.",
|
|
27
|
+
"",
|
|
28
|
+
"murmur-cli runs the CLI that ships inside the free Murmur app. Install the app first:",
|
|
29
|
+
" Download: https://www.murmurtts.com/download/latest",
|
|
30
|
+
" Homebrew: brew install --cask murmur (once the cask is accepted)",
|
|
31
|
+
"",
|
|
32
|
+
"Then enable access once in Murmur > Settings > Automation.",
|
|
33
|
+
"If the app lives somewhere else, set MURMUR_HELPER to the full path of Contents/Helpers/murmur.",
|
|
34
|
+
].join("\n"),
|
|
35
|
+
);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const child = spawn(helper, process.argv.slice(2), { stdio: "inherit" });
|
|
40
|
+
for (const sig of ["SIGINT", "SIGTERM", "SIGHUP"]) process.on(sig, () => child.kill(sig));
|
|
41
|
+
child.on("error", (err) => {
|
|
42
|
+
console.error(`Could not start ${helper}: ${err.message}`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
});
|
|
45
|
+
child.on("exit", (code, signal) => {
|
|
46
|
+
if (signal) process.kill(process.pid, signal);
|
|
47
|
+
else process.exit(code ?? 1);
|
|
48
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "murmur-cli",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Command line and MCP access to Murmur, the offline text-to-speech app for Mac. Generate speech and clone voices locally.",
|
|
5
|
+
"bin": { "murmur": "bin/murmur.js", "murmur-cli": "bin/murmur.js" },
|
|
6
|
+
"files": ["bin", "README.md"],
|
|
7
|
+
"os": ["darwin"],
|
|
8
|
+
"engines": { "node": ">=18" },
|
|
9
|
+
"keywords": ["text-to-speech", "tts", "voice-cloning", "offline", "local", "mac", "macos", "mcp", "kokoro", "qwen3-tts", "speech-synthesis", "cli"],
|
|
10
|
+
"homepage": "https://www.murmurtts.com/docs/automation",
|
|
11
|
+
"author": "Murmur <hello@murmurtts.com>",
|
|
12
|
+
"license": "MIT"
|
|
13
|
+
}
|