Google Cloud Speech API 調(diào)用注意事項(xiàng)及調(diào)用方式

來源:CSDN
作者:FeiJrry
時間:2020-08-27
4992
現(xiàn)階段,語音自動識別功能已趨于完善,對與大部分用戶來說,能說能聽足矣!在說聽的同時還能看,豈不美哉?對此,Google提供了語音轉(zhuǎn)為文字的應(yīng)用——Cloud Speech API。本文將從使用該API的前提條件,注意事項(xiàng),在.net開發(fā)環(huán)境下實(shí)現(xiàn)從本地讀取音頻文件解析為文字,從Google Cloud Storage中讀取音頻文件解析文字,以及上傳本地音頻文件到Google Cloud Storage。

引言

現(xiàn)階段,語音自動識別功能已趨于完善,對與大部分用戶來說,能說能聽足矣!在說聽的同時還能看,豈不美哉?對此,Google提供了語音轉(zhuǎn)為文字的應(yīng)用——Cloud Speech API。本文將從使用該API的前提條件,注意事項(xiàng),在.net開發(fā)環(huán)境下實(shí)現(xiàn)從本地讀取音頻文件解析為文字,從Google Cloud Storage中讀取音頻文件解析文字,以及上傳本地音頻文件到Google Cloud Storage。

調(diào)用API前提條件

一.既然是用Google的API,在內(nèi)地你首先保證能(fq)訪問Google官網(wǎng),具體操作此處就省略操作關(guān)于翻墻軟件,代理服務(wù)的文字。

二.注冊Google帳號,登錄Google Cloud Platform,創(chuàng)建項(xiàng)目,在API管理器中添加項(xiàng)目憑據(jù)。憑據(jù)1為服務(wù)賬號密匙,OAuth客戶端ID。其具體操作見文檔–Google Cloud Speech API調(diào)用注意事項(xiàng),里面有詳細(xì)操作步驟及步驟截圖。因該API為付費(fèi)產(chǎn)品,需在創(chuàng)建項(xiàng)目后對其付費(fèi),Google推出免費(fèi)60天使用及300刀的贈金,對與初次研究者來說就是注冊Google云平臺的事罷了。

三.滿足上面兩條件,基本可以保證對一定規(guī)則的音頻文件調(diào)用Cloud Speech API后轉(zhuǎn)換成文字。對與音頻文件的要求如下:

1.音頻的編碼格式:1聲道,PCM;

2.采樣頻率:16000HZ;

3.讀取本地的音頻文件播放時長小于60s,讀取云存儲中的音頻文件播放時長小于80min。

以上條件是最基本的,對于其它詳細(xì)內(nèi)容請?jiān)L問該地址。

四.在VS2015中使用該接口,首先需要安裝并引用如下DLL到項(xiàng)目中:

ia_12600000032.jpg

獲取以上DLL方式:

1.通過在項(xiàng)目引用中點(diǎn)擊Nuget程序包中搜尋Dll名字進(jìn)行下載安裝,

ia_12600000033.jpg

ia_12600000034.jpg

2.通過Nuget的程序包管理器控制平臺輸入命令進(jìn)行安裝。

命令有Install-Package Google.Apis;Install-Package Google.Apis.Core;Install-Package Google.Apis.CloudSpeechAPI.v1beta1等。

如果安裝或下載均不方便,可以從這里獲取一系列DLL。完成以上步驟后,接下來就用代碼展示該API的魅力吧。

讀取本地音頻文件轉(zhuǎn)換為文字

注:如下Demo是windows應(yīng)用程序,所有方法都為static

1.創(chuàng)建類型為CloudSpeechAPIService的方法,目的是通過環(huán)境變量獲取Google的憑證,連接在云平臺建立的項(xiàng)目。PS:如果此方法出現(xiàn)異常,請查看前提條件二。

 static public CloudSpeechAPIService CreateAuthorizedClient()

        {

            GoogleCredential credential =GoogleCredential.GetApplicationDefaultAsync().Result;//讀取環(huán)境變量中的GOOGLE_APPLICATION_CREDENTIALS


            if (credential.IsCreateScopedRequired)

            {

                credential = credential.CreateScoped(new[]

                {

                    CloudSpeechAPIService.Scope.CloudPlatform

                });//獲取認(rèn)證

            }

            return new CloudSpeechAPIService(new BaseClientService.Initializer()

            {

                HttpClientInitializer = credential,

                ApplicationName = "DotNet Google Cloud Platform Speech Sample",

            });

        }

2.讀取本地音頻文件,調(diào)用Cloud Speech API進(jìn)行文字轉(zhuǎn)換。ps:音頻文件格式最好為1聲道PCM,播放長度小于60s,否則不易獲取正確轉(zhuǎn)換結(jié)果。


 static public void Main(string[] args)

        {

            var service = CreateAuthorizedClient();//獲取云服務(wù)認(rèn)證

            string audio_file_path = "本地文件路徑";

          //配置參數(shù)

            var request = new Google.Apis.CloudSpeechAPI.v1beta1.Data.SyncRecognizeRequest()

            {

                Config = new Google.Apis.CloudSpeechAPI.v1beta1.Data.RecognitionConfig()

                {

                   Encoding = "LINEAR16",//編碼格式

                   SampleRate = 16000,//采樣頻率

                   LanguageCode =  "en-US"//英文播放內(nèi)容

               //LanguageCode = "cmn-Hans-CN"中文播放內(nèi)容

                },

                Audio = new Google.Apis.CloudSpeechAPI.v1beta1.Data.RecognitionAudio()

                {

                    Content = Convert.ToBase64String(File.ReadAllBytes(audio_file_path))//讀取文件轉(zhuǎn)換為Base64字符串

                }

            };

            // 配置完成

            // 調(diào)用GloudSpeechAPI進(jìn)行請求

            StringBuilder sb = new StringBuilder();

           Console.WriteLine("Starte Time :" + startTime);

            try

            {

                var asyncResponse = service.Speech.Asyncrecognize(request).Execute();

                var name = asyncResponse.Name;

                Google.Apis.CloudSpeechAPI.v1beta1.Data.Operation op;

                do

                {

                    Console.WriteLine("Waiting for server processing...");

                    Thread.Sleep(1000);

                    op = service.Operations.Get(name).Execute();

                    if (op.Error?.Message != null)

                    {

                       Console.WriteLine(op.Error.Message);

                    }

                } while (!(op.Done.HasValue && op.Done.Value));

                dynamic results = op.Response["results"];

                foreach (var result in results)

                {

                    foreach (var alternative in result.alternatives)

                    {

                        sb.Append(alternative.transcript);//將轉(zhuǎn)換結(jié)果放入StringBuilder中

                    }

                }

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

            DateTime endTime = DateTime.Now;

            var timeTaken = endTime - startTime;

            sb.Append("\r\nEnd Time:" + endTime + "\t" + "Time-taken:" + (timeTaken));

            Console.WriteLine( sb.ToString());

            Console.ReadKey();

            // 結(jié)束請求

        }

通過如上方法,就可以獲取到音頻文件播放內(nèi)容。

ia_12600000037.jpg

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
版權(quán)說明:本文內(nèi)容來自于CSDN,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家