반응형

여러 채널로 오디오 스크립트 작성

transcribe_multichannel.py 

이 페이지에서는 Speech-to-Text를 사용하여 둘 이상의 채널이 포함된 오디오 파일을 텍스트로 변환하는 방법을 설명합니다.

오디오 데이터에는 녹음된 화자에 대한 각각의 채널이 포함되어 있는 경우가 많습니다. 예를 들어 두 사람의 전화 통화를 녹음한 오디오라면 각 회선이 별도로 녹음된 채널 두 개가 포함될 수 있습니다.

여러 채널이 포함된 오디오 데이터를 텍스트로 변환하려면 Speech-to-Text API에 대한 요청에 채널 수를 제공해야 합니다. 요청의 audioChannelCount 필드를 오디오에 있는 채널 수로 설정합니다.

여러 채널이 포함된 요청을 보내면 Speech-to-Text가 오디오에 있는 서로 다른 채널을 식별하는 결과를 반환하며 channelTag 필드를 사용하여 각 결과를 대신하는 항목에 라벨을 지정합니다.

 

오디오 채널 설명 : https://cloud.google.com/speech-to-text/docs/multi-channel

 

여러 채널로 오디오 스크립트 작성  |  Cloud Speech-to-Text 문서  |  Google Cloud

이 페이지에서는 Speech-to-Text를 사용하여 둘 이상의 채널이 포함된 오디오 파일을 텍스트로 변환하는 방법을 설명합니다. 오디오 데이터에는 녹음된 화자에 대한 각각의 채널이 포함되어 있는

cloud.google.com

 

from google.cloud import speech

client = speech.SpeechClient()

with open(speech_file, "rb") as audio_file:
    content = audio_file.read()

audio = speech.RecognitionAudio(content=content)

config = speech.RecognitionConfig(
    encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
    sample_rate_hertz=44100,
    language_code="en-US",
    audio_channel_count=2,
    enable_separate_recognition_per_channel=True,
)

response = client.recognize(config=config, audio=audio)

for i, result in enumerate(response.results):
    alternative = result.alternatives[0]
    print("-" * 20)
    print("First alternative of result {}".format(i))
    print(u"Transcript: {}".format(alternative.transcript))
    print(u"Channel Tag: {}".format(result.channel_tag))

 

github.com/googleapis/python-speech/blob/master/samples/snippets/transcribe_multichannel.py

 

googleapis/python-speech

Contribute to googleapis/python-speech development by creating an account on GitHub.

github.com

 

반응형
반응형

상위 10가지 음성 처리 API의 비교

 

언어 처리는 머신러닝에서 매우 인기 있는 영역입니다. 인간의 발화를 텍스트로 변환하거나 텍스트를 말로 변환하는 일에 상당한 수요가 있지요. 매장이나 공항, 호텔과 같은 다양한 장소에서 셀프 서비스가 발전함에 따라 이 기술은 특히 중요해졌습니다. 기계가 인간의 노동력을 대체하기 위해서는 우리의 언어를 활용해 우리 인간과 소통할 수 있는 능력이 필수적이니까요. 이것이 바로 인공지능과 머신러닝이 언어처리에 집중하는 이유입니다.

 

오늘날 많은 수의 대기업들이 각기 다른 머신러닝 임무를 수행하는 API를 제공하고 으며 언어 처리 영역 또한 예외가 아닙니다. 독자 여러분께서 API를 사용하기 위해 자연어 처리의 전문가가 될 필요는 전혀 없습니다. 일반적으로 API와 함께 현리한 인터페이스가 제공되기 때문이죠. 그렇기 때문에 우리는 API 서버에 요청된 콘텐츠와 함께 HTTP 를 보내주기만 하면 됩니다. 그러면 임무가 성공적으로 완료된 뒤 곧바로 응답을 받을 수 있습니다. 이러한 접근 방식은 여러분의 문제 상황이 특별하지 않은 경우, 다시말해 표준적이고 일반적인 문제 상황을 가지고 있을 경우에 특히 유용합니다. 뿐만아니라, 시간이나 돈과같은 가치있는 자원들을 절약할 수 있는 방식이기도 합니다.

 

그러나 API를 사용하지 못해 직접 스크래치에서 음성 인식 시스템을 개발해야만 하는 상황도 상당히 많이 존재합니다. 이는 꽤 복잡하기도 하며 자원과 노력이 많이 요구되는 일이긴 하지만 결과적으로는 여러분의 필요에 꼭 맞는 이상적인 시스템을 생성할 수 있습니다. 직접 알고리즘을 구축하면 결과의 질이 향상될 가능성도 있죠.

 

하지만 일단 API에 대해 알아두는 것은 유용합니다. 각각의 API가 무엇을 할 수 있고 어떤 장단점이 있는지 등을 알아둠으로써 어떤 상황에 API를 써야하며 어떤API를 써야할지, 혹은 어떤 상황에 시스템을 직접 개발해야만 하는지를 판단할 수 있게 될 것이기 때문입니다. 이번 기사에서는 유명한 음성 처리 API들을 비교해보려고 합니다. 음성 처리에는 크게 두가지 과제가 있는데, 첫째는 말을 텍스트로 바꾸는 것이고, 다른 하나는 텍스트를 사람의 말로 바꾸는 것입니다.

 

다음은 음성 처리를 위한 몇 가지 인기 있는 API 목록입니다.

  • Google 클라우드 음성 API
  • IBM Watson Speech to Text
  • IBM Watson Text to Speech
  • Microsoft Azure Bing 음성 API
  • Amazon Transcribe
  • Amazon Polly

또한 잘 알려지지 않았지만 비슷한 기능을 수행하는 API 제품이 있습니다.

  • VoxSigma API
  • Twilio 음성인식
  • Speechmatics ASR
  • Nexmo Voice API

 

 

 

