前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云语音合成TTS试用

腾讯云语音合成TTS试用

原创
作者头像
AI大眼萌
发布2024-06-30 23:58:27
180
发布2024-06-30 23:58:27
举报
文章被收录于专栏:AI产品体验专栏AI产品体验专栏

随着人工智能技术的飞速发展,人机交互的方式也在不断革新。腾讯云语音合成(TTS)技术,作为AI领域的一项重要应用,正在以前所未有的速度改变我们的生活和工作方式。大家好,我是AI大眼萌,今天就让我们一起探索这项技术的魅力和潜力!

一、核心概念:什么是语音合成(TTS)?🗣️👂

在人工智能的世界里,ASR(Automatic Speech Recognition)和TTS(Text-To-Speech)是一对默契的搭档。ASR,就像人类的耳朵,能够将声音转化为文字;而TTS,仿佛人类的嘴巴,将文字转化为声音。就像我们熟悉的Siri,那些流畅的语音回复,其实都是TTS技术在背后默默工作的结果。TTS的实现方法主要有两种:拼接法和参数法。

1. 拼接法:声音的拼图游戏

拼接法,就像是用预先录制好的语音片段,像拼图一样拼接出想要的语音。这种方法使用的基本单位可能是音节、音素,甚至是双音子,以确保合成语音的连贯性。它的优点显而易见——语音质量高,但缺点也同样明显:需要庞大的数据库支持,成本高昂。

2. 参数法:声音的统计学

参数法则是另一种魔法,它依据统计模型生成语音参数,再将这些参数转化为波形。这个过程包括前端处理、建模和声码器三个模块。前端处理负责解析文本,决定发音、语气、节奏等,而声码器则是复现声音信号的关键环节。

前端处理:文本的解析者

前端处理,就像是文本的解析者,它决定了每个字的发音,语气语调,甚至是需要强调的重点。尽管目前的算法还无法完全捕捉所有的细节,但它已经能够处理包括韵律边界、重音、边界调等在内的多种语气相关数据。

个性化TTS:声音的定制师

个性化TTS,大多数采用参数法实现,它可以根据需求定制出独特的声音。虽然Adobe和微软等大公司也尝试过拼接法,但参数法因其通用性和成熟度更受青睐。

二、TTS的应用场景🎙️

  1. 智能客服:TTS技术可以提供自然、拟人化的语音服务,帮助企业构建智能客服系统,自动回答客户咨询,提高服务效率。
  2. 有声阅读:将电子书、新闻、文章等文本内容转化为语音,为用户提供便捷的听书体验,尤其适合视力障碍人士或在驾驶等双手忙碌时使用。
  3. 教育辅助:TTS技术可以帮助学生学习语言,通过语音输出辅助发音练习,同时也可以作为教学工具,增强学习互动性。
  4. 信息播报:在广播、电视、新闻APP等平台,TTS可以将新闻稿自动转化为语音播报,快速传递信息。
  5. 车载导航:TTS技术在车载系统中提供语音导航提示,使驾驶者能够安全地接收路线指引。
  6. 智能家居控制:TTS可以作为智能家居系统的语音输出部分,通过语音命令控制家中的智能设备。
  7. 社交媒体和内容创作:短视频创作者可以使用TTS技术快速生成视频配音,提高内容制作的效率和质量。
  8. 公共服务:在公共交通、机场、火车站等公共场所,TTS可以提供自动的语音指引和信息播报服务。
  9. 辅助技术:为有视觉障碍或阅读困难的人士提供辅助,将网页、文件等文本信息转化为语音,帮助他们更好地获取信息。
  10. 企业内训和广播:企业可以使用TTS技术进行内部培训材料的语音化,或在工作场所进行安全、操作等重要信息的语音广播。
  11. 广告和宣传:商家可以利用TTS技术制作吸引人的语音广告,通过电话、广播或在线平台进行产品宣传。
  12. 紧急通知系统:在自然灾害或其他紧急情况下,TTS系统可以快速生成并传播紧急通知和指导信息。

三、腾讯云TTS的产品试用🛠️

1、腾讯云TTS产品架构

2、腾讯云TTS的产品矩阵

  • 基础语音合成:适用于短文本,无实时性要求的场景。
  • 实时语音合成:支持中长文本,满足高实时性需求。
  • 长文本语音合成:适合长文本合成,适用于有声阅读等场景。
  • 离线语音合成:无网络环境下的语音合成解决方案。

3、python代码试用

a、输入自己的SECRETID及KEY

代码语言:python
复制
import os
from dotenv import load_dotenv
root_dir='/mnt/workspace/'
load_dotenv(os.path.join(root_dir, "TTS.env"))
APPID =os.getenv('APPID')
SECRET_ID =os.getenv('SECRET_ID')
SECRET_KEY =os.getenv('SECRET_KEY')

#定义函数,通过网页获取语音文件

代码语言:python
复制
import hmac
import hashlib
import json
import time
from datetime import datetime
from uuid import uuid4
import base64
from http.client import HTTPSConnection
from IPython.display import Audio
import io

def sign(key, msg):
    return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()

TEXT =  """请相信,每一个努力的瞬间,都是你人生故事中不可或缺的篇章。
 """
VOICETYPE = 301006 # 音色类型
CODEC = "wav" # 音频格式:pcm/mp3
SAMPLE_RATE = 16000 # 音频采样率:8000/16000
ENABLE_SUBTITLE = True

