使用 Go 语言调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件。

使用 Go 语言调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件。

代码结构

包和依赖

go 复制代码
package main

import (
    "fmt"
    "io"
    "os"
    "path/filepath"
    "github.com/sashabaranov/go-openai"
)
  • 使用 go-openai 库与 OpenAI 兼容的 API 交互
  • 导入文件和路径处理所需的标准库包

OpenAI 客户端配置

go 复制代码
config := openai.DefaultConfig("sk-xxznqkrjqarsmwpeqfcbfylwmrlxysfzydxpowjxovlkxavp")
config.BaseURL = "https://api.siliconflow.cn/v1"
client := openai.NewClientWithConfig(config)
  • 使用自定义 API 密钥
  • 指定 SiliconFlow 的 API 基础 URL
  • 创建定制的 OpenAI 客户端

语音生成请求

go 复制代码
request := openai.CreateSpeechRequest{
    Model: "FunAudioLLM/CosyVoice2-0.5B",
    Input: "你能用高兴的情感说吗?...",
    Voice: "FunAudioLLM/CosyVoice2-0.5B:alex",
    ResponseFormat: openai.SpeechResponseFormatMp3,
}

关键参数:

  • Model:选择语音模型
  • Input:待转换的文本
  • Voice:指定音色
  • ResponseFormat:输出音频格式

错误处理与文件保存

go 复制代码
response, err := client.CreateSpeech(request)
if err != nil {
    fmt.Printf("语音生成失败: %v\n", err)
    return
}

speechFilePath := filepath.Join(filepath.Dir(os.Args[0]), "siliconcloud-generated-speech.mp3")
file, err := os.Create(speechFilePath)
defer file.Close()

_, err = io.Copy(file, response)
if err != nil {
    fmt.Printf("保存语音文件失败: %v\n", err)
    return
}
  • 使用 CreateSpeech() 生成语音
  • 动态确定文件保存路径
  • 使用 io.Copy() 保存文件
  • 详细的错误处理和日志输出

使用场景

  • 文本转语音
  • 多语言语音生成
  • 个性化语音定制

技术特点

  • 使用 Go 语言的并发特性
  • 简洁的错误处理机制
  • 灵活的 API 配置

依赖安装

bash 复制代码
go get github.com/sashabaranov/go-openai

注意事项

  1. 需要预先安装 Go 和依赖库
  2. API 密钥是敏感信息,不应硬编码
  3. 注意 API 使用限制和计费

推荐改进

  • 使用环境变量管理 API 密钥
  • 添加更详细的日志记录
  • 支持命令行参数配置
  • 增加对不同语音模型的支持

快来体验 siliconflow 图像描述服务:https://cloud.siliconflow.cn/i/vnCCfVaQ

快来体验 siliconflow 图像描述服务:https://cloud.siliconflow.cn/i/vnCCfVaQ

快来体验 siliconflow 图像描述服务:https://cloud.siliconflow.cn/i/vnCCfVaQ

相关推荐
人道领域1 小时前
Day | 11 【苍穹外卖统计业务的实现:含详细思路分析】
java·数据库·后端·苍穹外卖
xiaoye37086 小时前
Java 自动装箱 / 拆箱 原理详解
java·开发语言
ZTLJQ7 小时前
数据的基石:Python中关系型数据库完全解析
开发语言·数据库·python
夏霞7 小时前
c# signlar 客户端传递参数给服务端配置方法
开发语言·c#
KD7 小时前
阿里云服务迁移实战(二)——网关迁移与前后端分离配置
后端
迷藏4948 小时前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
2301_818419018 小时前
C++中的解释器模式变体
开发语言·c++·算法
小江的记录本8 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存
摇滚侠8 小时前
Java 项目《谷粒商城-1》架构师级Java 项目实战,对标阿里 P6-P7,全网最强,实操版本
java·开发语言
颜酱8 小时前
回溯算法实战练习(3)
javascript·后端·算法