medium.com/activewizards-machine-learning-company/comparison-of-top-10-speech-processing-apis-2293de1d337f

 

Comparison of Top 10 Speech Processing APIs

Speech processing is a very popular area of machine learning. There is a significant demand in transforming human speech into text and…

medium.com

 

medium.com/@aimap.marker/%EC%83%81%EC%9C%84-10%EA%B0%80%EC%A7%80-%EC%9D%8C%EC%84%B1-%EC%B2%98%EB%A6%AC-api%EC%9D%98-%EB%B9%84%EA%B5%90-7a7ee778d4a3

 

상위 10가지 음성 처리 API의 비교

언어 처리는 머신러닝에서 매우 인기 있는 영역입니다. 인간의 발화를 텍스트로 변환하거나 텍스트를 말로 변환하는 일에 상당한 수요가 있지요. 매장이나 공항, 호텔과 같은 다양한 장소에서

medium.com

 

반응형
반응형

naver AI CSR 

반응형
반응형

 

apidocs.ncloud.com/ko/ai-naver/clova_speech_recognition/stt/

 

stt (Speech-To-Text) - API 참조서

개요 Clova Speech Recognition REST API (이하 CSR REST API)는 HTTP 기반의 REST API로 제공하는 음성인식 API로, 인식에 사용할 언어와 음성 데이터를 입력받고, 그에 맞는 인식 결과를 텍스트로 반환합니다. 입�

apidocs.ncloud.com

stt (Speech-To-Text)

  • Clova Speech Recognition REST API (이하 CSR REST API)는 HTTP 기반의 REST API로 제공하는 음성인식 API로, 인식에 사용할 언어와 음성 데이터를 입력받고, 그에 맞는 인식 결과를 텍스트로 반환합니다.
  • 입력 음성데이터 포맷은 mp3, aac, ac3, ogg, flac, wav을 지원합니다.

요청 

MethodRequest URI

POST https://naveropenapi.apigw.ntruss.com/recog/v1/stt

요청 파라미터 

파라미터 이름타입설명필수 여부

lang string 음성인식에 사용할 언어
- Kor: 한국어
- Jpn: 일본어
- Chn: 중국어
- Eng: 영어
필수

요청 헤더 

헤더명설명

X-NCP-APIGW-API-KEY-ID 앱 등록 시 발급받은 Client ID
X-NCP-APIGW-API-KEY-ID:{Client ID}
X-NCP-APIGW-API-KEY 앱 등록 시 발급 받은 Client Secret
X-NCP-APIGW-API-KEY:{Client Secret}
Content-Type application/octet-stream으로 고정
Content-Type: application/octet-stream

요청 바디 

필드명필수 여부타입제약 사항설명

image Yes mp3, aac, ac3, ogg, flac, wav 바이너리 사운드 데이터 (최대 60초) 음성 파일

응답 

응답 바디 

필드 이름데이터 타입설명

text string 음성에 대한 Text

예시 

요청 예시 

HTTP

 Copy[HTTP Request URL] https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=Kor [HTTP Request Body] --- binary sound data ---

응답 예시 

JSON

 Copy{ "text": "안녕하세요" }

API 예제 

다음은 각 언어별 CSR API 구현 예제입니다

JAVASCRIPT

const fs = require('fs');
const request = require('request');

const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';

// language => 언어 코드 ( Kor, Jpn, Eng, Chn )
function stt(language, filePath) {
    const url = `https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=${language}`;
    const requestConfig = {
        url: url,
        method: 'POST',
        headers: {
            'Content-Type': 'application/octet-stream',
            'X-NCP-APIGW-API-KEY-ID': clientId,
            'X-NCP-APIGW-API-KEY': clientSecret
        },
        body: fs.createReadStream(filePath)
    };

    request(requestConfig, (err, response, body) => {
        if (err) {
            console.log(err);
            return;
        }

        console.log(response.statusCode);
        console.log(body);
    });
}

stt('Kor', '음성 파일 경로 (ex: ./test.wav)');

 python

import sys
import requests
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
lang = "Kor" # 언어 코드 ( Kor, Jpn, Eng, Chn )
url = "https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=" + lang
data = open('음성 파일 경로', 'rb')
headers = {
    "X-NCP-APIGW-API-KEY-ID": client_id,
    "X-NCP-APIGW-API-KEY": client_secret,
    "Content-Type": "application/octet-stream"
}
response = requests.post(url,  data=data, headers=headers)
rescode = response.status_code
if(rescode == 200):
    print (response.text)
else:
    print("Error : " + response.text)

C#

using System;
using System.Net;
using System.Text;
using System.IO;
using System.Collections.Generic;
using System.Collections.Specialized;

namespace NaverAPI_Guide
{
    class APIExamSTT
    {
        static void Main(string[] args)
        {
            string FilePath = "YOUR_FILE_NAME";
            FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
            byte[] fileData = new byte[fs.Length];
            fs.Read(fileData, 0, fileData.Length);
            fs.Close();

            string lang = "Kor";    // 언어 코드 ( Kor, Jpn, Eng, Chn )
            string url = $"https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang={lang}";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Add("X-NCP-APIGW-API-KEY-ID", "YOUR_CLIENT_ID");
            request.Headers.Add("X-NCP-APIGW-API-KEY", "YOUR_CLIENT_SECRET");
            request.Method = "POST";
            request.ContentType = "application/octet-stream";
            request.ContentLength = fileData.Length;
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(fileData, 0, fileData.Length);
                requestStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream, Encoding.UTF8);
            string text = reader.ReadToEnd();
            stream.Close();
            response.Close();
            reader.Close();
            Console.WriteLine(text);
        }
    }
}
반응형

+ Recent posts