1

に音声ファイルがありますS3

音声ファイルの言語がわかりません。したがってIdentifyLanguage、 forを使用する必要がありますstart_transcription_job()

LanguageCode音声ファイルの言語がわからないため、空白になります。

環境

Python 3.8 ランタイム、boto3 バージョン1.16.5、botocore バージョン:1.19.5を使用、Lambda レイヤーなし。

Transcribe ジョブのコードは次のとおりです。

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"
  ]
}

このエラーは、LanguageCodeandIdentifyLanguageが無効なパラメーターであることを指定する必要があることを意味します。

音声ファイルが S3 に存在することを 100% 確認します。しかし、それなしLanguageCodeでは機能せず、IdentifyLanguageパラメーターは不明なパラメーターです

このコマンドを使用してローカルでテストするために SAM アプリケーションを使用しています。

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

そしてcdk deploy、Aws Lambda コンソールにもチェックインして、同じようにテストしましたevents.jsonが、それでも同じエラーが発生します

これは Lambda 実行環境だと思います。Lambda レイヤーは使用しませんでした。

私は Aws Transcribe からこのドキュメントを見ます:

https://docs.aws.amazon.com/transcribe/latest/dg/API_StartTranscriptionJob.html

および次のドキュメントboto3:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe.html#TranscribeService.Client.start_transcription_job

LanguageCodeは必須ではなくIdentifyLanguage、有効なパラメーターであることを明確に示します。

それで、私は何を見逃していますか?これについて何か考えはありますか?私は何をすべきか?

アップデート:

私は検索を続け、カップルの人にオンラインで尋ねました.SAMがboto3をコンテナーにパッケージ化できるようにするには、関数コンテナーを最初に構築する必要があると思います。

だから私がやっていることは、cdk synthテンプレートファイルです:

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())

ここで何が間違っているのか本当にわかりません。ここで github の問題も報告しますが、問題を再現できないようです。

主な質問/問題:

できないstart_transription_job

  1. それなしLanguageCode

  2. IdentifyLanguage=True

考えられる原因と、この問題を解決するにはどうすればよいですか (音声ファイルの言語がわからない、LanguageCode を指定せずに音声ファイルの言語を特定したい) ?

4

2 に答える 2

1

最新の 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
    }
}
于 2020-10-27T14:45:25.580 に答える