# azuretts-python **Repository Path**: hedali/azuretts-python ## Basic Information - **Project Name**: azuretts-python - **Description**: Azure TTS Python 工具 这是一个命令行工具,用于将文本转换为语音,使用 Azure 官方SDK。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-30 - **Last Updated**: 2025-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Azure TTS Python 工具 这是一个命令行工具,用于将文本转换为语音,使用 Azure 认知服务。 ## 依赖安装 使用以下命令安装所需依赖: ```bash pip install -r requirements.txt ``` ## 打包为可执行文件 ### Windows系统 ```bash pyinstaller main.spec ``` ### Linux/macOS系统 ```bash pyinstaller main.spec ``` 生成的可执行文件位于 `dist/main` (Linux/macOS) 或 `dist/main.exe` (Windows) ## 使用 Docker 打包 您可以使用 Docker 在任何平台上构建此应用程序的可执行文件。我们提供了多种构建选项以确保在不同Linux发行版上的兼容性: ### 标准构建(推荐用于大多数Linux发行版) ```bash docker build -t azure-tts . ``` ### Alpine Linux构建(更小的镜像) ```bash docker build -f Dockerfile.alpine -t azure-tts:alpine . ``` ### 构建完成后提取可执行文件 ```bash # 标准构建 docker run --rm -v $(pwd)/dist:/dist azure-tts cp -r /app/dist /dist ``` ### 直接运行应用程序 ```bash docker run --rm azure-tts --text --key --endpoint ``` ## Docker运行模式(推荐在Linux上使用) 在Linux系统上,使用Docker方式运行本工具是最为稳定的选择,原因如下: 1. **环境隔离**:Docker容器提供了一个独立的运行环境,避免了与宿主机系统的依赖冲突 2. **跨发行版兼容性**:无论宿主机是Ubuntu、CentOS还是其他Linux发行版,Docker容器都能保证一致的运行环境 3. **避免GLIBC兼容性问题**:容器内使用固定的库版本,避免了不同Linux发行版间GLIBC版本差异导致的问题 4. **资源管理**:可以通过Docker的资源限制功能控制应用程序使用的内存和CPU 5. **易于部署**:一次构建,到处运行,简化了部署流程 ### 持久化容器运行方式 为了避免每次运行都创建新容器,推荐使用持久化容器方式: ```bash # 启动一个长期运行的容器 docker run -d --name azuretts-app -v $(pwd)/output:/app/output azure-tts tail -f /dev/null # 在已存在的容器中执行TTS命令 docker exec azuretts-app python main.py --text --key --endpoint --fileName /app/output/audio.mp3 # 完成所有操作后停止容器 docker stop azuretts-app ``` ### 使用Docker Compose管理(推荐) 创建`docker-compose.yml`文件来简化管理: ```yaml version: '3.8' services: azuretts: build: . image: azuretts:latest volumes: - ./output:/app/output ``` 使用方法: ```bash # 构建服务 docker-compose build # 运行TTS命令 docker-compose run --rm azuretts python main.py --text --key --endpoint --fileName /app/output/audio.mp3 ``` ## Alpine Linux 兼容性说明 在使用 Dockerfile.alpine 构建镜像时,可能会遇到 Azure SDK 依赖包兼容性问题。这是因为: 1. Alpine Linux 使用 musl libc 而不是标准的 glibc 2. 某些 Python 包(如 azure-cognitiveservices-speech)可能没有提供 Alpine 兼容的预编译版本 为了解决这个问题,我们在 Dockerfile.alpine 中添加了额外的构建工具和依赖项,包括: - g++ 编译器 - linux-headers 内核头文件 - libc-dev C库开发文件 这些工具允许在 Alpine 环境中从源码编译 Azure SDK 包。 ## 构建速度优化 为了加快Docker镜像构建速度,我们采取了以下优化措施: 1. 使用国内镜像源加速基础镜像拉取 2. 配置国内APT/APK软件源加速系统依赖安装 3. 使用国内PyPI镜像源加速Python包安装 如果构建仍然较慢,可以考虑以下替代方案: 1. **多阶段构建缓存**: ```bash # 构建时使用缓存 docker build -t azure-tts --build-arg BUILDKIT_INLINE_CACHE=1 . ``` 2. **使用构建缓存**: ```bash # 使用Docker缓存层加速构建 docker build -t azure-tts --cache-from azure-tts . ``` 3. **本地打包**: ```bash # 在本地环境中直接打包 pip install -r requirements.txt pyinstaller main.spec ``` ## 网络问题解决方案 如果在构建 Docker 镜像时遇到网络连接问题,可以尝试以下解决方案: 1. 使用国内镜像源: ```bash # 使用国内Docker镜像加速器 docker build --build-arg HTTP_PROXY=http://your-proxy:port -t azure-tts . ``` 2. 预先拉取基础镜像: ```bash docker pull docker.1ms.run/library/python:3.9-slim docker tag docker.1ms.run/library/python:3.9-slim python:3.9-slim ``` 3. 使用本地已有的Python环境打包: ```bash pip install -r requirements.txt pyinstaller main.spec ``` ## 跨Linux发行版兼容性说明 为了确保在不同Linux发行版上的兼容性,我们提供了以下解决方案: 1. **标准构建**:使用Debian作为基础镜像,兼容大多数现代Linux发行版 这些构建方式可以解决以下兼容性问题: - 不同Linux发行版间的glibc版本差异 - 系统库依赖问题 - 架构兼容性问题 ## 使用方法 ### Windows ```bash main.exe --text --key --endpoint [--fileName ] ``` ### Linux/macOS ```bash ./main --text --key --endpoint [--fileName ] ``` 参数说明: - `--text` 或 `-t`: 要转换的文本(需要 Base64 编码) - `--key` 或 `-k`: Azure 语音服务订阅密钥 - `--endpoint` 或 `-e`: Azure 语音服务终结点 - `--fileName` 或 `-f`: 输出文件名(可选,默认为 output.mp3) ## 并发调用 该工具支持并发调用,每个进程会生成独立的日志文件以避免冲突。 ## 返回码 - 0: 成功 - 1: 语音合成失败 - 2: 参数错误(如 Base64 解码失败) - 3: 未预期的错误 ## 跨平台支持 本工具支持在Windows、Linux和macOS上运行和打包。spec文件已针对不同平台进行了优化,可以自动检测操作系统并包含相应的二进制依赖。