google gRPC在macOS中的简单使用

本文介绍了如何在macOS中使用google gRPC进行语音识别、语音合成和翻译。gRPC是一个高性能的开源RPC框架,适用于移动设备。文章详细讲解了如何添加googleapis库到iOS项目,并提供了客户端示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

google gRPC在macOS中的简单使用

gRPC 官方文档中文版

1. 简述

A high-performance, open-source universal RPC framework

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持。

gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务,使应用程序之间可以进行通信,而且也遵循service/client模型。在客户端调用service端提供的接口就像是调用本地函数一样,一般使用客户端快速能获取到服务器接口数据的时候,如:实时语音识别、翻译、语音合成等。

img

下面详解googleapis里的gRPC的使用

2. cocopods添加gRPC

  • ios-docs-samples 下载googleapis库
  • 找到并复制ios-docs-samples/speech-to-speech目录下的google文件夹和googleapis.podspec文件
  • 将上述两个文件复制到自己工程主目录
  • cd 到自己工程
  • pod install –verbose 或 pod update –verbose (过程较慢,需要翻墙)

3. 示例

客户端代码、不会服务器<可以自行研究>

google 官方API

3.1 语音识别

//  ZDASRService.h
#import <Foundation/Foundation.h>
#import <google/cloud/speech/v1p1beta1/CloudSpeech.pbobjc.h>

NS_ASSUME_NONNULL_BEGIN

typedef void (^SpeechRecognitionCompletionHandler)(BOOL done, StreamingRecognizeResponse *object, NSError *error);

@interface ZDASRService : NSObject

- (void)streamAudioData:(NSData *)audioData
           languageCode:(NSString *)languageCode
         withCompletion:(SpeechRecognitionCompletionHandler)completion;

- (void)stopStreaming;

- (BOOL)isStreaming;

@end
  
//  ZDASRService.m
NS_ASSUME_NONNULL_END
  
 #import "ZDASRService.h"
#import <GRPCClient/GRPCCall.h>
#import <RxLibrary/GRXBufferedPipe.h>
#import <ProtoRPC/ProtoRPC.h>
#import <google/cloud/speech/v1p1beta1/CloudSpeech.pbrpc.h>

@interface ZDASRService ()

@property (nonatomic, strong) Speech *client;
@property (nonatomic, strong) GRXBufferedPipe *writer;
@property (nonatomic, strong) GRPCProtoCall *call;

@property (nonatomic, assign) BOOL streaming;

@end

@implementation ZDASRService

- (id)init {
   
    self = [super init];
    if (self) {
   
        [self defaultSetting];
    }
    return self;
}

- (void)defaultSetting {
   
	
}

- (void)streamAudioData:(NSData *)audioData
           languageCode:(NSString *)languageCode
         withCompletion:(SpeechRecognitionCompletionHandler)completion {
   
    if (!_streaming) {
   
        _client = [[Speech alloc] initWithHost:[ZDDogAPIService shared].dogApis];
        _writer = [[GRXBufferedPipe alloc] init];
        _call = [_client RPCToStreamingRecognizeWithRequestsWriter:_writer eventHandler:^(BOOL done, StreamingRecognizeResponse * _Nullable response, NSError * _Nullable error) {
   
            completion(done, response, error);
        }];
        _call.requestHeaders[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值