diff --git a/speech/cloud-client/README.md b/speech/cloud-client/README.md
new file mode 100644
index 00000000000..d7bc3a3c43c
--- /dev/null
+++ b/speech/cloud-client/README.md
@@ -0,0 +1,26 @@
+# Getting Started with Google Cloud Speech API and the Google Cloud Client libraries
+
+[Google Cloud Speech API][speech] enables easy integration of Google speech
+recognition technologies into developer applications.
+
+These sample Java applications demonstrate how to access the Cloud Speech API
+using the [Google Cloud Client Library for Java][google-cloud-java].
+
+[speech]: https://cloud.google.com/speech/docs/
+[google-cloud-java]: https://github.com/GoogleCloudPlatform/google-cloud-java
+
+## Quickstart
+
+Install [Maven](http://maven.apache.org/).
+
+Build your project with:
+
+ mvn clean package -DskipTests
+
+You can then run a given `ClassName` via:
+
+ mvn exec:java -Dexec.mainClass=com.example.speech.ClassName
+
+### Transcribe a local audio file (using the quickstart sample)
+
+ mvn exec:java -Dexec.mainClass=com.example.speech.QuickstartSample
diff --git a/speech/cloud-client/pom.xml b/speech/cloud-client/pom.xml
new file mode 100644
index 00000000000..218a2cfda58
--- /dev/null
+++ b/speech/cloud-client/pom.xml
@@ -0,0 +1,59 @@
+
+
+ 4.0.0
+ com.example.speech
+ speech-google-cloud-samples
+ jar
+
+
+
+ doc-samples
+ com.google.cloud
+ 1.0.0
+ ../..
+
+
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+
+
+ com.google.cloud
+ google-cloud-speech
+ 0.8.1-alpha
+
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+ com.google.truth
+ truth
+ 0.31
+ test
+
+
+
diff --git a/speech/cloud-client/resources/audio.raw b/speech/cloud-client/resources/audio.raw
new file mode 100644
index 00000000000..5ebf79d3c9c
Binary files /dev/null and b/speech/cloud-client/resources/audio.raw differ
diff --git a/speech/cloud-client/src/main/java/com/example/speech/QuickstartSample.java b/speech/cloud-client/src/main/java/com/example/speech/QuickstartSample.java
new file mode 100644
index 00000000000..23da6b476d6
--- /dev/null
+++ b/speech/cloud-client/src/main/java/com/example/speech/QuickstartSample.java
@@ -0,0 +1,69 @@
+/*
+ Copyright 2017, Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package com.example.speech;
+
+// [START speech_quickstart]
+// Imports the Google Cloud client library
+import com.google.cloud.speech.spi.v1beta1.SpeechClient;
+import com.google.cloud.speech.v1beta1.RecognitionAudio;
+import com.google.cloud.speech.v1beta1.RecognitionConfig;
+import com.google.cloud.speech.v1beta1.RecognitionConfig.AudioEncoding;
+import com.google.cloud.speech.v1beta1.SpeechRecognitionAlternative;
+import com.google.cloud.speech.v1beta1.SpeechRecognitionResult;
+import com.google.cloud.speech.v1beta1.SyncRecognizeResponse;
+import com.google.protobuf.ByteString;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+public class QuickstartSample {
+ public static void main(String... args) throws Exception {
+ // Instantiates a client
+ SpeechClient speech = SpeechClient.create();
+
+ // The path to the audio file to transcribe
+ String fileName = "./resources/audio.raw";
+
+ // Reads the audio file into memory
+ Path path = Paths.get(fileName);
+ byte[] data = Files.readAllBytes(path);
+ ByteString audioBytes = ByteString.copyFrom(data);
+
+ // Builds the sync recognize request
+ RecognitionConfig config = RecognitionConfig.newBuilder()
+ .setEncoding(AudioEncoding.LINEAR16)
+ .setSampleRate(16000)
+ .build();
+ RecognitionAudio audio = RecognitionAudio.newBuilder()
+ .setContent(audioBytes)
+ .build();
+
+ // Performs speech recognition on the audio file
+ SyncRecognizeResponse response = speech.syncRecognize(config, audio);
+ List results = response.getResultsList();
+
+ for (SpeechRecognitionResult result: results) {
+ List alternatives = result.getAlternativesList();
+ for (SpeechRecognitionAlternative alternative: alternatives) {
+ System.out.printf("Transcription: %s%n", alternative.getTranscript());
+ }
+ }
+ }
+}
+// [END speech_quickstart]
diff --git a/speech/cloud-client/src/test/java/com/example/speech/QuickstartSampleIT.java b/speech/cloud-client/src/test/java/com/example/speech/QuickstartSampleIT.java
new file mode 100644
index 00000000000..64f6cad201d
--- /dev/null
+++ b/speech/cloud-client/src/test/java/com/example/speech/QuickstartSampleIT.java
@@ -0,0 +1,60 @@
+/*
+ Copyright 2017, Google, Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package com.example.speech;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+/**
+ * Tests for quickstart sample.
+ */
+@RunWith(JUnit4.class)
+@SuppressWarnings("checkstyle:abbreviationaswordinname")
+public class QuickstartSampleIT {
+ private ByteArrayOutputStream bout;
+ private PrintStream out;
+
+ @Before
+ public void setUp() {
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ System.setOut(out);
+ }
+
+ @After
+ public void tearDown() {
+ System.setOut(null);
+ }
+
+ @Test
+ public void testQuickstart() throws Exception {
+ // Act
+ QuickstartSample.main();
+
+ // Assert
+ String got = bout.toString();
+ assertThat(got).contains("how old is the Brooklyn Bridge");
+ }
+}