I have done using streaming and authentication purpose I am using key json file downloaded from google account and put into local folder and passed the path ... Please see the application u can test the code in console app 
static async Task<int> StreamingMicRecognizeAsync(int seconds)
        {
            try
            {
                if (NAudio.Wave.WaveIn.DeviceCount < 1)
                {
                    Console.WriteLine("No microphone!");
                    return 0;
                }
                // var speech = SpeechClient.Create();
                string credentialsFilePath = @"D:\project\EY\testApp26April2019\khanzaid2490 (3)\key.json";
                GoogleCredential googleCredential;
                using (Stream m = new FileStream(credentialsFilePath, FileMode.Open))
                    googleCredential = GoogleCredential.FromStream(m);
                var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
                    googleCredential.ToChannelCredentials());
                var speech = SpeechClient.Create(channel);
                //
                var streamingCall = speech.StreamingRecognize();
                // Write the initial request with the config.
                await streamingCall.WriteAsync(
                    new StreamingRecognizeRequest()
                    {
                        StreamingConfig = new StreamingRecognitionConfig()
                        {
                            Config = new RecognitionConfig()
                            {
                                Encoding =
                                RecognitionConfig.Types.AudioEncoding.Linear16,
                                SampleRateHertz = 16000,
                                LanguageCode = "en",
                            },
                            InterimResults = true,
                        }
                    });
                // Print responses as they arrive.
                Task printResponses = Task.Run(async () =>
                {
                    while (await streamingCall.ResponseStream.MoveNext(
                        default(CancellationToken)))
                    {
                        foreach (var result in streamingCall.ResponseStream
                            .Current.Results)
                        {
                            foreach (var alternative in result.Alternatives)
                            {
                                speechString = speechString + " " + alternative.Transcript;
                            }
                        }
                    }
                });
                // Read from the microphone and stream to API.
                object writeLock = new object();
                bool writeMore = true;
                var waveIn = new NAudio.Wave.WaveInEvent();
                waveIn.DeviceNumber = 0;
                waveIn.WaveFormat = new NAudio.Wave.WaveFormat(16000, 1);
                waveIn.DataAvailable +=
                    (object sender, NAudio.Wave.WaveInEventArgs args) =>
                    {
                        lock (writeLock)
                        {
                            if (!writeMore) return;
                            streamingCall.WriteAsync(
                                new StreamingRecognizeRequest()
                                {
                                    AudioContent = Google.Protobuf.ByteString
                                        .CopyFrom(args.Buffer, 0, args.BytesRecorded)
                                }).Wait();
                        }
                    };
                waveIn.StartRecording();
                Console.WriteLine("Speak now.");
                //button1
                await Task.Delay(TimeSpan.FromSeconds(seconds));
                // Stop recording and shut down.
                waveIn.StopRecording();
                lock (writeLock) writeMore = false;
                await streamingCall.WriteCompleteAsync();
                await printResponses;
            }catch(Exception ex)
            {
                return 0;
            }
            return 1;
        }
=========================================================