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

相关推荐
Profile排查笔记6 小时前
指纹浏览器环境异常排查:Fingerprint、Profile、Proxy、Session 和 Task Log 怎么看
前端·人工智能·后端·自动化
会周易的程序员6 小时前
microLog 后端开发指南
开发语言·c++·物联网·设计模式·日志·iot·aiot
小强库计算机毕业设计6 小时前
源码分享Spring Boot + Vue3 的校园社团管理系统
java·spring boot·后端·计算机毕业设计
Esaka_Forever6 小时前
Python 完整内存管理机制详解
开发语言·python·spring
星空露珠6 小时前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
未来之窗软件服务6 小时前
计算机考试-C语言 应用题—东方仙盟
c语言·开发语言·仙盟创梦ide·东方仙盟·计算机考试
想你依然心痛6 小时前
AtomCode在后端开发中的实战体验:Go微服务从零搭建
开发语言·微服务·golang
我是一颗柠檬6 小时前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
luj_17686 小时前
草酸与烟酸对消化及糖代谢的影响解析
服务器·c语言·开发语言·经验分享·算法
阿新聊ai6 小时前
从 Prompt 到 Loop:AI 编程 Agent 四代循环的演进全景
人工智能·后端