日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Paraformer實時語音識別API詳情

Paraformer語音識別

說明

支持的領域 / 任務:audio(音頻) / asr(語音識別)

Paraformer語音識別提供的實時轉寫API,能夠對長時間的語音數據流進行識別,并將結果流式返回給調用者,適用于會議演講、視頻直播等長時間不間斷識別的場景。

新一代語音識別模型paraformer-realtime-v2,支持常見的視頻直播、電話客服等場景下的音頻輸入,同時可以通過language_hints參數選擇語種獲得更準確的識別效果。

Paraformer實時語音識別返回較為豐富的結果供調用者選擇使用,包括中間文字結果、句子級文字、詞和時間戳等。模型默認進行標點符號預測和逆文本正則化。

模型名

模型簡介

paraformer-realtime-v2

推薦使用 Paraformer最新實時語音識別模型,支持多個語種自由切換的視頻直播、會議等實時場景的語音識別??梢酝ㄟ^language_hints參數選擇語種獲得更準確的識別效果。支持任意采樣率的音頻。

支持的語言包括:中文(包含中文普通話和各種方言)、英文、日語、韓語。支持熱詞功能,用法請參考定制熱詞

支持的中文方言(單擊查看詳情)

上海話、吳語、閩南語、東北話、甘肅話、貴州話、河南話、湖北話、湖南話、江西話、寧夏話、山西話、陜西話、山東話、四川話、天津話、云南話、粵語

paraformer-realtime-8k-v2

推薦使用 Paraformer最新8k中文實時語音識別模型,模型結構升級,具有更快的推理速度和更好的識別效果。支持8kHz電話客服等場景下的實時語音識別。僅支持中文熱詞。用法請參考 定制熱詞。

paraformer-realtime-v1

Paraformer中文實時語音識別模型,支持視頻直播、會議等實時場景下的語音識別。僅支持16kHz采樣率的音頻。

paraformer-realtime-8k-v1

Paraformer中文實時語音識別模型,支持8kHz電話客服等場景下的實時語音識別。

API參考

前提條件

本文檔主要以Python接口和參數為主進行講解。

導入模塊

import pyaudio
import dashscope
from dashscope.audio.asr import (Recognition, RecognitionCallback,
                                 RecognitionResult)

dashscope.api_key = '<your-dashscope-api-key>'
import com.alibaba.dashscope.audio.asr.recognition.Recognition;
import com.alibaba.dashscope.audio.asr.recognition.RecognitionParam;
import io.reactivex.BackpressureStrategy;
import io.reactivex.Flowable;
import java.nio.ByteBuffer;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.TargetDataLine;

請求參數

以下代碼片段展示了如何創建一個使用paraformer-realtime-v2模型,使用16k采樣率,PCM音頻格式的實時識別請求參數:

recognition = Recognition(model='paraformer-realtime-v2',
                          format='pcm',
                          sample_rate=16000,
                          callback=callback)
    RecognitionParam param =
        RecognitionParam.builder()
            .model("paraformer-realtime-v2")
            .format("pcm")
            .sampleRate(16000)
            .apiKey("your-dashscope-api-key")
            .build();

參數說明

參數

類型

默認值

說明

model

str

-

指定用于實時語音識別的模型

sample_rate

int

-

識別音頻采樣率支持8000Hz以及16000Hz

  • paraformer-realtime-v2 僅支持任意采樣率

  • paraformer-realtime-v1 僅支持16000Hz采樣

  • paraformer-realtime-8k-v1 僅支持8000Hz采樣率

format

str

-

支持'pcm'、'wav'、'opus'、'speex'、'aac'、'amr'等多種音頻格式

vocabulary_id

str

-

最新熱詞ID,支持最新v2系列模型并配置語種信息,此次語音識別中生效此熱詞ID對應的熱詞信息。默認不啟用。使用方法請參考定制熱詞

phrase_id

str

-

熱詞ID,此次語音識別中生效此熱詞ID對應的熱詞信息。默認不啟用。

注:phrase_id為舊版本熱詞方案,不支持v2及后續系列模型。支持舊版本熱詞的模型列表請參考Paraformer語音識別熱詞定制與管理

disfluency_removal_enabled

bool

False

過濾語氣詞,默認關閉

language_hints

list[str]

['zh', 'en']

