mirror of
https://github.com/chliny/hass-tencentcloud-asr.git
synced 2026-07-22 07:03:56 +08:00
init
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import logging
|
||||
from homeassistant.components.stt import AudioFormats
|
||||
from tencentcloud.common import credential
|
||||
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
|
||||
from tencentcloud.asr.v20190614.asr_client import AsrClient
|
||||
from tencentcloud.asr.v20190614.models import SentenceRecognitionRequest, SentenceRecognitionResponse
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
SentenceRecognitionSourceTypePost = 1
|
||||
SentenceRecognitionSourceTypeURL = 0
|
||||
Modules = {
|
||||
"16k_zh": "中文",
|
||||
"16k_zh-PY": "中英粤",
|
||||
"16k_en": "英语",
|
||||
"16k_yue": "粤语",
|
||||
"16k_zh_dialect": "多方言",
|
||||
}
|
||||
ModuleSupportLanguage = {
|
||||
"16k_zh": ["zh"],
|
||||
"16k_zh-PY": ["zh", "en", "yue"],
|
||||
"16k_en": ["en"],
|
||||
"16k_yue": ["yue"],
|
||||
"16k_zh_dialect": ["zh"],
|
||||
}
|
||||
|
||||
|
||||
class TencentCloudAsrAPi(object):
|
||||
def __init__(self, secretId, secretKey):
|
||||
try:
|
||||
cred = credential.Credential(secretId, secretKey)
|
||||
region = ""
|
||||
self.asrClient = AsrClient(cred, region)
|
||||
except TencentCloudSDKException as err:
|
||||
_LOGGER.error("tencent cloud sdk err:%s", err.message)
|
||||
raise err
|
||||
|
||||
def SentenceRecognition(self, engSerViceType, data: str) -> (tuple[bool, str | None]):
|
||||
req = SentenceRecognitionRequest()
|
||||
req.EngSerViceType = engSerViceType
|
||||
req.SourceType = SentenceRecognitionSourceTypePost
|
||||
req.VoiceFormat = AudioFormats.WAV
|
||||
req.ProjectId = 0
|
||||
req.SubServiceType = 2
|
||||
req.UsrAudioKey = ""
|
||||
req.Data = data
|
||||
req.DataLen = len(data)
|
||||
try:
|
||||
res: SentenceRecognitionResponse = self.asrClient.SentenceRecognition(req)
|
||||
return True, res.Result
|
||||
except TencentCloudSDKException as err:
|
||||
_LOGGER.error("recognition failed:%s", err.message)
|
||||
return False, str(err)
|
||||
Reference in New Issue
Block a user