일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- @Transactional
- Spring Boot
- 순환참조
- react native
- Spring
- 양방향 매핑
- google cloud
- JPA
- skt fellowship 3기
- matplotlib
- OG tag
- google 로그인
- Loss Function
- 졸프
- google login
- 커스텀 데이터 학습
- 코드업
- 2021 제9회 문화공공데이터 활용경진대회
- yolo
- YOLOv5
- C++
- Expo
- idToken
- oauth
- STT
- AWS
- pandas
- javascript
- marksense.ai
- html
Archives
- Today
- Total
민팽로그
과제02-Google Cloud : Speech-to-Text API(2) 본문
동기식 음성 인식
동기식 짧은 음성파일(wav파일)을 2가지 방법으로 텍스트로 바꾸어 보았다. 두 방식 모두 큰 차이는 없다.
우선 다시 언급하자면
구글 stt 음성인식 방법으로는 크게 동기, 비동기, 스트리밍 방식이 있고, 오늘 사용할 동기식 음성인식은 1분 미만의 짧은 음성 파일을 텍스트로 변환하는데에 사용한다.
주의할 점: RecognitionConfig 과정이 텍스트 변환에 상당한 영향을 끼친다. 내가 녹음한 파일의 확장자는 m4a 였고, wav로 변환하는 과정에서 sampling rate와 채널 수를 확실하게 하기 위해 오디오 파일 변환 도구를 사용했다. 특히 sampling rate가 일치하지 않을때 텍스트로 변환이 안됐는데 오류메세지가 뜨지 않을 수도 있다.
1. local파일 동기 음성 인식
import com.google.cloud.speech.v1.RecognitionAudio;
import com.google.cloud.speech.v1.RecognitionConfig;
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 com.google.cloud.speech.v1.RecognitionConfig.AudioEncoding;
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 LocalTest {
public static void main(String[] args) throws Exception {
try (SpeechClient speech = SpeechClient.create()) {
Path path = Paths.get(로컬파일 경로 입력);
byte[] data = Files.readAllBytes(path);
ByteString audioBytes = ByteString.copyFrom(data);
// Configure request with local raw PCM audio
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setLanguageCode("ko-KR")
.setSampleRateHertz(44100) //사용하는 음성파일 샘플링 레이트로 설정
.build();
RecognitionAudio audio = RecognitionAudio.newBuilder().setContent(audioBytes).build();
// Use blocking call to get audio transcript
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
for (SpeechRecognitionResult result : results) {
// 텍스트로 전환된 여러 스크립트 중 첫번째가 가장 정확할 것
SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
System.out.printf("Transcription: %s%n", alternative.getTranscript());
}
}
}
}
- 결과 -
2. remote파일 동기 음성 인식
import java.util.List;
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;
public class RemoteTest {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
try (SpeechClient speech = SpeechClient.create()) {
// 원격파일 셋팅
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setLanguageCode("ko-KR")
.setSampleRateHertz(44100) //사용하는 음성파일 샘플링 레이트로 설정
.build();
RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(구글클라우드저장소 주소입력).build();
// Use blocking call for getting audio transcript
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
for (SpeechRecognitionResult result : results) {
// 텍스트로 전환된 여러 스크립트 중 첫번째가 가장 정확할 것
SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
System.out.printf("Transcription: %s%n", alternative.getTranscript());
}
}catch(Exception e) {
System.out.println("failed: " + e);
}
}
}
(1) 1분 미만의 파일 입력 결과
(2) 1분 이상의 파일 입력 결과
'프로젝트 > 소리마당(2022 프로보노)' 카테고리의 다른 글
공모전 참여 후기: 2021 제9회 문화공공데이터 활용경진대회 (0) | 2021.08.24 |
---|---|
2021.08.22 회의 느낀점 (0) | 2021.08.23 |
과제02-Google Cloud : Speech-to-Text API(4) (0) | 2021.08.20 |
과제02-Google Cloud : Speech-to-Text API(3) (0) | 2021.08.20 |
과제02-Google Cloud : Speech-to-Text API(1) (0) | 2021.08.20 |
Comments