指定識別語音中語言的代碼列表。支持的語言代碼:

  • zh: 中文

  • en: 英文

  • ja: 日語

  • yue: 粵語

  • ko: 韓語

僅對支持多語言的模型生效。如果不填寫則模型會自動識別語種。

注:在java sdk中,此參數需要通過parameter額外參數配置,用法請參考快速開始中示例代碼。

流式調用

提交單個語音實時轉寫任務,通過實現回調接口或者工作流的方式流式輸出實時識別結果。

通過回調方式的流式調用

以下代碼片段展示了創建Recognition示例并使用上文創建的參數來調用基于回調方式的流式實時識別。

class Callback(RecognitionCallback):
    def on_complete(self) -> None:
        # 識別完成

    def on_error(self, result: RecognitionResult) -> None:
        # 錯誤處理

    def on_event(self, result: RecognitionResult) -> None:
        # 處理識別結果
 
callback = Callback()
recognition = Recognition(model='paraformer-realtime-v2',
                          format='pcm',
                          sample_rate=16000,
                          callback=callback)
recognition.start()
class RecognitionCallback extends ResultCallback<RecognitionResult> {

  @Override
  public void onEvent(RecognitionResult message) {
    // 處理識別結果
  }

  @Override
  public void onComplete() {
    // 識別完成
  }

  @Override
  public void onError(Exception e) {
    // 錯誤處理
  }
}

Recognition recognition = new Recognition();
recognition.call(param, new RecognitionCallback());

該方法簽名如下:

成員方法

方法簽名

說明

start

def start(self):

基于回調形式的流式實時識別,該方法不會阻塞當前線程

  • 回調函數

    Python SDK為例,其他SDK命名方式可能不同

    方法簽名

    是否必須被override

    說明

    def on_open(self) -> None:

    websocket建立鏈接完成后立刻會被回調。

    def on_event(self, result: RecognitionResult) -> None:

    當服務有回復時會被回調,RecognitionResult 類型會在后文中介紹。

    def on_complete(self) -> None:

    當所有合成數據全部返回后進行回調。

    def on_error(self, result: RecognitionResult) -> None:

    當調用過程出現異常以及服務返回錯誤后以RecognitionResult類型進行回調。

    def on_close(self) -> None:

    當服務已經關閉連接后進行回調。

  • 返回結果說明

    RecognitionResult代表一次實時識別的結果,包含了時間戳和文本信息以及文本識別是否結束

    成員方法

    方法簽名

    說明

    get_sentence

    def get_sentence(self) -> Union[Dict[str, Any], List[Any]]:

    獲取當前識別的句子及時間戳信息。回調中返回的是單句信息,所以此方法返回類型為Dict[str, Any]

    get_request_id

    def get_request_id(self) -> str:

    獲取請求的RequestId

    is_sentence_end

    @staticmethod

    def is_sentence_end(sentence: Dict[str, Any]) -> bool:

    判斷給定句子是否已經結束

    Sentence類成員如下:

    參數

    類型

    說明

    beginTime

    Long

    句子開始時間

    endTime

    Long

    句子結束時間

    text

    String

    識別文本

    words

    List<Word>

    字時間戳信息

    Word類成員如下:

    參數

    類型

    說明

    beginTime

    long

    字開始時間

    endTime

    long

    字結束時間

    text

    String

    punctuation

    String

    標點

  • 發送音頻數據

    以下代碼片段展示在一段循環中通過Recognition對象的send_audio_frame來發送二進制音頻數據:

    // buffer是一個Bytes類型對象,用戶需要處理如何從音頻源中流式生成Bytes對象
    recognition.send_audio_frame(buffer)
    // buffer是一個ByteBuffer類型對象,用戶需要處理如何從音頻源中流式生成ByteBuffer對象
    recognition.sendAudioFrame(buffer);

    該方法簽名如下:

    成員方法

    方法簽名

    說明

    send_audio_frame

    def send_audio_frame(self, buffer: bytes):

    推送音頻,Bytes不應過短或過長,建議在1KB-16KB之間

  • 結束實時識別

    以下代碼片段展示停止實時識別:

    recognition.stop();
    recognition.stop();

    該方法簽名如下:

    成員方法

    方法簽名

    說明

    stop

    def stop(self):

    停止實時識別,該方法會阻塞當前線程至回調的on_complete或者on_error返回

