You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复制Google Cloud Video Intelligence示例代码遇TypeScript错误求助

解决Google Cloud Video Intelligence语音转写示例的TypeScript错误

以下是针对你遇到的TypeScript错误的修正方案,结合常见类型不匹配问题调整代码:

常见错误原因及修正点

  • Feature枚举类型不匹配:直接用字符串"SPEECH_TRANSCRIPTION"不符合TypeScript类型定义,需使用官方提供的枚举值。
  • 操作结果解构错误:部分版本中operation.promise()返回单个对象而非数组,无需解构。
  • 可选属性空值检查:TypeScript会严格校验可能为undefined的属性,需添加空值判断避免报错。
  • 时间属性的可选性处理:startTime和endTime可能不存在,需先判断再访问。

修正后的代码

import { VideoIntelligenceServiceClient, Feature } from '@google-cloud/video-intelligence';

const client = new VideoIntelligenceServiceClient();
const gcsUri = '你的GCS存储路径'; // 替换为实际路径

const videoContext = {
  speechTranscriptionConfig: {
    languageCode: 'en-US',
    enableAutomaticPunctuation: true,
  },
};

const req = {
  inputUri: gcsUri,
  features: [Feature.SPEECH_TRANSCRIPTION], // 使用枚举值而非字符串
  videoContext: videoContext,
};

// 执行标注请求
const [operation] = await client.annotateVideo(req);
console.log('等待操作完成...');
// 修正:直接获取操作结果,无需解构数组
const operationResult = await operation.promise();

// 空值检查:确保annotationResults存在
const annotationResults = operationResult.annotationResults?.[0];
if (!annotationResults) {
  console.log('未获取到标注结果');
  return;
}

for (const speechTranscription of annotationResults.speechTranscriptions || []) {
  for (const alternative of speechTranscription.alternatives || []) {
    console.log('备选转录信息:');
    console.log(`转录文本:${alternative.transcript}`);
    console.log(`置信度:${alternative.confidence}`);

    console.log('单词级信息:');
    // 空值检查:确保words数组存在
    for (const wordInfo of alternative.words || []) {
      const word = wordInfo.word;
      // 处理时间属性的可选性
      const startSeconds = wordInfo.startTime?.seconds || 0;
      const startNanos = wordInfo.startTime?.nanos || 0;
      const endSeconds = wordInfo.endTime?.seconds || 0;
      const endNanos = wordInfo.endTime?.nanos || 0;
      
      const start_time = startSeconds + startNanos * 1e-9;
      const end_time = endSeconds + endNanos * 1e-9;
      console.log(`\t${start_time}s - ${end_time}s: ${word}`);
    }
  }
}

额外说明

  • 确保已安装最新版本的依赖包:
    npm install @google-cloud/video-intelligence@latest
    
  • 若仍有类型报错,可临时用类型断言(如as any)绕过,但建议优先遵循类型定义保证代码健壮性。

内容的提问来源于stack exchange,提问作者Gumrai Aung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:02:45