AI 大模型应用,采用 Rust 来开发,到底有多爽!

大家好,我是渔夫。

今天分享主题,闲着没事找事,使用 Rust 来开发文字转语音这样一个简单需求。

非常简单,我们直接使用 OpenAI 的 Audio 接口,它是可以文本生成对应语音的,直接看代码。

添加环境依赖

开发之前,你需要确保在 Cargo.toml 文件中添加 reqwest 和 serde_json 两个依赖,可以复制粘贴到你的文件中,内容如下。

[dependencies]
serde_json = "1.0"
tokio = { version = "1.36.0", features = ["full"] }
reqwest = { version = "0.12.1", features = ["blocking", "json"] }

也可以使用 cargo 命令来添加依赖,执行以下命令:

cargo add reqwest --features blocking,json
cargo add serde_json
cargo add tokio --features full

快速编码吧

端点speech接受三个关键输入:模型、应转换为音频的文本以及用于生成音频的语音。

use reqwest::Client;
use serde_json::json;
use std::fs::File;
use std::io::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();
    // 替换为你的 OpenAI API 密钥
    let api_key = "sk-xxx"
    let text = "大家好,我是渔夫。很高兴与你一起学习 Rust 语言,加我微信一起讨论吧!";

    // TTS 模型: tts-1(普清)、tts-1-hd(高清)
    // input: 需要转换成语音的文本,最长支持4096字节
    let response = client
        .post("https://api.openai.com/v1/audio/speech")
        .header("Content-Type""application/json")
        .header("Authorization"format!("Bearer {}", api_key))
        .json(&json!({
            "model""tts-1",
            "input": text,
            "voice""alloy"// 音色
            "speed"1.5,
        }))
        .send()
        .await?;

    let bytes = response.bytes().await?.to_vec();
    
    let mut file = File::create("speech_create_demo.mp3")?;
    file.write_all(&bytes)?;

    println!("Speech file created successfully!");

    Ok(())
}

默认情况下,终端将输出语音音频的 MP3 文件,可以配置为输出当前支持的格式。如使用“opus”、“aac”、“flac”和“pcm”等其他格式,可以参考官网。

输出不同音色

你还可以输出不同的音色,GPT 提供了 6 种,你可以修改 voice 来实现,alloy、echo、fable、onyx、nova、shimmer 开发过程根据自己喜欢来选择吧!

输出不同语速

OpenAI 的 Audio 接口是可以调节不同语速的,可以根据实际情况来选择。提供的语速取值范围:0.25 - 4.0,默认为 1.0,你只需要添加 speed 属性即可实现。

.json(&json!({
    "model""tts-1",
    "input": text,
    "voice""shimmer",
    "speed"1.5,
}))

其他语言版本

如果你是使用 Python,可以参考以下代码:

import openai

# 设置 OpenAI API 密钥
api_key = "sk-xxxx"
openai.api_key = api_key

# 指定需要转换为语音的文本和语音模型
text = "안녕하세요, 저는 어부입니다!"  # 您想要转换为语音的文本,使用韩语
voice = "alloy"  # 选择语音模型,可以是 "alloy" 或其他合适的语音模型

# 调用 OpenAI TTS API,生成语音文件
speech_response = openai.Audio.create_speech(
    model="tts-1",  # TTS模型:tts-1(普清)、tts-1-hd(高清)
    input=text,
    voice=voice,
)

# 将生成的语音文件保存到本地
with open("speech_create_demo3.mp3""wb"as file:
    file.write(speech_response.content)

推荐阅读:

参考资料:

  • https://platform.openai.com/docs/guides/speech-to-text/quickstart

  • https://platform.openai.com/docs/guides/text-to-speech

我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值