C#中使用Google.Cloud.Speech.V2调用chirp模型的地域配置问题
解决Google.Cloud.Speech.V2 Chirp模型批量转写的地域矛盾问题
核心问题根源
Google Speech-to-Text v2存在两个关键限制的冲突:
- Chirp模型仅支持部分单地域(如
europe-west4),无法在global地域创建Recognizer - BatchRecognize批量转写操作必须通过
global服务端点调用,直接使用单地域端点会触发"Expected resource location to be global"错误
分步解决方法
1. 正确创建支持Chirp的Recognizer
确保在Chirp支持的地域(比如europe-west4)创建Recognizer,你的代码逻辑本身正确,执行以下代码即可完成创建:
var recognizerRequest = new CreateRecognizerRequest { Parent = $"projects/graceful-wall-398407/locations/europe-west4", RecognizerId = "mpa1recognizer2", Recognizer = new Recognizer { DefaultRecognitionConfig = new Google.Cloud.Speech.V2.RecognitionConfig { LanguageCodes = { "pl-PL" }, Model = "chirp" } } }; // 使用对应地域的客户端创建Recognizer var speechClient = SpeechClient.Create(new SpeechClientBuilder { Location = "europe-west4" }.Build()); var createdRecognizer = await speechClient.CreateRecognizerAsync(recognizerRequest);
2. 调用BatchRecognize时的正确配置
批量转写必须使用global端点的客户端,同时指定你在europe-west4创建的Recognizer完整资源名:
// 创建指向global端点的Speech客户端 var globalSpeechClient = SpeechClient.Create(new SpeechClientBuilder { Location = "global" }.Build()); BatchRecognizeRequest request = new BatchRecognizeRequest { // 直接使用Recognizer的完整资源路径,包含europe-west4地域 Recognizer = "projects/graceful-wall-398407/locations/europe-west4/recognizers/mpa1recognizer2", Files = { new BatchRecognizeFileMetadata { Uri = audioGcsUri, } }, }; var response = await globalSpeechClient.BatchRecognizeAsync(request);
关键注意事项
- 不要混用地域端点:创建Recognizer用Chirp支持的单地域(如
europe-west4),批量转写必须用global端点 - 必须显式指定Recognizer的完整资源路径,避免依赖
RecognizerName.FromProjectLocationRecognizer生成的名称导致地域参数混淆
内容的提问来源于stack exchange,提问作者Marcin Kubiak
相关产品推荐
相关产品推荐

