
Phonexia Speech Engine (SPE)是一个提供REST API的HTTP服务器,专为希望集成Phonexia语音技术的开发者设计。
注意:拉取镜像需使用特定标签,不支持latest标签。详见标签命名章节。
shell$ docker run --detach --name some-spe --publish 8600:8600 --volume /license.dat:/opt/spe/license.dat phonexia/spe:3.61-vad
或:
shell$ docker network create some-network $ docker run --detach --name some-spe --network some-network --volume /license.dat:/opt/spe/license.dat phonexia/spe:3.61-vad
其中:
some-network 是新创建的网络some-spe 是您为容器分配的名称/license.dat 是Phonexia许可证文件路径。联系***获取许可证。容器启动时,入口脚本会自动配置SPE,初始化1个技术实例(若存在流式技术变体,也会初始化1个实例,将额外消耗许可证槽位)。详见技术配置章节。
通过浏览器访问API文档:http://localhost:8600/doc(需使用--publish 8600:8600运行SPE)
或使用curl获取SPE状态(需使用--publish 8600:8600运行SPE):
shell$ curl localhost:8600/status
或使用镜像中的phxclient(SPE需连接到some-network网络):
shell$ docker run --rm --network some-network phonexia/spe:3.61-vad phxclient -m GET -u some-spe:8600/status
容器启动时,入口脚本会自动配置SPE,初始化每个技术的1个实例(若存在流式技术变体,也会初始化1个实例,额外消耗许可证槽位)。要初始化多个技术实例,可使用环境变量SPE_N_INSTANCES。也可通过SPE_N_WORKERS和SPE_N_REALTIME_WORKERS设置工作进程数(自SPE 3.55起,工作进程数默认自动配置为-1,根据CPU数量和技术配置动态调整)。
shell$ docker run --detach --name some-spe -e SPE_N_INSTANCES=4 --publish 8600:8600 --volume /license.dat:/opt/spe/license.dat phonexia/spe:3.61-vad
SPE_ENABLE_TECHNOLOGIES配置技术实例该变量会作为phxadmin2 technology enable ${SPE_ENABLE_TECHNOLOGIES}命令的参数执行。例如,配置3个VAD技术实例和1个VAD_STREAM技术实例:
shell$ docker run --detach --name some-spe -e SPE_ENABLE_TECHNOLOGIES="vad:*=3 vad_stream:*=1" --publish 8600:8600 --volume /license.dat:/opt/spe/license.dat phonexia/spe:3.61-vad
可将自定义配置文件挂载到容器内/opt/spe/settings/technologies.xml路径。若该文件已存在,入口脚本将不会自动配置SPE。详见数据持久化章节。
| 变量名 | 描述 |
|---|---|
| SPE_N_INSTANCES | 初始化每个技术的实例数量,默认值为1 |
| SPE_ENABLE_TECHNOLOGIES | 传递给phxadmin2 technology enable命令的初始化字符串。示例:启用2个VAD技术(模型GENERIC_3)和3个VAD_STREAM技术:"vad:generic_3=2 vad_stream:generic_3=3" |
| SPE_UPGRADE_DATABASE | 自动升级数据库 schema,适用于升级SPE版本且使用MariaDB数据库时(SQLite会自动升级)。升级前建议备份数据库 |
| 变量名 | SPE属性 | 描述 |
|---|---|---|
| SPE_MULTITHREAD_INITIALIZATION | server.technology_multithread_initialization | 启用多线程初始化 |
| SPE_MULTITHREAD_INITIALIZATION_N | server.technology_multithread_initialization | 技术初始化线程数 |
| SPE_ENABLE_AUTHENTICATION_TOKEN | server.enable_authentication_token | 认证模式,false表示基本认证 |
| SPE_ENABLE_RESOURCE_LOCKER | server.enable_resource_locker | 资源锁定,处理时锁定资源 |
| SPE_DB_ENGINE | server.db.engine | 数据库类型('SQLite'或'MariaDB') |
| SPE_DB_SAVE_RESULTS | server.db.save_results | 在数据库中存储技术处理结果 |
| SPE_DB_SQLITE_DATA_SOURCE | server.db.sqlite.data_source | SQLite数据库文件路径 |
| SPE_DB_MARIADB_HOST | server.db.mariadb.host | 数据库地址 |
| SPE_DB_MARIADB_PORT | server.db.mariadb.port | 数据库端口 |
| SPE_DB_MARIADB_DB | server.db.mariadb.db | 数据库名称 |
| SPE_DB_MARIADB_USER | server.db.mariadb.user | 数据库用户名 |
| SPE_DB_MARIADB_PASSWORD | server.db.mariadb.password | 数据库密码 |
| SPE_DB_MARIADB_OPTIONS | server.db.mariadb.options | 数据库选项 |
| SPE_DB_MARIADB_MAX_CONNECTIONS | server.db.max_connections | 最大同时连接数 |
| SPE_N_WORKERS | server.n_workers | 工作进程数 |
| SPE_N_REALTIME_WORKERS | server.n_realtime_workers | 实时工作进程数 |
| SPE_FINISHED_TASK_TIMEOUT | server.finished_task_timeout | 自动移除已完成任务的超时时间 |
| SPE_LICENSE | server.license | 许可证文件路径 |
| SPE_INPUT_STRAM_RTP_STREAM_LIMIT | input_stream.rtp.stream_limit | 最大打开的输入RTP会话数 |
| SPE_INPUT_STRAM_RTP_TIMEOUT | input_stream.rtp.timeout | 输入RTP socket超时时间(秒) |
| SPE_OUTPUT_STRAM_RTP_TIMEOUT | output_stream.rtp.timeout | 输出RTP socket超时时间(秒) |
| SPE_AUDIO_CONVERTER_ENABLED | audio_converter.enabled | 启用音频转换器,可选值:true、false、auto |
| SPE_AUDIO_CONVERTER_COMMAND | audio_converter.command | 音频转换器命令 |
| SPE_REPORTING_URLS | reporting.url | 报告服务器地址列表(逗号分隔) |
| SPE_REPORTING_SSL_ENABLED | reporting.ssl.enabled | 启用SSL连接发送报告 |
| SPE_REPORTING_SSL_CA_FILE | reporting.ssl.ca_file | 根CA证书路径 |
| SPE_REPORTING_SSL_CERTIFICATE_FILE | reporting.ssl.certificate_file | 证书文件路径 |
| SPE_REPORTING_SSL_PRIVATE_KEY_FILE | reporting.ssl.private_key_file | 私钥文件路径 |
| SPE_REPORTING_SSL_PRIVATE_KEY_PASSWORD | reporting.ssl.private_key_password | 私钥密码,若无需密码则留空 |
| SPE_REPORTING_SSL_CIPHER_LIST | reporting.ssl.cipher_list | SSL密码套件列表 |
| SPE_TECHNOLOGIES_TTS_CONNECTORS | external.technologies.tts_connectors | 启用文本转语音连接器,逗号分隔的连接器文件夹名称列表(默认位于external/technologies/tts) |
SPE_OUTPUT_STREAM_RTP_TIMEOUT:若输出流超过指定时间未发送数据,将被关闭。防止客户端忘记关闭流导致的流阻塞。SPE_TECHNOLOGIES_TTS_CONNECTORS:启用外部文本转语音技术。每个连接器需通过其文件夹中的配置文件进行配置,模板文件为connectors.properties.template。可通过以下命令查看环境变量默认值:
shell$ docker inspect phonexia/spe:3.61-vad
SPE配置存储在/opt/spe/settings文件夹中。容器启动时,若phxspe.properties和technologies.xml文件不存在,将自动生成。可通过挂载settings文件夹使用自定义配置:
shelldocker run --detach --name some-spe --publish 8600:8600 --volume /license.dat:/opt/spe/license.dat --volume /spe/my_settings:/opt/spe/settings phonexia/spe:3.61-vad
可手动编辑配置文件,或使用phxadmin/phxadmin2工具修改technologies.xml。修改后需重启SPE。
查看已配置技术
shell$ docker run --rm --volume /spe/my_settings:/opt/spe/settings phonexia/spe:3.61-vad phxadmin2 technology
启用/禁用VAD技术
shell$ docker run --rm --volume /spe/my_settings:/opt/spe/settings phonexia/spe:3.61-vad phxadmin2 technology enable vad $ docker run --rm --volume /spe/my_settings:/opt/spe/settings phonexia/spe:3.61-vad phxadmin2 technology disable vad
查看帮助:
shell$ docker run --rm phonexia/spe:3.61-vad phxadmin2 --help
SPE数据存储在home和shared文件夹中。默认SQLite数据库文件位于home文件夹。可通过挂载这些文件夹实现数据持久化:
shell$ docker run --detach --name some-spe --publish 8600:8600 --volume /license.dat:/opt/spe/license.dat --volume /spe/my_home:/opt/spe/home --volume /spe/my_shared:/opt/spe/shared phonexia/spe:3.61-vad
通过环境变量SPE_REPORTING_URLS配置RLS地址:
shell$ docker run --detach --name some-spe --publish 8600:8600 --volume /license.dat:/opt/spe/license.dat -e SPE_REPORTING_URLS="server1.com:8777, 192.168.0.10:8777" phonexia/spe:3.61-vad
shell$ docker run -d --network some-network --name mariadb --volume /mariadb-data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=secret -e MARIADB_DATABASE=phxspe mariadb:latest
其中secret是MariaDB的root密码,phxspe是SPE数据库名称。
shelldocker run --detach --name some-spe --network some-network --volume /license.dat:/opt/spe/license.dat -e SPE_DB_ENGINE=MariaDB -e SPE_DB_MARIADB_HOST=mariadb -e SPE_DB_MARIADB_USER=root -e SPE_DB_MARIADB_PASSWORD=secret -e SPE_DB_MARIADB_DB=phxspe phonexia/spe:3.61-vad
示例docker-compose.yml文件:
yamlversion: '3' services: mariadb: image: mariadb:latest container_name: mariadb environment: MARIADB_ROOT_USER: root MARIADB_ROOT_PASSWORD: secret MARIADB_USER: phonexia MARIADB_DATABASE: phxspe volumes: - dbdata:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] timeout: 20s retries: 10 spe: image: phonexia/spe:3.61-vad container_name: spe links: - mariadb environment: SPE_DB_ENGINE: MariaDB SPE_DB_MARIADB_HOST: mariadb SPE_DB_MARIADB_USER: root SPE_DB_MARIADB_PASSWORD: secret SPE_DB_MARIADB_DB: phxspe ports: - 8600:8600 volumes: - home:/opt/spe/home - shared:/opt/spe/shared - settings:/opt/spe/settings - /spe/license.dat:/opt/spe/license.dat depends_on: mariadb: condition: service_healthy healthcheck: test: ["CMD", "curl" ,"-f", "http://localhost:8600/status"] timeout: 30s retries: 10 volumes: dbdata: home: shared: settings:
其中/spe/license.dat是许可证文件路径。在docker-compose.yml文件所在目录运行:
shell$ docker-compose up -d
示例spe-vad-sqe-sid4.Dockerfile(组合VAD、SQE和SID4技术):
dockerfileFROM phonexia/spe:3.61-vad as VAD FROM phonexia/spe:3.61-sqe as SQE FROM phonexia/spe:3.61-sid4 as SID4 FROM phonexia/spe:3.61 COPY --from=VAD /opt/spe/bsapi ./bsapi COPY --from=SQE /opt/spe/bsapi ./bsapi COPY --from=SID4 /opt/spe/bsapi ./bsapi
在spe-vad-sqe-sid4.Dockerfile文件所在目录构建镜像:
shell$ docker build -t spe-vad-sqe-sid4:3.61 -f spe-vad-sqe-sid4.Dockerfile .
SPE镜像标签命名规则如下,便于选择版本和技术:
例如标签3.61.0-vad-generic_3中:
3.61.0:SPE版本。若需跟踪最新bug修复版本,可使用3.61(指向最新bug修复版本)vad:技术名称。支持的技术包括:age、denoise、diar、gid、kws、lid、sid、sid4、sqe、stt、tanalysis和vadgeneric_3:技术模型名称。部分技术可省略模型名使用默认模型,例如VAD技术默认模型为generic_3,可使用标签3.61.0-vad此外,提供不含任何技术的基础镜像,标签仅包含版本(如3.61.0或3.61)。该镜像因缺少技术无法启动,主要用于组合多种技术(详见组合多种技术章节)。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务