# -*- coding: utf8 -*-
# Copyright (c) 2017-2021 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import warnings
from tencentcloud.common.abstract_model import AbstractModel
class CreateTtsTaskRequest(AbstractModel):
"""CreateTtsTask请求参数结构体
"""
def __init__(self):
r"""
:param _Text: 合成语音的源文本,按UTF-8编码统一计算,最多支持10万字符
:type Text: str
:param _Volume: 音量大小,范围[-10,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。
:type Volume: float
:param _Speed: 语速,范围:[-2,6],分别对应不同语速:<li>-2代表0.6倍</li><li>-1代表0.8倍</li><li>0代表1.0倍(默认)</li><li>1代表1.2倍</li><li>2代表1.5倍</li><li>6代表2.5倍</li>如果需要更细化的语速,可以保留小数点后 2 位,例如0.5/1.25/2.81等。<br>参数值与实际语速转换,可参考[代码示例](https://sdk-1300466766.cos.ap-shanghai.myqcloud.com/sample/speed_sample.tar.gz)
:type Speed: float
:param _ProjectId: 项目id,用户自定义,默认为0。
:type ProjectId: int
:param _ModelType: 模型类型,1-默认模型。
:type ModelType: int
:param _VoiceType: 音色 ID,包括标准音色与精品音色,精品音色拟真度更高,价格不同于标准音色,请参见[购买指南](https://cloud.tencent.com/document/product/1073/34112)。完整的音色 ID 列表请参见[音色列表](https://cloud.tencent.com/document/product/1073/92668)。
:type VoiceType: int
:param _PrimaryLanguage: 主语言类型:<li>1-中文(默认)</li><li>2-英文</li><li>3-日文</li>
:type PrimaryLanguage: int
:param _SampleRate: 音频采样率:<li>16000:16k(默认)</li><li>8000:8k</li>
:type SampleRate: int
:param _Codec: 返回音频格式,可取值:mp3(默认),wav,pcm
:type Codec: str
:param _CallbackUrl: 回调 URL,用户自行搭建的用于接收识别结果的服务URL。如果用户使用轮询方式获取识别结果,则无需提交该参数。[回调说明](https://cloud.tencent.com/document/product/1073/55746)
:type CallbackUrl: str
:param _EnableSubtitle: 是否开启时间戳功能,默认为false。
:type EnableSubtitle: bool
:param _VoiceoverDialogueSplit: 旁白与对白文本解析,分别合成相应风格(仅适用于旁对白音色10510000、100510000),默认 false
:type VoiceoverDialogueSplit: bool
:param _EmotionCategory: 控制合成音频的情感,仅支持多情感音色使用。取值: neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)
:type EmotionCategory: str
:param _EmotionIntensity: 控制合成音频情感程度,取值范围为[50,200],默认为100;只有EmotionCategory不为空时生效。
:type EmotionIntensity: int
"""
self._Text = None
self._Volume = None
self._Speed = None
self._ProjectId = None
self._ModelType = None
self._VoiceType = None
self._PrimaryLanguage = None
self._SampleRate = None
self._Codec = None
self._CallbackUrl = None
self._EnableSubtitle = None
self._VoiceoverDialogueSplit = None
self._EmotionCategory = None
self._EmotionIntensity = None
@property
def Text(self):
"""合成语音的源文本,按UTF-8编码统一计算,最多支持10万字符
:rtype: str
"""
return self._Text
@Text.setter
def Text(self, Text):
self._Text = Text
@property
def Volume(self):
"""音量大小,范围[-10,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。
:rtype: float
"""
return self._Volume
@Volume.setter
def Volume(self, Volume):
self._Volume = Volume
@property
def Speed(self):
"""语速,范围:[-2,6],分别对应不同语速:<li>-2代表0.6倍</li><li>-1代表0.8倍</li><li>0代表1.0倍(默认)</li><li>1代表1.2倍</li><li>2代表1.5倍</li><li>6代表2.5倍</li>如果需要更细化的语速,可以保留小数点后 2 位,例如0.5/1.25/2.81等。<br>参数值与实际语速转换,可参考[代码示例](https://sdk-1300466766.cos.ap-shanghai.myqcloud.com/sample/speed_sample.tar.gz)
:rtype: float
"""
return self._Speed
@Speed.setter
def Speed(self, Speed):
self._Speed = Speed
@property
def ProjectId(self):
"""项目id,用户自定义,默认为0。
:rtype: int
"""
return self._ProjectId
@ProjectId.setter
def ProjectId(self, ProjectId):
self._ProjectId = ProjectId
@property
def ModelType(self):
"""模型类型,1-默认模型。
:rtype: int
"""
return self._ModelType
@ModelType.setter
def ModelType(self, ModelType):
self._ModelType = ModelType
@property
def VoiceType(self):
"""音色 ID,包括标准音色与精品音色,精品音色拟真度更高,价格不同于标准音色,请参见[购买指南](https://cloud.tencent.com/document/product/1073/34112)。完整的音色 ID 列表请参见[音色列表](https://cloud.tencent.com/document/product/1073/92668)。
:rtype: int
"""
return self._VoiceType
@VoiceType.setter
def VoiceType(self, VoiceType):
self._VoiceType = VoiceType
@property
def PrimaryLanguage(self):
"""主语言类型:<li>1-中文(默认)</li><li>2-英文</li><li>3-日文</li>
:rtype: int
"""
return self._PrimaryLanguage
@PrimaryLanguage.setter
def PrimaryLanguage(self, PrimaryLanguage):
self._PrimaryLanguage = PrimaryLanguage
@property
def SampleRate(self):
"""音频采样率:<li>16000:16k(默认)</li><li>8000:8k</li>
:rtype: int
"""
return self._SampleRate
@SampleRate.setter
def SampleRate(self, SampleRate):
self._SampleRate = SampleRate
@property
def Codec(self):
"""返回音频格式,可取值:mp3(默认),wav,pcm
:rtype: str
"""
return self._Codec
@Codec.setter
def Codec(self, Codec):
self._Codec = Codec
@property
def CallbackUrl(self):
"""回调 URL,用户自行搭建的用于接收识别结果的服务URL。如果用户使用轮询方式获取识别结果,则无需提交该参数。[回调说明](https://cloud.tencent.com/document/product/1073/55746)
:rtype: str
"""
return self._CallbackUrl
@CallbackUrl.setter
def CallbackUrl(self, CallbackUrl):
self._CallbackUrl = CallbackUrl
@property
def EnableSubtitle(self):
"""是否开启时间戳功能,默认为false。
:rtype: bool
"""
return self._EnableSubtitle
@EnableSubtitle.setter
def EnableSubtitle(self, EnableSubtitle):
self._EnableSubtitle = EnableSubtitle
@property
def VoiceoverDialogueSplit(self):
"""旁白与对白文本解析,分别合成相应风格(仅适用于旁对白音色10510000、100510000),默认 false
:rtype: bool
"""
return self._VoiceoverDialogueSplit
@VoiceoverDialogueSplit.setter
def VoiceoverDialogueSplit(self, VoiceoverDialogueSplit):
self._VoiceoverDialogueSplit = VoiceoverDialogueSplit
@property
def EmotionCategory(self):
"""控制合成音频的情感,仅支持多情感音色使用。取值: neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)
:rtype: str
"""
return self._EmotionCategory
@EmotionCategory.setter
def EmotionCategory(self, EmotionCategory):
self._EmotionCategory = EmotionCategory
@property
def EmotionIntensity(self):
"""控制合成音频情感程度,取值范围为[50,200],默认为100;只有EmotionCategory不为空时生效。
:rtype: int
"""
return self._EmotionIntensity
@EmotionIntensity.setter
def EmotionIntensity(self, EmotionIntensity):
self._EmotionIntensity = EmotionIntensity
def _deserialize(self, params):
self._Text = params.get("Text")
self._Volume = params.get("Volume")
self._Speed = params.get("Speed")
self._ProjectId = params.get("ProjectId")
self._ModelType = params.get("ModelType")
self._VoiceType = params.get("VoiceType")
self._PrimaryLanguage = params.get("PrimaryLanguage")
self._SampleRate = params.get("SampleRate")
self._Codec = params.get("Codec")
self._CallbackUrl = params.get("CallbackUrl")
self._EnableSubtitle = params.get("EnableSubtitle")
self._VoiceoverDialogueSplit = params.get("VoiceoverDialogueSplit")
self._EmotionCategory = params.get("EmotionCategory")
self._EmotionIntensity = params.get("EmotionIntensity")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreateTtsTaskRespData(AbstractModel):
"""异步合成请求的返回数据
"""
def __init__(self):
r"""
:param _TaskId: 任务ID,可通过此ID在轮询接口获取合成状态与结果。注意:TaskId数据类型为string
:type TaskId: str
"""
self._TaskId = None
@property
def TaskId(self):
"""任务ID,可通过此ID在轮询接口获取合成状态与结果。注意:TaskId数据类型为string
:rtype: str
"""
return self._TaskId
@TaskId.setter
def TaskId(self, TaskId):
self._TaskId = TaskId
def _deserialize(self, params):
self._TaskId = params.get("TaskId")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreateTtsTaskResponse(AbstractModel):
"""CreateTtsTask返回参数结构体
"""
def __init__(self):
r"""
:param _Data: 任务 id
:type Data: :class:`tencentcloud.tts.v20190823.models.CreateTtsTaskRespData`
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._Data = None
self._RequestId = None
@property
def Data(self):
"""任务 id
:rtype: :class:`tencentcloud.tts.v20190823.models.CreateTtsTaskRespData`
"""
return self._Data
@Data.setter
def Data(self, Data):
self._Data = Data
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("Data") is not None:
self._Data = CreateTtsTaskRespData()
self._Data._deserialize(params.get("Data"))
self._RequestId = params.get("RequestId")
class DescribeTtsTaskStatusRequest(AbstractModel):
"""DescribeTtsTaskStatus请求参数结构体
"""
def __init__(self):
r"""
:param _TaskId: 任务id
:type TaskId: str
"""
self._TaskId = None
@property
def TaskId(self):
"""任务id
:rtype: str
"""
return self._TaskId
@TaskId.setter
def TaskId(self, TaskId):
self._TaskId = TaskId
def _deserialize(self, params):
self._TaskId = params.get("TaskId")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DescribeTtsTaskStatusRespData(AbstractModel):
"""获取异步合成结果的返回参数
"""
def __init__(self):
r"""
:param _TaskId: 任务标识。
:type TaskId: str
:param _Status: 任务状态码,0:任务等待,1:任务执行中,2:任务成功,3:任务失败。
:type Status: int
:param _StatusStr: 任务状态,waiting:任务等待,doing:任务执行中,success:任务成功,failed:任务失败。
:type StatusStr: str
:param _ResultUrl: 合成音频COS地址(链接有效期1天)。
:type ResultUrl: str
:param _Subtitles: 时间戳信息,若未开启时间戳,则返回空数组。
:type Subtitles: list of Subtitle
:param _ErrorMsg: 失败原因说明。
:type ErrorMsg: str
"""
self._TaskId = None
self._Status = None
self._StatusStr = None
self._ResultUrl = None
self._Subtitles = None
self._ErrorMsg = None
@property
def TaskId(self):
"""任务标识。
:rtype: str
"""
return self._TaskId
@TaskId.setter
def TaskId(self, TaskId):
self._TaskId = TaskId
@property
def Status(self):
"""任务状态码,0:任务等待,1:任务执行中,2:任务成功,3:任务失败。
:rtype: int
"""
return self._Status
@Status.setter
def Status(self, Status):
self._Status = Status
@property
def StatusStr(self):
"""任务状态,waiting:任务等待,doing:任务执行中,success:任务成功,failed:任务失败。
:rtype: str
"""
return self._StatusStr
@StatusStr.setter
def StatusStr(self, StatusStr):
self._StatusStr = StatusStr
@property
def ResultUrl(self):
"""合成音频COS地址(链接有效期1天)。
:rtype: str
"""
return self._ResultUrl
@ResultUrl.setter
def ResultUrl(self, ResultUrl):
self._ResultUrl = ResultUrl
@property
def Subtitles(self):
"""时间戳信息,若未开启时间戳,则返回空数组。
:rtype: list of Subtitle
"""
return self._Subtitles
@Subtitles.setter
def Subtitles(self, Subtitles):
self._Subtitles = Subtitles
@property
def ErrorMsg(self):
"""失败原因说明。
:rtype: str
"""
return self._ErrorMsg
@ErrorMsg.setter
def ErrorMsg(self, ErrorMsg):
self._ErrorMsg = ErrorMsg
def _deserialize(self, params):
self._TaskId = params.get("TaskId")
self._Status = params.get("Status")
self._StatusStr = params.get("StatusStr")
self._ResultUrl = params.get("ResultUrl")
if params.get("Subtitles") is not None:
self._Subtitles = []
for item in params.get("Subtitles"):
obj = Subtitle()
obj._deserialize(item)
self._Subtitles.append(obj)
self._ErrorMsg = params.get("ErrorMsg")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DescribeTtsTaskStatusResponse(AbstractModel):
"""DescribeTtsTaskStatus返回参数结构体
"""
def __init__(self):
r"""
:param _Data: 任务状态返回
:type Data: :class:`tencentcloud.tts.v20190823.models.DescribeTtsTaskStatusRespData`
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._Data = None
self._RequestId = None
@property
def Data(self):
"""任务状态返回
:rtype: :class:`tencentcloud.tts.v20190823.models.DescribeTtsTaskStatusRespData`
"""
return self._Data
@Data.setter
def Data(self, Data):
self._Data = Data
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("Data") is not None:
self._Data = DescribeTtsTaskStatusRespData()
self._Data._deserialize(params.get("Data"))
self._RequestId = params.get("RequestId")
class Subtitle(AbstractModel):
"""时间戳信息。
"""
def __init__(self):
r"""
:param _Text: ⽂本信息。
:type Text: str
:param _BeginTime: ⽂本对应tts语⾳开始时间戳,单位ms。
:type BeginTime: int
:param _EndTime: ⽂本对应tts语⾳结束时间戳,单位ms。
:type EndTime: int
:param _BeginIndex: 该文本在时间戳数组中的开始位置,从0开始。
:type BeginIndex: int
:param _EndIndex: 该文本在时间戳数组中的结束位置,从0开始。
:type EndIndex: int
:param _Phoneme: 该字的音素。
注意:此字段可能返回 null,表示取不到有效值。
:type Phoneme: str
"""
self._Text = None
self._BeginTime = None
self._EndTime = None
self._BeginIndex = None
self._EndIndex = None
self._Phoneme = None
@property
def Text(self):
"""⽂本信息。
:rtype: str
"""
return self._Text
@Text.setter
def Text(self, Text):
self._Text = Text
@property
def BeginTime(self):
"""⽂本对应tts语⾳开始时间戳,单位ms。
:rtype: int
"""
return self._BeginTime
@BeginTime.setter
def BeginTime(self, BeginTime):
self._BeginTime = BeginTime
@property
def EndTime(self):
"""⽂本对应tts语⾳结束时间戳,单位ms。
:rtype: int
"""
return self._EndTime
@EndTime.setter
def EndTime(self, EndTime):
self._EndTime = EndTime
@property
def BeginIndex(self):
"""该文本在时间戳数组中的开始位置,从0开始。
:rtype: int
"""
return self._BeginIndex
@BeginIndex.setter
def BeginIndex(self, BeginIndex):
self._BeginIndex = BeginIndex
@property
def EndIndex(self):
"""该文本在时间戳数组中的结束位置,从0开始。
:rtype: int
"""
return self._EndIndex
@EndIndex.setter
def EndIndex(self, EndIndex):
self._EndIndex = EndIndex
@property
def Phoneme(self):
"""该字的音素。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._Phoneme
@Phoneme.setter
def Phoneme(self, Phoneme):
self._Phoneme = Phoneme
def _deserialize(self, params):
self._Text = params.get("Text")
self._BeginTime = params.get("BeginTime")
self._EndTime = params.get("EndTime")
self._BeginIndex = params.get("BeginIndex")
self._EndIndex = params.get("EndIndex")
self._Phoneme = params.get("Phoneme")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class TextToVoiceRequest(AbstractModel):
"""TextToVoice请求参数结构体
"""
def __init__(self):
r"""
:param _Text: 合成语音的源文本,按UTF-8编码统一计算。
中文最大支持150个汉字(全角标点符号算一个汉字);英文最大支持500个字母(半角标点符号算一个字母)。
:type Text: str
:param _SessionId: 一次请求对应一个SessionId,会原样返回,建议传入类似于uuid的字符串防止重复。
:type SessionId: str
:param _Volume: 音量大小,范围[-10,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。
:type Volume: float
:param _Speed: 语速,范围:[-2,6],分别对应不同语速:<li>-2代表0.6倍</li><li>-1代表0.8倍</li><li>0代表1.0倍(默认)</li><li>1代表1.2倍</li><li>2代表1.5倍</li><li>6代表2.5倍</li>如果需要更细化的语速,可以保留小数点后 2 位,例如0.5/1.25/2.81等。<br>参数值与实际语速转换,可参考[代码示例](https://sdk-1300466766.cos.ap-shanghai.myqcloud.com/sample/speed_sample.tar.gz)
:type Speed: float
:param _ProjectId: 项目id,用户自定义,默认为0。
:type ProjectId: int
:param _ModelType: 模型类型,1-默认模型。
:type ModelType: int
:param _VoiceType: 音色 ID,包括标准音色与精品音色,精品音色拟真度更高,价格不同于标准音色,请参见[购买指南](https://cloud.tencent.com/document/product/1073/34112)。完整的音色 ID 列表请参见[音色列表](https://cloud.tencent.com/document/product/1073/92668)。
若使用一句话版声音复刻,请填入固定值“200000000”
:type VoiceType: int
:param _PrimaryLanguage: 主语言类型:<li>1-中文(默认)</li><li>2-英文</li><li>3-日文</li>
:type PrimaryLanguage: int
:param _SampleRate: 音频采样率:
<li>24000:24k(部分音色支持,请参见[音色列表](https://cloud.tencent.com/document/product/1073/92668))</li>
<li>16000:16k(默认)</li>
<li>8000:8k</li>
:type SampleRate: int
:param _Codec: 返回音频格式,可取值:wav(默认),mp3,pcm
:type Codec: str
:param _EnableSubtitle: 是否开启时间戳功能,默认为false。
:type EnableSubtitle: bool
:param _SegmentRate: 断句敏感阈值,默认值为:0,取值范围:[0,1,2]。该值越大越不容易断句,模型会更倾向于仅按照标点符号断句。此参数建议不要随意调整,可能会影响合成效果。
:type SegmentRate: int
:param _EmotionCategory: 控制合成音频的情感,仅支持多情感音色使用。取值: neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)
示例值:neutral
:type EmotionCategory: str
:param _EmotionIntensity: 控制合成音频情感程度,取值范围为[50,200],默认为100;只有EmotionCategory不为空时生效;
:type EmotionIntensity: int
:param _FastVoiceType: 一句话版声音复刻音色ID,使用一句话版声音复刻音色时需填写。【已废弃】
:type FastVoiceType: str
"""
self._Text = None
self._SessionId = None
self._Volume = None
self._Speed = None
self._ProjectId = None
self._ModelType = None
self._VoiceType = None
self._PrimaryLanguage = None
self._SampleRate = None
self._Codec = None
self._EnableSubtitle = None
self._SegmentRate = None
self._EmotionCategory = None
self._EmotionIntensity = None
self._FastVoiceType = None
@property
def Text(self):
"""合成语音的源文本,按UTF-8编码统一计算。
中文最大支持150个汉字(全角标点符号算一个汉字);英文最大支持500个字母(半角标点符号算一个字母)。
:rtype: str
"""
return self._Text
@Text.setter
def Text(self, Text):
self._Text = Text
@property
def SessionId(self):
"""一次请求对应一个SessionId,会原样返回,建议传入类似于uuid的字符串防止重复。
:rtype: str
"""
return self._SessionId
@SessionId.setter
def SessionId(self, SessionId):
self._SessionId = SessionId
@property
def Volume(self):
"""音量大小,范围[-10,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。
:rtype: float
"""
return self._Volume
@Volume.setter
def Volume(self, Volume):
self._Volume = Volume
@property
def Speed(self):
"""语速,范围:[-2,6],分别对应不同语速:<li>-2代表0.6倍</li><li>-1代表0.8倍</li><li>0代表1.0倍(默认)</li><li>1代表1.2倍</li><li>2代表1.5倍</li><li>6代表2.5倍</li>如果需要更细化的语速,可以保留小数点后 2 位,例如0.5/1.25/2.81等。<br>参数值与实际语速转换,可参考[代码示例](https://sdk-1300466766.cos.ap-shanghai.myqcloud.com/sample/speed_sample.tar.gz)
:rtype: float
"""
return self._Speed
@Speed.setter
def Speed(self, Speed):
self._Speed = Speed
@property
def ProjectId(self):
"""项目id,用户自定义,默认为0。
:rtype: int
"""
return self._ProjectId
@ProjectId.setter
def ProjectId(self, ProjectId):
self._ProjectId = ProjectId
@property
def ModelType(self):
"""模型类型,1-默认模型。
:rtype: int
"""
return self._ModelType
@ModelType.setter
def ModelType(self, ModelType):
self._ModelType = ModelType
@property
def VoiceType(self):
"""音色 ID,包括标准音色与精品音色,精品音色拟真度更高,价格不同于标准音色,请参见[购买指南](https://cloud.tencent.com/document/product/1073/34112)。完整的音色 ID 列表请参见[音色列表](https://cloud.tencent.com/document/product/1073/92668)。
若使用一句话版声音复刻,请填入固定值“200000000”
:rtype: int
"""
return self._VoiceType
@VoiceType.setter
def VoiceType(self, VoiceType):
self._VoiceType = VoiceType
@property
def PrimaryLanguage(self):
"""主语言类型:<li>1-中文(默认)</li><li>2-英文</li><li>3-日文</li>
:rtype: int
"""
return self._PrimaryLanguage
@PrimaryLanguage.setter
def PrimaryLanguage(self, PrimaryLanguage):
self._PrimaryLanguage = PrimaryLanguage
@property
def SampleRate(self):
"""音频采样率:
<li>24000:24k(部分音色支持,请参见[音色列表](https://cloud.tencent.com/document/product/1073/92668))</li>
<li>16000:16k(默认)</li>
<li>8000:8k</li>
:rtype: int
"""
return self._SampleRate
@SampleRate.setter
def SampleRate(self, SampleRate):
self._SampleRate = SampleRate
@property
def Codec(self):
"""返回音频格式,可取值:wav(默认),mp3,pcm
:rtype: str
"""
return self._Codec
@Codec.setter
def Codec(self, Codec):
self._Codec = Codec
@property
def EnableSubtitle(self):
"""是否开启时间戳功能,默认为false。
:rtype: bool
"""
return self._EnableSubtitle
@EnableSubtitle.setter
def EnableSubtitle(self, EnableSubtitle):
self._EnableSubtitle = EnableSubtitle
@property
def SegmentRate(self):
"""断句敏感阈值,默认值为:0,取值范围:[0,1,2]。该值越大越不容易断句,模型会更倾向于仅按照标点符号断句。此参数建议不要随意调整,可能会影响合成效果。
:rtype: int
"""
return self._SegmentRate
@SegmentRate.setter
def SegmentRate(self, SegmentRate):
self._SegmentRate = SegmentRate
@property
def EmotionCategory(self):
"""控制合成音频的情感,仅支持多情感音色使用。取值: neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)
示例值:neutral
:rtype: str
"""
return self._EmotionCategory
@EmotionCategory.setter
def EmotionCategory(self, EmotionCategory):
self._EmotionCategory = EmotionCategory
@property
def EmotionIntensity(self):
"""控制合成音频情感程度,取值范围为[50,200],默认为100;只有EmotionCategory不为空时生效;
:rtype: int
"""
return self._EmotionIntensity
@EmotionIntensity.setter
def EmotionIntensity(self, EmotionIntensity):
self._EmotionIntensity = EmotionIntensity
@property
def FastVoiceType(self):
"""一句话版声音复刻音色ID,使用一句话版声音复刻音色时需填写。【已废弃】
:rtype: str
"""
return self._FastVoiceType
@FastVoiceType.setter
def FastVoiceType(self, FastVoiceType):
self._FastVoiceType = FastVoiceType
def _deserialize(self, params):
self._Text = params.get("Text")
self._SessionId = params.get("SessionId")
self._Volume = params.get("Volume")
self._Speed = params.get("Speed")
self._ProjectId = params.get("ProjectId")
self._ModelType = params.get("ModelType")
self._VoiceType = params.get("VoiceType")
self._PrimaryLanguage = params.get("PrimaryLanguage")
self._SampleRate = params.get("SampleRate")
self._Codec = params.get("Codec")
self._EnableSubtitle = params.get("EnableSubtitle")
self._SegmentRate = params.get("SegmentRate")
self._EmotionCategory = params.get("EmotionCategory")
self._EmotionIntensity = params.get("EmotionIntensity")
self._FastVoiceType = params.get("FastVoiceType")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class TextToVoiceResponse(AbstractModel):
"""TextToVoice返回参数结构体
"""
def __init__(self):
r"""
:param _Audio: base64编码的wav/mp3音频数据
:type Audio: str
:param _SessionId: 一次请求对应一个SessionId
:type SessionId: str
:param _Subtitles: 时间戳信息,若未开启时间戳,则返回空数组。
:type Subtitles: list of Subtitle
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._Audio = None
self._SessionId = None
self._Subtitles = None
self._RequestId = None
@property
def Audio(self):
"""base64编码的wav/mp3音频数据
:rtype: str
"""
return self._Audio
@Audio.setter
def Audio(self, Audio):
self._Audio = Audio
@property
def SessionId(self):
"""一次请求对应一个SessionId
:rtype: str
"""
return self._SessionId
@SessionId.setter
def SessionId(self, SessionId):
self._SessionId = SessionId
@property
def Subtitles(self):
"""时间戳信息,若未开启时间戳,则返回空数组。
:rtype: list of Subtitle
"""
return self._Subtitles
@Subtitles.setter
def Subtitles(self, Subtitles):
self._Subtitles = Subtitles
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._Audio = params.get("Audio")
self._SessionId = params.get("SessionId")
if params.get("Subtitles") is not None:
self._Subtitles = []
for item in params.get("Subtitles"):
obj = Subtitle()
obj._deserialize(item)
self._Subtitles.append(obj)
self._RequestId = params.get("RequestId")