当前位置: 首页 > 知识库问答 >
问题:

Aws Transribe无法在boto3中启动_Transcription_JOB而没有LanguageCode

郎飞龙
2023-03-14

我在s3中有一个音频文件。

mediaFileUri = 's3://'+ bucket_name+'/'+prefixKey

transcribe_client = boto3.client('transcribe')

response = transcribe_client.start_transcription_job(
    TranscriptionJobName="abc",
    IdentifyLanguage=True,
    Media={
        'MediaFileUri':mediaFileUri
    },
)

然后我得到这个错误:

{
  "errorMessage": "Parameter validation failed:\nMissing required parameter in input: \"LanguageCode\"\nUnknown parameter in input: \"IdentifyLanguage\", must be one of: TranscriptionJobName, LanguageCode, MediaSampleRateHertz, MediaFormat, Media, OutputBucketName, OutputEncryptionKMSKeyId, Settings, ModelSettings, JobExecutionSettings, ContentRedaction",
  "errorType": "ParamValidationError",
  "stackTrace": [
    "  File \"/var/task/app.py\", line 27, in TranscribeSoundToWordHandler\n    response = response = transcribe_client.start_transcription_job(\n",
    "  File \"/var/runtime/botocore/client.py\", line 316, in _api_call\n    return self._make_api_call(operation_name, kwargs)\n",
    "  File \"/var/runtime/botocore/client.py\", line 607, in _make_api_call\n    request_dict = self._convert_to_request_dict(\n",
    "  File \"/var/runtime/botocore/client.py\", line 655, in _convert_to_request_dict\n    request_dict = self._serializer.serialize_to_request(\n",
    "  File \"/var/runtime/botocore/validate.py\", line 297, in serialize_to_request\n    raise ParamValidationError(report=report.generate_report())\n"
  ]
}

如果出现此错误,意味着必须指定languagecode,并且IdentifyLanguage是无效参数。

100%确定音频文件存在于S3中。但是如果没有languagecode,它就不起作用,并且IdentifyLanguage参数是未知参数

sam local invoke MyHandler -e lambda\TheDirectory\event.json

我看着Aws转录的这些文档:

https://docs.aws.amazon.com/transcranbe/latest/dg/api_starttranscranptionjob.html

boto3的文档:

我错过了什么?对此有什么想法吗?我该怎么办?

更新:

我一直在网上搜索并询问了几个人,我想我应该先建立一个函数容器,让SAM把boto3打包到容器中。

