使用 Go 语言调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件。
代码结构
包和依赖
package main
import (
"fmt"
"io"
"os"
"path/filepath"
"github.com/sashabaranov/go-openai"
)
- 使用
go-openai
库与 OpenAI 兼容的 API 交互 - 导入文件和路径处理所需的标准库包
OpenAI 客户端配置
config := openai.DefaultConfig("sk-xxznqkrjqarsmwpeqfcbfylwmrlxysfzydxpowjxovlkxavp")
config.BaseURL = "https://api.siliconflow.cn/v1"
client := openai.NewClientWithConfig(config)
- 使用自定义 API 密钥
- 指定 SiliconFlow 的 API 基础 URL
- 创建定制的 OpenAI 客户端
语音生成请求
request := openai.CreateSpeechRequest{
Model: "FunAudioLLM/CosyVoice2-0.5B",
Input: "你能用高兴的情感说吗?...",
Voice: "FunAudioLLM/CosyVoice2-0.5B:alex",
ResponseFormat: openai.SpeechResponseFormatMp3,
}
关键参数:
Model
:选择语音模型Input
:待转换的文本Voice
:指定音色ResponseFormat
:输出音频格式
错误处理与文件保存
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 配置
依赖安装
go get github.com/sashabaranov/go-openai
注意事项
- 需要预先安装 Go 和依赖库
- API 密钥是敏感信息,不应硬编码
- 注意 API 使用限制和计费
推荐改进
- 使用环境变量管理 API 密钥
- 添加更详细的日志记录
- 支持命令行参数配置
- 增加对不同语音模型的支持
快来体验 siliconflow 图像描述服务:https://cloud.siliconflow.cn/i/vnCCfVaQ
快来体验 siliconflow 图像描述服务:https://cloud.siliconflow.cn/i/vnCCfVaQ
快来体验 siliconflow 图像描述服务:https://cloud.siliconflow.cn/i/vnCCfVaQ