基于Java Flowable的流式調用

為了方便Java開發者盡可能的簡化開發過程,實時語音識別支持Java Flowable調用。以下代碼片段展示使用Flowable的流式實時識別調用。該代碼片段中,param為上文創建的RecognitionParam對象,streamByteBuffer為一個Flowable<ByteBuffer>類型的對象,該streamCall調用返回一個Flowable<RecognitionResult>。關于Flowable的使用,可以參考http://reactivex.io/RxJava/2.x/javadoc/

recognition
    .streamCall(param, streamByteBuffer)
    .subscribe(
        result -> {
          // result為RecognitionResult對象
        },
        error -> {
          // 錯誤處理
        },
        () -> {
          // 識別結束處理
        });

該方法簽名如下:

成員方法

方法簽名

說明

streamCall

Flowable<RecognitionResult> streamCall(RecognitionParam param, Flowable<ByteBuffer>);

基于Flowable的流式實時識別

返回結果說明

該接口主要通過返回的Flowable<RecognitionResult>來獲取流式結果,關于RecognitionResult的說明可以參考前文

同步調用

提交單個語音實時轉寫任務,通過傳入本地文件的方式同步阻塞的拿到轉寫結果。

以下代碼片段展示了使用本地音頻文件“asr_example.wav"來調用同步接口:

result = recognition.call('asr_example.wav')
String result = recognizer.call(param, new File("asr_example.pcm"));

該方法簽名如下:

成員方法

方法簽名

說明

call

def call(self, file: str) -> Dict[str, Any]:

基于本地文件的同步調用,該方法會阻塞當前線程直到文件全部音頻讀完,該方法要求所識別文件具有可讀權限

返回結果說明

返回一個Dict類型,該Dict字符串格式如下:

參數

類型

說明

sentences

List<Sentence>

完整句子時間戳列表

其中List<Sentence>中每一個Sentence都是一個Sentence樣式的Dict對象,對于Sentence以及Sentence下的Word對象,可以參考上文本中關于Sentence類型和Word類型的說明。以下給出一個返回示例,該例子中sentences參數下僅有一個Sentence:

{
	'begin_time': 280,
	'end_time': 4000,
	'text': 'hello word, 這里是阿里巴巴語音實驗室。',
	'words': [{
		'begin_time': 280,
		'end_time': 776,
		'text': 'hello ',
		'punctuation': ''
	}, {
		'begin_time': 776,
		'end_time': 1024,
		'text': 'word',
		'punctuation': ', '
	}, {
		'begin_time': 1024,
		'end_time': 1520,
		'text': '這里',
		'punctuation': ''
	}, {
		'begin_time': 1520,
		'end_time': 1768,
		'text': '是',
		'punctuation': ''
	}, {
		'begin_time': 1768,
		'end_time': 2760,
		'text': '阿里巴巴',
		'punctuation': ''
	}, {
		'begin_time': 2760,
		'end_time': 3256,
		'text': '語音',
		'punctuation': ''
	}, {
		'begin_time': 3256,
		'end_time': 4000,
		'text': '實驗室',
		'punctuation': '。'
	}]
}

并發調用

Python

Python中,由于存在全局解釋器鎖,同一時刻只有一個線程可以執行Python代碼(雖然某些性能導向的庫可能會去除此限制)。如果您想更好地利用多核心計算機的計算資源,推薦你使用multiprocessingconcurrent.futures.ProcessPoolExecutor。 多線程在較高并發下會顯著增加SDK調用延遲。

Java

Java SDK中,Dashscope SDK使用了okhttp3的連接池技術降低重復建聯開銷。默認配置為32個連接。如果您的最高并發數超過此數值,請通過下述環境變量增加連接數。

export DASHSCOPE_MAXIMUM_ASYNC_REQUESTS=2000
export DASHSCOPE_MAXIMUM_ASYNC_REQUESTS_PER_HOST=2000
export DASHSCOPE_CONNECTION_POOL_SIZE=2000

示例中設置為2000,請按照實際單機峰值并發量的1.5倍到2倍配置。

重要
  • 連接池配置為全局變量,請在調用SDK前完成,否則不會生效。

  • 連接池的連接數為所有任務(包含語音識別、語音合成、其他百煉平臺非語音任務)的總和。