文章目錄
- 前言
- 接口簡介
- 前置條件
- 實戰
- 添加 Maven 依賴
- 核心代碼示例
- 參數說明
- 個人簡介
前言
- 本文介紹如何基于騰訊云語音識別 快速識別接口,實現通過 HTTPS POST 方式上傳音頻并快速識別同步返回識別結果的實戰流程。
接口簡介
- 騰訊云語音識別 快速識別接口 支持上傳音頻文件并同步返回識別結果,適合以下場景:
- 視頻字幕自動生成
- 呼叫中心/質檢實時轉寫
- 會議記錄轉寫
前置條件
- 開通騰訊云語音識別服務。
- 在 API 密鑰管理 新建密鑰,獲取:
- AppID
- SecretID
- SecretKey
實戰
添加 Maven 依賴
- 在項目
pom.xml
中引入騰訊云語音識別 SDK:
<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-speech-sdk-java</artifactId><version>1.0.52</version>
</dependency>
核心代碼示例
@Component
@Slf4j
public class FlashRecognizerService {private static final String SECRET_KEY = "你的SecretKey";private static final String SECRET_ID = "你的SecretId";private static final String APP_ID = "你的AppId";private final Credential credential = Credential.builder().secretId(SECRET_ID).secretKey(SECRET_KEY).build();public String recognizer(File file) {log.info("開始解析音頻文件:{}", file);FlashRecognizer recognizer = SpeechClient.newFlashRecognizer(APP_ID, credential);byte[] data = ByteUtils.inputStream2ByteArray(file);// 初始化識別請求FlashRecognitionRequest recognitionRequest = FlashRecognitionRequest.initialize();recognitionRequest.setEngineType("16k_zh"); // 中文普通話recognitionRequest.setFirstChannelOnly(1); // 僅識別第一聲道recognitionRequest.setVoiceFormat(getFileExtension(file));recognitionRequest.setSpeakerDiarization(0); // 不做說話人分離recognitionRequest.setFilterDirty(0); // 不過濾臟詞recognitionRequest.setFilterModal(0); // 不過濾語氣詞recognitionRequest.setFilterPunc(0); // 保留標點recognitionRequest.setConvertNumMode(1); // 開啟數字轉換recognitionRequest.setWordInfo(1); // 返回詞級信息// 同步識別FlashRecognitionResponse response = recognizer.recognize(recognitionRequest, data);log.info("音頻文件解析完成:{} {}", file, JSONObject.toJSONString(response));return response.getFlashResult().get(0).getText();}/*** 獲取文件擴展名*/public static String getFileExtension(File file) {String name = file.getName();int lastIndex = name.lastIndexOf(".");if (lastIndex == -1 || lastIndex == name.length() - 1) {return "";}return name.substring(lastIndex + 1);}
}
參數說明
參數 | 說明 | 默認值 |
---|---|---|
EngineType | 引擎類型(如 16k_zh 中文普通話) | |
FirstChannelOnly | 是否僅識別第一個聲道(1 是,0 否) | 1 |
VoiceFormat | 音頻格式,如 mp3、wav、m4a | |
SpeakerDiarization | 是否進行說話人分離(0 否,1 是) | 0 |
FilterDirty | 過濾臟詞(0 不過濾,1 過濾) | 0 |
FilterModal | 過濾語氣詞(0 不過濾,1 過濾) | 0 |
FilterPunc | 過濾標點(0 不過濾,1 過濾) | 0 |
ConvertNumMode | 數字轉換(0 關閉,1 開啟) | 1 |
WordInfo | 是否返回詞級信息(0 否,1 是) | 1 |
個人簡介
👋 你好,我是 Lorin 洛林,一位 Java 后端技術開發者!座右銘:Technology has the power to make the world a better place.
🚀 我對技術的熱情是我不斷學習和分享的動力。我的博客是一個關于Java生態系統、后端開發和最新技術趨勢的地方。
🧠 作為一個 Java 后端技術愛好者,我不僅熱衷于探索語言的新特性和技術的深度,還熱衷于分享我的見解和最佳實踐。我相信知識的分享和社區合作可以幫助我們共同成長。
💡 在我的博客上,你將找到關于Java核心概念、JVM 底層技術、常用框架如Spring和Mybatis 、MySQL等數據庫管理、RabbitMQ、Rocketmq等消息中間件、性能優化等內容的深入文章。我也將分享一些編程技巧和解決問題的方法,以幫助你更好地掌握Java編程。
🌐 我鼓勵互動和建立社區,因此請留下你的問題、建議或主題請求,讓我知道你感興趣的內容。此外,我將分享最新的互聯網和技術資訊,以確保你與技術世界的最新發展保持聯系。我期待與你一起在技術之路上前進,一起探討技術世界的無限可能性。
📖 保持關注我的博客,讓我們共同追求技術卓越。