Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go文本转MP3

Go语言调用SiliconFlow实现文本转换为MP3格式

作者:老大白菜

这篇文章主要为大家详细介绍了Go语言如何调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件,感兴趣的小伙伴可以了解下

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

添加更详细的日志记录

支持命令行参数配置

增加对不同语音模型的支持

到此这篇关于Go语言调用SiliconFlow实现文本转换为MP3格式的文章就介绍到这了,更多相关Go文本转MP3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文