に音声ファイルがあります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"
]
}
このエラーは、LanguageCode
andIdentifyLanguage
が無効なパラメーターであることを指定する必要があることを意味します。
音声ファイルが 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
:
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
それなし
LanguageCode
と
IdentifyLanguage=True
考えられる原因と、この問題を解決するにはどうすればよいですか (音声ファイルの言語がわからない、LanguageCode を指定せずに音声ファイルの言語を特定したい) ?