无法在Azure容器的预定义目录文件夹结构中使用语音转文本转录批处理API存储生成的转录文件

aemubtdh  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(452)

我在尝试使用Azure中的语音转文本转录批API存储生成的转录文件时遇到了问题。我正在使用destination_container_url参数指定要存储文件的目标容器。但是,我无法将文件存储在Azure容器中预定义的目录文件夹结构中。
我已经尝试为destination_container_url参数提供所需的目录路径,但API似乎忽略了目录结构,而是将文件存储在容器的根目录中。

wnavrhmk

wnavrhmk1#

发表我的评论作为回答
我尝试使用下面的Batch Curl请求,并将我的Azure存储目标URL设置为-

[https://storageaccountname.blob.core.windows.net/<container-name>/<folder-name>?sp=<SASTOKEN31T14:46:53Z&spr=https&sv=2022-11-02&sr=b&sig=xYvk1yve6Kq5FYIaY3OwIff%2FghzSXN%2Ftqu5C9O7irGQ%3D](https://storageaccountname.blob.core.windows.net/%3Ccontainer-name%3E/%3Cfolder-name%3E?sp=rw&st=2023-05-31T06:46:53Z&se=2023-05-31T14:46:53Z&spr=https&sv=2022-11-02&sr=b&sig=xYvk1yve6Kq5FYIaY3OwIff%2FghzSXN%2Ftqu5C9O7irGQ%3D>

但是转录结果没有保存在容器内的特定文件夹中,因为根据Gaurav Mantri的answer here,Blob文件夹/目录是虚拟目录,因此Batch Transcrption API没有将转录结果添加到容器内的特定文件夹的属性。在样本Batch Transcription python code here中。该属性设置为容器URL,而不是容器文件夹URL。

# properties.destination_container_url = "<SAS Uri with at least write (w) permissions for an Azure Storage blob container that results should be written to>"

本文件引用的API请求-

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H
"Content-Type: application/json" -d '{   "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"   ],   "locale": "en-US",   "displayName": "My Transcription",   "model": null,  
"properties": {
    "wordLevelTimestampsEnabled": true,
    "languageIdentification": {
      "candidateLocales": [
        "en-US", "de-DE", "es-ES"
      ],
    }
   },
  }'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"

API输出:-

作为替代方案,您可以使用以下代码将转录结果文件从您的容器复制或移动到另一个容器或同一容器中的特定文件夹:-

from azure.storage.blob import BlobServiceClient

source_container_name = "siliconcotainer/container"
source_blob_name = "result.json"
destination_container_name = "siliconcontainer2/folder"
destination_blob_name = "result2.json"

connection_string = "DefaultEndpointsProtocol=https;AccountName=storageaccountname;AccountKey=xxxxxxxxcxxxxxAStaktbOA==;EndpointSuffix=core.windows.net"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

source_blob_client = blob_service_client.get_blob_client(container=source_container_name, blob=source_blob_name)
destination_blob_client = blob_service_client.get_blob_client(container=destination_container_name, blob=destination_blob_name)

destination_blob_client.start_copy_from_url(source_blob_client.url)

为了使用Python SDK执行az登录,请使用以下代码:-

安装下面的包:-

pip install azure-cli
from azure.cli.core import get_default_cli

 

# Get the default Azure CLI instance

cli = get_default_cli()

 

# Run the az login --use-device-code command

device_code, url = cli.invoke(['login', '--use-device-code'])

 

# Display the device code and URL to the user

print("Device code:", device_code)

print("URL:", url)

输出:-

如果您想不使用设备代码而直接通过浏览器登录,请使用此代码:-

device_code, url  =  cli.invoke(['login'])

删除, '--use-device-code'

参考号:-

azure - Login to python script using service principal - Stack Overflow通过Jahnavi
python - Azure存储帐户:如何在容器中重命名/移动Blob- Stack Overflow

由于BlobService不受支持,我在上面的代码中使用了BlobServiceClient。

相关问题