def text_to_speech(text, voice_type=VOICETYPE, sample_rate=SAMPLE_RATE, codec=CODEC, enable_subtitle=ENABLE_SUBTITLE,EmotionCategory='sad'):
        service = "tts"
        host = "tts.tencentcloudapi.com"
        region = "ap-shanghai"
        version = "2019-08-23"
        action = "TextToVoice"
        token = ""
        # 使用提供的参数更新 payload 字典
        payload = {
            "Text": text,
            "VoiceType": voice_type,
            "SampleRate": sample_rate,
            "Codec": codec,
            "EnableSubtitle": enable_subtitle,
            "EmotionCategory": EmotionCategory,
            "SessionId": str(uuid4())  # 生成唯一会话 ID
        }
        params = json.dumps(payload)
        endpoint = "https://tts.tencentcloudapi.com"
        algorithm = "TC3-HMAC-SHA256"
        timestamp = int(time.time())
        date = datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d")
        # ************* 步骤 1:拼接规范请求串 *************
        http_request_method = "POST"
        canonical_uri = "/"
        canonical_querystring = ""
        ct = "application/json; charset=utf-8"
        canonical_headers = "content-type:%s\nhost:%s\nx-tc-action:%s\n" % (ct, host, action.lower())
        signed_headers = "content-type;host;x-tc-action"
        hashed_request_payload = hashlib.sha256(params.encode("utf-8")).hexdigest()
        canonical_request = (http_request_method + "\n" +
                             canonical_uri + "\n" +
                             canonical_querystring + "\n" +
                             canonical_headers + "\n" +
                             signed_headers + "\n" +
                             hashed_request_payload)
        # ************* 步骤 2:拼接待签名字符串 *************
        credential_scope = date + "/" + service + "/" + "tc3_request"
        hashed_canonical_request = hashlib.sha256(canonical_request.encode("utf-8")).hexdigest()
        string_to_sign = (algorithm + "\n" +
                          str(timestamp) + "\n" +
                          credential_scope + "\n" +
                          hashed_canonical_request)
        # ************* 步骤 3:计算签名 *************
        secret_date = sign(("TC3" + SECRET_KEY).encode("utf-8"), date)
        secret_service = sign(secret_date, service)
        secret_signing = sign(secret_service, "tc3_request")
        signature = hmac.new(secret_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest()
        # ************* 步骤 4:拼接 Authorization *************
        authorization = (algorithm + " " +
                         "Credential=" + SECRET_ID + "/" + credential_scope + ", " +
                         "SignedHeaders=" + signed_headers + ", " +
                         "Signature=" + signature)
        # ************* 步骤 5:构造并发起请求 *************
        headers = {
            "Authorization": authorization,
            "Content-Type": "application/json; charset=utf-8",
            "Host": host,
            "X-TC-Action": action,
            "X-TC-Timestamp": timestamp,
            "X-TC-Version": version
        }
        if region:
            headers["X-TC-Region"] = region
        if token:
            headers["X-TC-Token"] = token
        print('start-----')
        try:
            req = HTTPSConnection(host)
            req.request("POST", "/", headers=headers, body=params.encode("utf-8"))
            resp = req.getresponse()
            # 假设我们成功获取了音频数据并保存到了 audio_file_path
            # 解码 JSON 响应体
            response_json = json.loads(resp.read().decode('utf-8'))
            # # 获取 Base64 编码的音频数据
            base64_audio = response_json['Response']
            return base64_audio
        except Exception as err:
            print(err)

#输出结果

参数配置可参考官方教程:https://cloud.tencent.com/document/product/1073/37995#.E7.A4.BA.E4.BE.8B1-.E5.9F.BA.E7.A1.80.E8.AF.AD.E9.9F.B3.E5.90.88.E6.88.90.E8.B0.83.E7.94.A8.E7.A4.BA.E4.BE.8B

代码语言:python
复制
rest=text_to_speech(TEXT,VOICETYPE, SAMPLE_RATE,CODEC,ENABLE_SUBTITLE)
Audio(base64.b64decode(rest['Audio'].encode("utf-8")), autoplay=True)

四、腾讯云语音试用下来的技术亮点与优势✨

  • 音色真实:合成音色接近真人,具有极高的拟真度和表现力。
  • 多语种支持:覆盖中文普通话、粤语、英文等多语种及方言。
  • 动态调参配置:支持SSML标记语言,实现个性化语音配置。
  • 定制声音:提供声音复刻、定制、变换等个性化服务。

五、结语🌈

腾讯云语音合成技术,正在开启智能语音的新纪元。它不仅仅是技术的突破,更是对人类生活方式的一次深刻变革。让我们一起期待并探索,TTS技术将如何进一步丰富我们的世界!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、核心概念:什么是语音合成(TTS)?🗣️👂
    • 1. 拼接法:声音的拼图游戏
      • 2. 参数法:声音的统计学
        • 前端处理:文本的解析者
        • 个性化TTS:声音的定制师
    • 二、TTS的应用场景🎙️
    • 三、腾讯云TTS的产品试用🛠️
      • 1、腾讯云TTS产品架构
        • 2、腾讯云TTS的产品矩阵
          • 3、python代码试用
            • a、输入自己的SECRETID及KEY
        • 四、腾讯云语音试用下来的技术亮点与优势✨
        • 五、结语🌈
        相关产品与服务
        语音合成
        语音合成(Text To Speech,TTS)满足将文本转化成拟人化语音的需求,打通人机交互闭环。提供多场景、多语言的音色选择,支持 SSML 标记语言,支持自定义音量、语速等参数,让发音更专业、更符合场景需求。语音合成广泛适用于智能客服、有声阅读、新闻播报、人机交互等业务场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档