使用 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

相关推荐
政沅同学7 分钟前
基于 C# WPF + HALCON 的工业视觉算法工具框架(开源)
开发语言·c#·wpf
JS菌9 分钟前
Skills 动态加载系统:让 AI Agent 按需获取领域知识
前端·人工智能·后端
影寂ldy10 分钟前
C#WinForm 窗体基础(入口、部分类、属性、生命周期事件)
开发语言·c#
2301_7818335211 分钟前
Python 正则表达式入门教程
开发语言·python·正则表达式
gihigo199813 分钟前
基于蒙特卡洛的异常值剔除(RANSAC + MC置信区间)—MATLAB实现
开发语言·算法·matlab
神奇小汤圆21 分钟前
Vector Graph RAG 开源!一套向量数据库同时搞定语义检索+RAG多跳
后端
小高学习java22 分钟前
事务的边界问题,如何判断数据回滚时机。
java·数据库·后端
Ting.~28 分钟前
在java中接入百度地图
java·开发语言·dubbo
小短腿的代码世界29 分钟前
Qt对象树析构链与智能指针协同:零泄漏内存管理架构
开发语言·qt·架构
不爱编程的小陈31 分钟前
深入解析 Go 网络 I/O 的底层引擎:从 epoll 到 netpoll
服务器·网络·golang