返回市场
语音.sh

语音.sh

作者:j3k06 星标更新:2025-03-19

项目介绍

Speech.sh

一个强大的命令行工具,用于通过OpenAI的API进行文本到语音的转换。

特性

  • 使用简单命令将文本转换为语音
  • 多种语音选项(onyx, alloy, echo, fable, nova, shimmer)
  • 可调节的语速(0.25至4.0)
  • 支持tts-1和tts-1-hd模型
  • 灵活的API密钥管理(命令行、环境变量或文件)
  • 自动缓存以避免重复的API调用
  • 强大的重试机制以处理网络问题
  • 支持ffmpeg和mplayer进行音频播放
  • 兼容MCP(模型上下文协议)以集成AI助手

安装

  1. 克隆此仓库:

    git clone https://github.com/j3k0/speech.sh.git
    cd speech.sh
    
  2. 将脚本设置为可执行:

    chmod +x speech.sh mcp.sh launch
    
  3. 确保你有必要的依赖项:

    • curl
    • jq
    • ffmpeg 或 mplayer(推荐使用ffmpeg)

使用方法

基本用法:

./speech.sh --text "你好,世界!"

更多选项:

./speech.sh --text "你好,世界!" --voice nova --speed 1.2 --model tts-1-hd

选项

-h, --help          显示帮助信息并退出
-t, --text TEXT     要转换为语音的文本(必需)
-v, --voice VOICE   使用的语音模型(默认:onyx)
-s, --speed SPEED   语速(默认:1.0)
-o, --output FILE   输出文件路径(默认:自动生成)
-a, --api_key KEY   OpenAI API密钥
-m, --model MODEL   使用的TTS模型(默认:tts-1)
-p, --player PLAYER 音频播放器:auto, ffmpeg, 或 mplayer(默认:auto)
    --verbose       启用详细日志记录
-V, --verbose       与--verbose相同
-r, --retries N     API调用失败时的重试次数(默认:3次)
-T, --timeout N     API调用的超时时间(秒,默认:30秒)

API密钥配置

该脚本接受OpenAI API密钥的三种方式(按优先级顺序):

  1. 命令行参数:--api_key "your-api-key"
  2. 环境变量:export OPENAI_API_KEY="your-api-key"
  3. 脚本目录中的名为API_KEY的文件

高级特性

自动缓存

该脚本默认会缓存音频文件以避免不必要的API调用。 如果你请求相同的文本、语音和语速,它将重用先前生成的音频文件。

重试逻辑

该脚本包括复杂的API调用重试逻辑:

  • 自动重试失败的API调用(默认:3次尝试)
  • 实现指数退避以提高可靠性
  • 当可用时使用curl的本地重试机制
  • 可配置的超时和重试值

音频播放器选项

你可以选择你喜欢的音频播放器:

  • --player auto:如果可用则使用ffmpeg,否则使用mplayer(默认)
  • --player ffmpeg:强制使用ffmpeg
  • --player mplayer:强制使用mplayer

MCP集成

mcp.sh脚本提供了模型上下文协议兼容性,允许文本到语音的功能被兼容MCP的AI助手如Claude使用。

要使用MCP服务器:

# 使用启动脚本启动MCP服务器
./launch

有关使用MCP集成的详细说明,请参阅MCP_README.md

安全注意事项

该脚本采取了多个步骤来确保安全:

  • 使用jq进行适当的JSON处理以处理参数
  • 实现适当的基于数组的参数传递以防止shell注入
  • 在执行前验证所需的依赖项
  • 在整个执行过程中使用错误处理

示例

使用默认设置将文本转换为语音:

./speech.sh --text "你好,世界!"

使用不同的语音:

./speech.sh --text "你好,世界!" --voice nova

调整语速:


./speech.sh --text "你好,世界!" --speed 1.5

保存到特定文件:

./speech.sh --text "你好,世界!" --output hello.mp3

使用环境变量进行API密钥:

export OPENAI_API_KEY="your-api-key"
./speech.sh --text "你好,世界!"

故障排除

如果你遇到问题:

  1. 使用--verbose标志启用详细日志记录
  2. 检查你的OpenAI API密钥是否有效
  3. 验证所有依赖项是否已安装
  4. 确保你有互联网连接
  5. 检查输出目录的权限

贡献者

  • Jean-Christophe Hoelt
  • Claude AI (Anthropic)

许可证

GPL