语音合成

语音合成,又称文本转语音(Text-to-Speech,TTS),是将文本转换为自然语音的技术。该技术基于机器学习算法,通过学习大量语音样本,掌握语言的韵律、语调和发音规则,从而在接收到文本输入时生成真人般自然的语音内容。

示例场景和语音

聊天数字人

日常闲聊

cosyvoice-v1(longxiaochun):这这也不知道为啥哈,反正,它刚出来的时候儿叫台湾手抓饼,啊,现在就是可能这个,大陆这边儿都给改良了,整的都像那种,烙的那种,鸡蛋灌饼儿似的啦,啊,有就有那种感觉哈。

电话客服

客服提醒

cosyvoice-v1(loongstella):您好,我们是银行的账务部门,如果你有疑问的话呢,可以拨打我们的客服热线进行咨询,那您的账单呢目前已经逾期了,麻烦您尽快地处理一下好吧?

直播带货

推荐T

cosyvoice-v1(loongstella):那我来给大家推荐一款T恤,这款呢真的是超级好看,这个颜色呢很显气质,而且呢也是搭配的绝佳单品,大家可以闭眼入,真的是非常好看,对身材的包容性也很好,不管啥身材的宝宝呢,穿上去都是很好看的。推荐宝宝们下单哦。

有声阅读

诗歌朗诵

cosyvoice-v1(longyue):明月几时有?把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。

语音导航

导航播报

cosyvoice-v1(longshuo):看起来您错过了上一个转弯点,没关系,我们会帮您重新规划路线。请在安全的情况下继续直行。

新闻播报

新闻播报

cosyvoice-v1(longfei):典型案例:二零二零年十一月二十八日,受害人王某在某游戏中看到有人在喊低价出售游戏币。

英文场景

秘密相授

cosyvoice-v1(longjielidou):Listen here, boy. I'm gonna teach you the secret formula on one condition. You can never let it fall into the hands of Plankton.

语音助手

请求解释

cosyvoice-v1(longxiaobai):对不起,我没有理解你的意思。可以再说一遍吗?

视频配音

带娃日常

cosyvoice-v1(longlaotie):各位宝爸宝妈,早上好!今天又是元气满满的一天!嗯?不对,是“战斗”的一天!

选择模型

百炼支持的语音合成模型包括CosyVoiceSambert。

  • 如果您希望声音更接近真人、有特色或者有生活气息,建议选择CosyVoice。CosyVoice基于新一代生成式语音大模型,能根据上下文预测情绪、语调、韵律等,具有更好的拟人效果。

  • 如果您希望边输入文本边合成语音(比如大模型流式输出文本时实时合成语音,让虚拟数字人说话),请选择CosyVoice。

    Sambert不支持流式输入,需一次性输入完整文本才能开始合成语音。

    CosyVoice支持流式输入+流式输出,以及非流式输入+流式/非流式输出。Sambert仅支持非流式输入+流式/非流式输出。
  • 如果您有以下特定需求,请选择Sambert。

    • 需要合成中英以外的语言(西班牙语、意大利语等)。

    • 需要通过SSML标记语言控制声音的断句、停顿、情绪、发音等。

    • 需要在输出音频流的同时,输出每个汉字/英文单词在音频中的时间戳,用于驱动虚拟人口型、做视频配音字幕等。

CosyVoice音色列表

模型名称

voice参数

音色

音频试听

适用场景

语言

默认采样率(Hz)

默认音频格式

cosyvoice-v1

longxiaochun

龙小淳

语音助手、

导航播报、

聊天数字人

中文+英文

22050

mp3

cosyvoice-v1

longxiaoxia

龙小夏

语音助手、聊天数字人

中文

22050

mp3

cosyvoice-v1

longxiaocheng

龙小诚

语音助手、导航播报、聊天数字人

中文+英文

22050

mp3

cosyvoice-v1

longxiaobai

龙小白

聊天数字人、有声书、语音助手

中文

22050

mp3

cosyvoice-v1

longlaotie

龙老铁

新闻播报、有声书、语音助手、直播带货、导航播报

中文东北口音

22050

mp3

cosyvoice-v1

longshu

龙书

有声书、语音助手、导航播报、新闻播报、智能客服

中文

22050

mp3

cosyvoice-v1

longshuo

龙硕

语音助手、导航播报、新闻播报、客服催收

中文

22050

mp3

cosyvoice-v1

longjing

龙婧

语音助手、导航播报、新闻播报、客服催收

中文

22050

mp3

cosyvoice-v1

longmiao

龙妙

客服催收、导航播报、有声书、语音助手

中文

22050

mp3

cosyvoice-v1

longyue

龙悦

语音助手、诗词朗诵、有声书朗读、导航播报、新闻播报、客服催收

中文

22050

mp3

cosyvoice-v1

longyuan

龙媛

有声书、语音助手、聊天数字人

中文

22050

mp3

