使用SPX(SpeechCLI)创建Azure自定义语音数据集报错排查
Azure自定义语音声学数据集创建后报错的排查与修正
核心问题排查方向
以下是你可能忽略的几个关键要求,逐一核对:
转录文件格式必须严格匹配
声学数据集的转录文件(比如trans.txt)每行必须遵循音频文件名|纯文本转录内容的格式,不能有多余符号或格式错误。示例:train.wav|The quick brown fox jumps over the lazy dog如果有多个音频文件,每个文件都要对应一行,且文件名必须和容器内的WAV文件完全一致(包括大小写)。
存储容器权限不足
你使用的容器URLhttps://xyz.blob.core.windows.net/test-and-train-data如果是私有容器,Azure语音服务没有读取权限。解决方法:- 要么给容器开启Blob匿名读取权限(仅测试环境推荐)
- 要么生成带读取权限的SAS令牌,把令牌追加到content参数末尾,示例:
spx csr dataset create --api-version v3.1 --kind "Acoustic" --name "My Custom Speech" --description "My Acoustic Dataset Description" --project $project_id --content "https://xyz.blob.core.windows.net/test-and-train-data?sv=2023-11-03&ss=b&srt=sco&sp=rl&se=2025-01-01T00:00:00Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxx" --language "en-US"
音频文件格式不符合要求
必须使用16kHz采样率、16位深度、单声道PCM WAV格式,其他格式(比如MP3、高采样率WAV)会导致处理失败。可以用音频工具(比如Audacity)转换格式后再上传。存储结构不要多余嵌套
你尝试的en-US子文件夹是多余的,因为命令已经通过--language "en-US"指定了语言,服务会直接读取容器根目录下的文件/压缩包。正确的结构应该是:- 直接在容器根目录放WAV和转录文件:
test-and-train-data ├── train.wav └── trans.txt - 或者压缩成zip包(压缩包内直接放文件,不要嵌套文件夹):
test-and-train-data └── acoustic_data.zip ├── train.wav └── trans.txt
- 直接在容器根目录放WAV和转录文件:
快速排查技巧
用Azure语音工作室的手动上传数据集功能,上传本地打包好的zip文件,这个过程会实时显示具体错误(比如转录格式错误、音频格式不兼容等),比SPX命令更易定位问题。
内容的提问来源于stack exchange,提问作者Mike B
相关产品推荐
相关产品推荐