cdk synth --no-staging > template.yaml
sam build --use-container
sam local invoke MyHandler78A95900 -e lambda\TheDirectory\event.json
[ERROR] ParamValidationError: Parameter validation failed:
Missing required parameter in input: "LanguageCode"
Unknown parameter in input: "IdentifyLanguage", must be one of: TranscriptionJobName, LanguageCode, MediaSampleRateHertz, MediaFormat, Media, OutputBucketName, OutputEncryptionKMSKeyId, Settings, JobExecutionSettings, ContentRedaction
Traceback (most recent call last):
  File "/var/task/app.py", line 27, in TranscribeSoundToWordHandler
    response = response = transcribe_client.start_transcription_job(
  File "/var/runtime/botocore/client.py", line 316, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/var/runtime/botocore/client.py", line 607, in _make_api_call
    request_dict = self._convert_to_request_dict(
  File "/var/runtime/botocore/client.py", line 655, in _convert_to_request_dict
    request_dict = self._serializer.serialize_to_request(
  File "/var/runtime/botocore/validate.py", line 297, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())

无法start_transription_job

>

  • 不带languagecode

    IdentiyLanguage=true

  • 共有1个答案

    弘焕
    2023-03-14

    检查您是否正在使用最新的boto3版本。

    boto3.__version__  
    '1.16.5'
    

    我试过了,很管用。

    import boto3
    
    transcribe = boto3.client('transcribe')
    response = transcribe.start_transcription_job(TranscriptionJobName='Test-20201-27',IdentifyLanguage=True,Media={'MediaFileUri':'s3://BucketName/DemoData/Object.mp4'})
    
    print(response)
    {
        "TranscriptionJob": {
            "TranscriptionJobName": "Test-20201-27",
            "TranscriptionJobStatus": "IN_PROGRESS",
            "Media": {
                "MediaFileUri": "s3://BucketName/DemoData/Object.mp4"
            },
            "StartTime": "datetime.datetime(2020, 10, 27, 15, 41, 2, 599000, tzinfo=tzlocal())",
            "CreationTime": "datetime.datetime(2020, 10, 27, 15, 41, 2, 565000, tzinfo=tzlocal())",
            "IdentifyLanguage": "True"
        },
        "ResponseMetadata": {
            "RequestId": "9e4f94a4-20e4-4ca0-9c6e-e21a8934084b",
            "HTTPStatusCode": 200,
            "HTTPHeaders": {
                "content-type": "application/x-amz-json-1.1",
                "date": "Tue, 27 Oct 2020 14:41:02 GMT",
                "x-amzn-requestid": "9e4f94a4-20e4-4ca0-9c6e-e21a8934084b",
                "content-length": "268",
                "connection": "keep-alive"
            },
            "RetryAttempts": 0
        }
    }
    
     类似资料:
    • 我在我的虚拟盒子Ubuntu中安装了Oracle SQL Developer。 但是在我的根终端中,我的java版本是 bashrc和/etc/profile中的JAVA_HOME都设置为usr/lib/jvm/jdk1.8.0_291(根据本文新下载的JDK) 第一个问题是为什么我设置了相同的JAVA_HOME路径,但是用户帐户中的java-version不是我新安装的JDK。 我已经设置为使用

    • 我正在使用下面的python boto3代码来启动Ec2 当实例处于运行状态时,我可以通过运行此lambda来停止实例。 但当实例处于停止状态并且我运行Lambda时,我会得到下面的消息,它不会显示任何错误。但当我签入控制台时,实例仍然处于停止状态。我无法找出实例为什么没有进入运行阶段。实例状态=80个实例id为i-06ce851edfXXXXXX的已启动实例 下面是使用的IAM角色

    • 我在Unix系统(OEL)上安装了一个Jenkins master。我配置了两个通过SSH启动的Unix从机(也是OEL)。从属程序永远不会启动,主程序的GUI中也不会报告错误(根本没有输出,只是一个旋转的球): 我在文件中看到的唯一警告是: 主服务器上的JDK版本是: 从服务器上的Java版本: 看起来Jenkins没有启动任何SSH连接。 将Jenkins升级到1.607版本后,在尝试启动从机

    • 我使用的是ActiveMQ Artemis 2.18.0。首先,我用SSL配置了安装程序,artemis启动时没有错误,然后我想在没有SSL的情况下测试我的安装程序,我从和中删除了所有与SSL相关的设置,现在当我试图运行artemis时,我得到了以下结果: 不确定重写的是什么Jolokia属性。我是不是忘了做别的事了? : :

    • 错误是: 错误:(50,17)错误:没有为startActivities(Intent)方法Activity找到合适的方法。startActivities(Intent[],Bundle)不适用(实际和正式的参数列表长度不同)方法Activity.startActivities(Intent[])方法上下文twrapper.startactivities(Intent[],Bundle)不适用(实

    • 问题内容: 我尝试在Ubuntu 11.04和Java 6 sun上安装Hadoop。我正在使用hadoop 0.20.203 rc1构建。我在使用Java-6-sun的Ubuntu 11.04上反复遇到问题。当我尝试启动hadoop时,由于“无法访问存储”,datanode无法启动。 我曾尝试从Apache甚至cloudera的0.20分支中升级和降级到几个版本,还尝试再次删除并安装hadoop