cosyvoice-v1

longfei

龙飞

会议播报、新闻播报、有声书

中文

22050

mp3

cosyvoice-v1

longjielidou

龙杰力豆

新闻播报、有声书、聊天助手

中文+英文

22050

mp3

cosyvoice-v1

longtong

龙彤

有声书、导航播报、聊天数字人

中文

22050

mp3

cosyvoice-v1

longxiang

龙祥

新闻播报、有声书、导航播报

中文

22050

mp3

cosyvoice-v1

loongstella

Stella

语音助手、直播带货、导航播报、客服催收、有声书

中文+英文

22050

mp3

cosyvoice-v1

loongbella

Bella

语音助手、客服催收、新闻播报、导航播报

中文

22050

mp3

Sambert音色列表

模型名称

音色

音频试听

时间戳支持

适用场景

特色

语言

默认采样率(Hz)

sambert-zhinan-v1

知楠

通用场景

广告男声

中文+英文

48k

sambert-zhiqi-v1

知琪

通用场景

温柔女声

中文+英文

48k

sambert-zhichu-v1

知厨

新闻播报

舌尖男声

中文+英文

48k

sambert-zhide-v1

知德

新闻播报

新闻男声

中文+英文

48k

sambert-zhijia-v1

知佳

新闻播报

标准女声

中文+英文

48k

sambert-zhiru-v1

知茹

新闻播报

新闻女声

中文+英文

48k

sambert-zhiqian-v1

知倩

配音解说、新闻播报

资讯女声

中文+英文

48k

sambert-zhixiang-v1

知祥

配音解说

磁性男声

中文+英文

48k

sambert-zhiwei-v1

知薇

阅读产品简介

萝莉女声

中文+英文

48k

sambert-zhihao-v1

知浩

通用场景

咨询男声

中文+英文

16k

sambert-zhijing-v1

知婧

通用场景

严厉女声

中文+英文

16k

sambert-zhiming-v1

知茗

通用场景

诙谐男声

中文+英文

16k

sambert-zhimo-v1

知墨

通用场景

情感男声

中文+英文

16k

sambert-zhina-v1

知娜

通用场景

浙普女声

中文+英文

16k

sambert-zhishu-v1

知树

通用场景

资讯男声

中文+英文

16k

sambert-zhistella-v1

知莎

通用场景

知性女声

中文+英文

16k

sambert-zhiting-v1

知婷

通用场景

电台女声

中文+英文

16k

sambert-zhixiao-v1

知笑

通用场景

资讯女声

中文+英文

16k

sambert-zhiya-v1

知雅

通用场景

严厉女声

中文+英文

16k

sambert-zhiye-v1

知晔

通用场景

青年男声

中文+英文

16k

sambert-zhiying-v1

知颖

通用场景

软萌童声

中文+英文

16k

sambert-zhiyuan-v1

知媛

通用场景

知心姐姐

中文+英文

16k

sambert-zhiyue-v1

知悦

客服

温柔女声

中文+英文

16k

sambert-zhigui-v1

知柜

阅读产品简介

直播女声

中文+英文

16k

sambert-zhishuo-v1

知硕

数字人

自然男声

中文+英文

16k

sambert-zhimiao-emo-v1

知妙(多情感)

阅读产品简介、数字人、直播

多种情感女声

中文+英文

16k

sambert-zhimao-v1

知猫

阅读产品简介、配音解说、数字人、直播

直播女声

中文+英文

16k

sambert-zhilun-v1

知伦

配音解说

悬疑解说

中文+英文

16k

sambert-zhifei-v1

知飞

配音解说

激昂解说

中文+英文

16k

sambert-zhida-v1

知达

新闻播报

标准男声

中文+英文

16k

sambert-camila-v1

Camila

通用场景

西班牙语女声

西班牙语

16k

sambert-perla-v1

Perla

通用场景

意大利语女声

意大利语

16k

sambert-indah-v1

Indah

通用场景

印尼语女声

印尼语

16k

sambert-clara-v1

Clara

通用场景

法语女声

法语

16k

sambert-hanna-v1

Hanna

通用场景

德语女声

德语

16k

sambert-beth-v1

Beth

通用场景

咨询女声

美式英文

16k

sambert-betty-v1

Betty

通用场景

客服女声

美式英文

16k

sambert-cally-v1

Cally

通用场景

自然女声

美式英文

16k

sambert-cindy-v1

Cindy

通用场景

对话女声

美式英文

16k

sambert-eva-v1

Eva

通用场景

陪伴女声

美式英文

16k

sambert-donna-v1

Donna

通用场景

教育女声

美式英文

16k

sambert-brian-v1

Brian

通用场景

客服男声

美式英文

16k

sambert-waan-v1

Waan

通用场景

泰语女声

泰语

16k

模型

单价

免费额度

CosyVoice

2元/万字符

