本页面介绍如何使用 Speech-to-Text 自动检测音频数据中的亵渎性字词,并在转录内容中予以剔除。
您可以通过在 RecognitionConfig
中设置 profanityFilter
=true
来启用脏话过滤器。启用后,Speech-to-Text 将尝试检测亵渎性字词并在转录内容中仅返回第一个字母后跟星号(例如 f***)。如果此字段设置为 false
或未设置,Speech-to-Text 将不会尝试过滤脏话。
以下示例演示了如何启用脏话过滤器以识别存储在 Google Cloud Storage 存储桶中的音频。
Java
import com.google.cloud.speech.v1.RecognitionAudio;
import com.google.cloud.speech.v1.RecognitionConfig;
import com.google.cloud.speech.v1.RecognitionConfig.AudioEncoding;
import com.google.cloud.speech.v1.RecognizeResponse;
import com.google.cloud.speech.v1.SpeechClient;
import com.google.cloud.speech.v1.SpeechRecognitionAlternative;
import com.google.cloud.speech.v1.SpeechRecognitionResult;
import java.util.List;
public class SpeechProfanityFilter {
public void speechProfanityFilter() throws Exception {
String uriPath = "gs://cloud-samples-tests/speech/brooklyn.flac";
speechProfanityFilter(uriPath);
}
/**
* Transcribe a remote audio file with multi-channel recognition
*
* @param gcsUri the path to the audio file
*/
public static void speechProfanityFilter(String gcsUri) throws Exception {
// Instantiates a client with GOOGLE_APPLICATION_CREDENTIALS
try (SpeechClient speech = SpeechClient.create()) {
// Configure remote file request
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.FLAC)
.setLanguageCode("en-US")
.setSampleRateHertz(16000)
.setProfanityFilter(true)
.build();
// Set the remote path for the audio file
RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(gcsUri).build();
// Use blocking call to get audio transcript
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
for (SpeechRecognitionResult result : results) {
// There can be several alternative transcripts for a given chunk of speech. Just use the
// first (most likely) one here.
SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
System.out.printf("Transcription: %s\n", alternative.getTranscript());
}
}
}
}
Node.js
// Filters profanity
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const gcsUri = 'gs://my-bucket/audio.raw';
async function syncRecognizeWithProfanityFilter() {
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
// Creates a client
const client = new speech.SpeechClient();
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'FLAC',
sampleRateHertz: 16000,
languageCode: 'en-US',
profanityFilter: true, // set this to true
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
syncRecognizeWithProfanityFilter().catch(console.error);
Python
def sync_recognize_with_profanity_filter_gcs(gcs_uri):
from google.cloud import speech
client = speech.SpeechClient()
audio = {"uri": gcs_uri}
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.FLAC,
sample_rate_hertz=16000,
language_code="en-US",
profanity_filter=True,
)
response = client.recognize(config=config, audio=audio)
for i, result in enumerate(response.results):
alternative = result.alternatives[0]
print(u"Transcript: {}".format(alternative.transcript))