You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中正确使用Alexa Person Profile API开发语音识别技能

在Python中调用Alexa语音识别服务及使用Person Profile API的正确方法

一、前置检查

  • 确认技能已在Alexa开发者控制台启用Person Profile权限(如姓名、邮箱等),且用户已在Alexa App中授权该技能访问个人信息。
  • 确保使用最新版ask-sdk-core库,执行pip install --upgrade ask-sdk-core更新,旧版本可能存在API兼容问题。

二、语音识别结果获取

Alexa的语音识别结果会自动传入Intent Handler的handler_input对象,无需额外调用语音识别服务,直接提取即可:

from ask_sdk_core.dispatch_components import AbstractRequestHandler
from ask_sdk_core.utils import is_intent_name
from ask_sdk_core.handler_input import HandlerInput
from ask_sdk_model import Response

class SomeIntentHandler(AbstractRequestHandler):
    def can_handle(self, handler_input: HandlerInput) -> bool:
        return is_intent_name("SomeIntent")(handler_input)

    def handle(self, handler_input: HandlerInput) -> Response:
        # 获取用户语音转文字的Slot值
        target_slot = handler_input.request_envelope.request.intent.slots.get("YourSlotName")
        speech_text = target_slot.value if target_slot else "未识别到内容"
        
        speak_output = f"你刚才说的是:{speech_text}"
        
        return (
            handler_input.response_builder
                .speak(speak_output)
                .response
        )

注意:普通Alexa技能仅支持意图触发式的语音解析,无法直接调用底层实时语音识别服务,仅特定场景(如Alexa Conversations)支持相关能力。

三、Person Profile API调用步骤

1. 权限配置

在Alexa开发者控制台「权限」页面,勾选所需的Person Profile权限(如alexa::profile:name:read、alexa::profile:email:read),并引导用户在Alexa App中完成授权。

2. Python代码实现

通过handler_input的service_client_factory获取Person Profile客户端,调用对应方法获取信息:

from ask_sdk_core.dispatch_components import AbstractRequestHandler
from ask_sdk_core.utils import is_intent_name
from ask_sdk_core.handler_input import HandlerInput
from ask_sdk_model import Response
from ask_sdk_model.services.person_profile import PersonProfileServiceClient

class GetUserProfileIntentHandler(AbstractRequestHandler):
    def can_handle(self, handler_input: HandlerInput) -> bool:
        return is_intent_name("GetUserProfileIntent")(handler_input)

    def handle(self, handler_input: HandlerInput) -> Response:
        try:
            # 初始化Person Profile服务客户端
            person_profile_client: PersonProfileServiceClient = handler_input.service_client_factory.get_person_profile_service()
            
            # 获取用户姓名信息
            name_info = person_profile_client.get_person_name()
            # 获取用户邮箱(需提前配置对应权限)
            # email_info = person_profile_client.get_person_email()
            
            speak_output = f"您好,{name_info.given_name}!"
            
        except Exception:
            # 处理权限未授权或API调用失败场景
            speak_output = "无法获取您的个人信息,请检查是否已在Alexa App中授权该技能访问您的资料。"
        
        return (
            handler_input.response_builder
                .speak(speak_output)
                .response
        )

3. 常见报错排查

  • 权限不足:检查控制台权限配置是否正确,以及用户是否完成授权操作。
  • 客户端初始化失败:确认ask-sdk-core版本≥2.0,旧版本不支持service_client_factory直接获取PersonProfile客户端。
  • Slot值为空:检查意图中的Slot配置是否正确,确保用户语音能被解析到对应Slot。

内容的提问来源于stack exchange,提问作者John Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:15:40