根据待合成字符数计费(其中1个汉字算2个字符,英文、标点符号均按照个1个字符计费)。

每主账号每模型每月2000字符。

Sambert

1元/万字符

根据待合成字符数计费(其中1个汉字算2个字符,英文、标点符号均按照个1个字符计费)。SSML标签内容不计费。

每主账号每模型每月3万字符。

快速开始

在线体验

请在语音合成页面选择“语音合成CosyVoice大模型”,单击立即体验。再选择合适的音色,输入自定义文本,在线体验语音合成。

示例代码

您需要已获取API Key配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK

CosyVoice

import dashscope
from dashscope.audio.tts_v2 import *

model = "cosyvoice-v1"
voice = "longxiaochun"

synthesizer = SpeechSynthesizer(model=model, voice=voice)
audio = synthesizer.call("今天天气怎么样?")
print('requestId: ', synthesizer.get_last_request_id())
with open('output.mp3', 'wb') as f:
    f.write(audio)
import com.alibaba.dashscope.audio.ttsv2.SpeechSynthesisAudioFormat;
import com.alibaba.dashscope.audio.ttsv2.SpeechSynthesisParam;
import com.alibaba.dashscope.audio.ttsv2.SpeechSynthesizer;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;

public class Tts2File {
  private static String model = "cosyvoice-v1";
  private static String voice = "longxiaochun";

  public static void synthesizeAndSaveAudio() {
    SpeechSynthesisParam param =
        SpeechSynthesisParam.builder()
            .model(model)
            .voice(voice)
            .build();
    SpeechSynthesizer synthesizer = new SpeechSynthesizer(param, null);
    ByteBuffer audio = synthesizer.call("今天天气怎么样?");
    File file = new File("output.mp3");
    System.out.print("requestId: " + synthesizer.getLastRequestId());
    try (FileOutputStream fos = new FileOutputStream(file)) {
      fos.write(audio.array());
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }

  public static void main(String[] args) {
    synthesizeAndSaveAudio();
    System.exit(0);
  }
}

如您想使用PythonJava以外的编程语言,可以使用WebSocket协议进行调用

关于API参数说明,请参见CosyVoice API详情

Sambert

import dashscope
from dashscope.audio.tts import SpeechSynthesizer

result = SpeechSynthesizer.call(model='sambert-zhichu-v1',
                                # 当text内容的语种发生变化时,请确认model是否匹配。不同model支持不同的语种,详情请参见Sambert音色列表中的“语言”列。
                                text='今天天气怎么样',
                                sample_rate=48000,
                                format='wav')

if result.get_audio_data() is not None:
    with open('output.wav', 'wb') as f:
        f.write(result.get_audio_data())
print(' get response: %s' % (result.get_response()))

import com.alibaba.dashscope.audio.tts.SpeechSynthesizer;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisParam;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisResult;
import com.alibaba.dashscope.audio.tts.SpeechSynthesisAudioFormat;
import com.alibaba.dashscope.common.ResultCallback;
import com.alibaba.dashscope.common.Status;

import java.io.*;
import java.nio.ByteBuffer;

public class Main {

    public static void SyncAudioDataToFile() {
        SpeechSynthesizer synthesizer = new SpeechSynthesizer();
        SpeechSynthesisParam param = SpeechSynthesisParam.builder()
          .model("sambert-zhichu-v1")
          // 当text内容的语种发生变化时,请确认model是否匹配。不同model支持不同的语种,详情请参见Sambert音色列表中的“语言”列。
          .text("今天天气怎么样")
          .sampleRate(48000)
          .format(SpeechSynthesisAudioFormat.WAV)
          .build();

        File file = new File("output.wav");
        // 调用call方法,传入param参数,获取合成音频
        ByteBuffer audio = synthesizer.call(param);
        try (FileOutputStream fos = new FileOutputStream(file)) {
            fos.write(audio.array());
            System.out.println("synthesis done!");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        SyncAudioDataToFile();
        System.exit(0);
    }
}

更多调用详情,请参见Sambert API详情

常见问题

语音合成的发音读错怎么办?多音字如何控制发音?

您可以尝试:

  • 将多音字替换成同音的其他汉字快速解决发音问题。

  • 使用SSML标记语言控制发音。

  • GitHub中扫描钉钉群的二维码,加入钉钉群,联系产品研发进行优化。

是否支持流式输入?

CosyVoice:是。

Sambert:否。

待合成文本长度是否有限制?

CosyVoice

  • 流式:每次发送的文本片段长度不超过2000字符,所有文本片段总计长度不超过20万字符。

  • 非流式:文本总长度不超过2000字符。

  • 字符计算规则:

    • 1个汉字算作2个字符。

    • 1个英文字母、1个标点或1个句子中间空格均算作1个字符。

Sambert

  • 最高字符限制:1万字符。

  • 字符计算规则:

    • 1个汉字、1个英文字母、1个标点或1个句子中间空格均算作1个字符。