java集成google Translation-Speech-to-text语音识别加翻译demo

需要设置环境变量(自行解决实在无法解决的私信我)

依赖     

        translation  1.几版本没有v3包  2.几版本有包含v2   v2用2.几的版本会报错

<!-- 语音识别 -->
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-speech</artifactId>
    <version>0.84.0-beta</version>
</dependency>
<!-- translation -->
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-translate</artifactId>
    <version>1.3.1</version>
</dependency>

代码  translation版本是v2   v3和语音识别依赖会冲突

主要:电脑本机要可以访问外网不然无法响应,vpn软件翻天没用

 /**
     * 语音识别 异步长语音
     * @param file  识别内容
     * @param sourceLanguage   识别语言(不是必须)
     * @param languageCode     目标语言
     * @return
     * @throws IOException
     * @throws InterruptedException
     * @throws ExecutionException
     */
    @PostMapping("/translationSpeech")
    public Object translationSpeech(@RequestParam("file") MultipartFile file,
                                 @RequestParam(value = "sourceLanguage",defaultValue = "en") String sourceLanguage,
                                 @RequestParam(value = "languageCode",defaultValue = "cmn-Hans-CN") String languageCode) throws IOException, InterruptedException, ExecutionException {
        //实例化客户端
        try (SpeechClient speechClient = SpeechClient.create()){

            if (null == file | 0 == file.getBytes().length | file.isEmpty()){
                return "请上传文件";
            }

            byte[] data = file.getBytes();
            ByteString audioBytes = ByteString.copyFrom(data);

            //生成识别请求  自动识别语音语音
            RecognitionConfig config = RecognitionConfig.newBuilder()
                    .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
//                    .setSampleRateHertz(16000)
                    .setLanguageCode(languageCode)
                    .build();
            RecognitionAudio audio =RecognitionAudio.newBuilder()
                    .setContent(audioBytes)
                    .build();

            //长语音 异步
            OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata>
                    response = speechClient.longRunningRecognizeAsync(config,audio);
            //短语音 同步
//            RecognizeResponse recognize = speechClient.recognize(config, audio);
//            List<SpeechRecognitionResult> resultsList = recognize.getResultsList();

            while (!response.isDone()){
                System.out.println("正在等待服务端响应...");
                Thread.sleep(1*1000);
            }

            List<SpeechRecognitionResult> results = response.get().getResultsList();
            for (SpeechRecognitionResult result : results) {

                //有可能结果不在第一个
                SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);

                if (alternative == null){
                    for (int i = 1; i <= 5; i++){
                        alternative = result.getAlternativesList().get(i);
                        if (null != alternative){
                            break;
                        }
                    }
                }

                return "解析结构 :"+translationRun(alternative.getTranscript(),sourceLanguage,languageCode);
            }
        }
        return "无法识别该语音";
    }
public Object translationRun(String text,
                             @RequestParam(value = "sourceLanguage",defaultValue = "en") String sourceLanguage,
                             @RequestParam(value = "targetLanguage",defaultValue = "zh-CN") String targetLanguage){

    Translate translate = TranslateOptions.getDefaultInstance().getService();

    Translation translation = translate.translate(
            text,
            Translate.TranslateOption.sourceLanguage(sourceLanguage),
            Translate.TranslateOption.targetLanguage(targetLanguage),
            Translate.TranslateOption.model("nmt")  //模型
    );

    return "翻译结果 :"+translation.getTranslatedText();
}

如果要使用v3的翻译的化用下面的依赖  不然语音识别会报错

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-firestore</artifactId>
    <version>1.34.0</version>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-storage</artifactId>
    <version>1.108.0</version>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-pubsub</artifactId>
    <version>1.106.0</version>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-compute</artifactId>
    <version>0.118.0-alpha</version>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-vision</artifactId>
    <version>1.99.3</version>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-translate</artifactId>
    <version>1.94.5</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty-shaded</artifactId>
    <version>1.29.0</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-protobuf</artifactId>
    <version>1.29.0</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-stub</artifactId>
    <version>1.29.0</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值