首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 呼叫有道翻譯 API 實現線上發音功能

     編輯:C++ 入門

承接上一篇《C++ 使用 Curl 與 JsonCpp 呼叫有道翻譯 API》,讀者建議加入發音功能。本文記錄在 Ubuntu + GCC 4.7 環境下,整合有道發音 API 並播放 MP3 的完整過程。

一、聲音來源:有道發音 API

API 端點:https://dict.youdao.com/dictvoice?audio=

例如查詢 futures 發音,瀏覽器訪問 https://dict.youdao.com/dictvoice?audio=futures 即可聽到女聲朗讀。

二、程式實作步驟

1. 下載音訊檔(使用 libcurl)

#include <curl/curl.h>
#include <stdio.h>

size_t voice_writer(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    return fwrite(ptr, size, nmemb, stream);
}

int main(int argc, char *argv[]) {
    CURL *curl = curl_easy_init();
    if (!curl) return 1;

    char voice_url[256] = "https://dict.youdao.com/dictvoice?audio=";
    strcat(voice_url, argv[1]);

    FILE *fp = fopen("voice.mp3", "wb");
    if (!fp) { curl_easy_cleanup(curl); return 1; }

    curl_easy_setopt(curl, CURLOPT_URL, voice_url);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, voice_writer);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
    curl_easy_perform(curl);

    fclose(fp);
    curl_easy_cleanup(curl);
    return 0;
}

執行後會在當前目錄產生 voice.mp3。

2. 播放 MP3(使用 SoX 工具)

Linux 下 C++ 直接解碼 MP3 較複雜,採用呼叫系統命令播放:

sudo apt-get install sox libsox-fmt-all  # 安裝 SoX
system("play voice.mp3");                 // 程式中播放
替代方案:若不想依賴外部工具,可考慮 libmpg123、SDL_mixer 或 PortAudio 等程式庫,但整合成本較高。SoX 被譽為音訊處理的「瑞士刀」,支援格式多、指令簡單,適合快速原型。

三、整合建議

將翻譯與發音模組封裝為類別,提供 translate(word) 與 pronounce(word) 介面,即可構建完整的線上發音辭典。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved