Multi-Source Translation (MTRANS) dieses Projekts bietet einen leichten Service, der eine Vielzahl von Online-Übersetzungs- und TTS- Funktionen für Mainstream integriert. Das Programm sendet HTTP -Anfragen an die unterstützten Online -Zielserver, erhalten und analysiert die zurückgegebenen Ergebnisse und bieten den Benutzern Komfort. Gegenwärtig ist dieses Projekt kostenlos und Open Source , und Entwickler können dadurch eine sekundäre Entwicklung durchführen.
Derzeit sind die Unterstützungsquellen und Sprachen wie folgt:
| Übersetzungsquelle | Serveradresse | Unterstützen Sie Sprachen | Weg |
|---|---|---|---|
| Baidu -Übersetzung | http://fanyi.baidu.com/v2transapi | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch, Deutsch | Übersetzung |
| YouDao -Übersetzung | http://fanyi.youdao.com/translate_o | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch | Übersetzung |
| Google Translate | https://translate.google.cn/translate_a/single | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch, Deutsch | Übersetzung |
| Tencent Übersetzer | http://fanyi.qq.com/api/translate | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch, Deutsch | Übersetzung |
| OME -Übersetzung | http://www.omianyi.com/transsents.do | Chinesisch, Englisch | Übersetzung |
| Versuchen Sie es | http://fanyi.trycan.com/transfer.do | Chinesisch, Englisch | Übersetzung |
| Kingsoft Love CI Dominerer | http://fy.iciba.com/ajax.php?a=fy | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Deutsch | Übersetzung |
| SOGOU -Übersetzung | http://fanyi.sogou.com/reventondc/translate | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch, Deutsch | Übersetzung |
| TTS Quelle | Serveradresse | Unterstützen Sie Sprachen |
|---|---|---|
| Baidu TTS | http://fanyi.baidu.com/gettts | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch, Deutsch, Thai |
| Yodao tts | http://tts.youdao.com/fanyivoice | Englisch, Japanisch, Koreanisch, Französisch |
| Google TTS | https://translate.google.cn/translate_tts | Chinesisch, Englisch, Japanisch, Koreanisch, Französisch, Russisch, Deutsch |
| Tencent TTS | http://audiodetect.browser.qq.com:8080/tts | Chinesisch, Englisch, Japanisch, Koreanisch |
| Sogou tts | http://fanyi.sogou.com/reventondc/syncthesis | Chinesisch, Englisch |
Dieses Projekt wird mit Idea + Maven entwickelt. Bitte fügen Sie die folgenden Abhängigkeiten in pom.xml hinzu.
< dependency >
< groupId >org.apache.httpcomponents</ groupId >
< artifactId >httpclient</ artifactId >
< version >4.5.5</ version >
</ dependency >
< dependency >
< groupId >com.fasterxml.jackson.core</ groupId >
< artifactId >jackson-databind</ artifactId >
< version >2.9.5</ version >
</ dependency > import com . swjtu . lang . LANG ;
import com . swjtu . querier . Querier ;
import com . swjtu . trans . AbstractTranslator ;
import com . swjtu . trans . impl . GoogleTranslator ;
import java . util . List ;
public class Test {
public static void main ( String [] args ) {
Querier < AbstractTranslator > querierTrans = new Querier <>(); // 获取查询器
querierTrans . setParams ( LANG . ZH , LANG . EN , "如果这都不算爱,我有什么好悲哀!" ); // 设置参数
querierTrans . attach ( new GoogleTranslator ()); // 向查询器中添加 Google 翻译器
List < String > result = querierTrans . execute (); // 执行查询并接收查询结果
for ( String str : result ) {
System . out . println ( str );
}
}
} import com . swjtu . lang . LANG ;
import com . swjtu . querier . Querier ;
import com . swjtu . tts . AbstractTTS ;
import com . swjtu . tts . impl . BaiduTTS ;
import java . util . List ;
public class Test {
public static void main ( String [] args ) {
Querier < AbstractTTS > querierTTS = new Querier <>(); // 获取查询器
querierTTS . setParams ( LANG . EN , "To be or not to be, that is a question." ); // 设置参数
querierTTS . attach ( new BaiduTTS ()); // 向查询器中添加 Google 翻译器
List < String > result = querierTTS . execute (); // 执行查询并接收查询结果
for ( String str : result ) {
System . out . println ( str );
}
}
}Dieses Projekt definiert hauptsächlich die folgenden Pakete, und ihre Benennung und Funktionen sind wie folgt:
| Paketname | Klassen einschließen | veranschaulichen |
|---|---|---|
| com.swjtu.lang | Lang | Aufzählungstyp, Liste der unterstützten Sprachen |
| com.swjtu.util | Util | Toolkit |
| com.swjtu.http | Httpparams, abstracthttpattribute | HTTP -Methodenschnittstelle und abstrakte Klassen |
| com.swjtu.querier | Querier | Generika, Queryer |
| com.swjtu.trans | AbstractTranslator | Übersetzer (Abstract) Klasse |
| com.swjtu.trans.impl | Baidutranslator, googletranslator, yodaotranslator, icibatranslator, Omitranslator, SoguTranslator, TencentTranslator, TryCantranslator | Übersetzer Entitätsklasse |
| com.swjtu.tts | Abstracttts | TTS abstrakte Klasse |
| com.swjtu.ts.impl | Baidutts, YouDaotts, Googletts, Tencenttts, Sogoutts | TTS -Entitätsklasse |
Projektstruktur

com.swjtu.http Paket/Klassendiagramm

com.swjtu.querier Paket/Klassendiagramm

com.swjtu.trans Paket/Klassendiagramm

com.swjtu.trans.impl Paket/Klassendiagramm

com.swjtu.tts Paket/Klassendiagramm

com.swjtu.ts.impl Paket/Klassendiagramm

com.swjtu.util Paket/Klassendiagramm

LANG -Aufzählung: Definiert die unterstützten oder unterstützten Sprachen und standardisiert einheitlich die Sprachliste.
public enum LANG {
ZH , // 中文
EN , // 英语
JP , // 日语
JPKA , // 日语假名
TH , // 泰语
...
} Util -Klasse: Enthält und implementiert einige praktische Methoden.
public static List < NameValuePair > map2list ( Map < String , String > mapParams ); // 将 Map 转换成 List
public static String getUrlWithQueryString ( String url , Map < String , String > params ); // 生成 URL
// 各种格式的 MD5
public static String md5 ( String input );
public static String md5 ( File file );
public static String md5 ( InputStream in ); Querier -Klasse: Definiert Querier -Klasse und verwendet das Beobachtermuster. Diese Klasse enthält eine Sammlung, die Elemente in der Sammlung sind Übersetzerklassen oder TTS -Klasse. Führen Sie nach dem Einstellen von Parametern über setParams() execute() aus, um die Anforderung zu senden und das Ergebnis zurückzugeben. Elemente können über attach() und detach() in die Sammlung hinzugefügt oder entfernt werden.
public final class Querier < T extends AbstractHttpAttribute > {
private List < T > collection ; // 集合
...
public void setParams ( LANG source , String text ); // TTS 参数设置, source 源语种,text 待转换为语音的内容
public void setParams ( LANG from , LANG to , String text ); // 翻译器参数设置,from 源语种,to 目标语种,text 待翻译内容
public List < String > execute () {
List < String > result = new ArrayList < String >();
for ( T element : collection ) {
if ( element . getClass (). getName (). contains ( "Translator" )) {
result . add ( element . run ( from , to , text ));
} else if ( element . getClass (). getName (). contains ( "TTS" )) {
result . add ( element . run ( from , text ));
}
}
return result ;
}
public void attach ( T element );
public void detach ( T element );
...
} HttpParams -Schnittstelle: Definiert die Schnittstellenmethode zum Festlegen von HTTP -Datenformat
public interface HttpParams {
public void setFormData ( LANG source , String text ); // 设置 TTS 参数的接口方法
public void setFormData ( LANG from , LANG to , String text ); // 设置翻译器参数的接口方法
} AbstractHttpAttribute -Klasse: Anforderungs- und Steuerungsprozess im Zusammenhang mit HTTP -Anfragen
public abstract String query () throws Exception ;
public abstract String run ( LANG source , String text );
public abstract String run ( LANG from , LANG to , String text );
// 资源释放
public void close ( HttpEntity httpEntity , CloseableHttpResponse httpResponse );
public void close (); AbstractTranslator -Klasse: Erben von AbstractHttpAttribute -Klasse, implementiert die HttpParams -Schnittstelle und definiert abstrakte Übersetzerklassen.
@ Override
public String run ( LANG from , LANG to , String text ) {
String result = "" ;
setFormData ( from , to , text );
try {
result = parses ( query ());
} catch ( Exception e ) {
e . printStackTrace ();
}
close ();
return result ;
}
public abstract void setLangSupport (); // 设置支持的语种
public abstract String parses ( String text ) throws IOException ; // 解析返回结果AbstractTTS -Klasse: Erbt aus AbstractHttpAttribute -Klasse, implementiert die HttpParams -Schnittstelle und definiert die abstrakte TTS -Klasse.
@ Override
public String run ( LANG source , String text ) {
String saveFile = null ;
setFormData ( source , text );
try {
saveFile = query ();
System . out . println ( saveFile );
} catch ( IOException e ) {
e . printStackTrace ();
}
close ();
return saveFile ;
}
public String query () throws IOException {
...
// 将 TTS 结果保存为 mp3 音频文件,以待转换文本的 md5 码作为部分文件名
StringBuilder saveFile = new StringBuilder ();
saveFile . append ( "./tts/" )
. append ( this . getClass (). getName ())
. append ( "-" )
. append ( Util . md5 ( uri ))
. append ( ".mp3" );
...
} Dieses Projekt fasst verschiedene Methoden zusammen und enthüllt 5 API -Methoden über Querier Generic -Klasse. Es ist sehr einfach und einfach zu bedienen. Einzelheiten finden Sie im Beispiel:
// 设置查询器参数
public void setParams ( LANG source , String text );
public void setParams ( LANG from , LANG to , String text );
public List < String > execute (); // 执行查询并返回结果
public void attach ( T element ); // 向查询器中添加元素
public void detach ( T element ); // 移除查询器中的元素Dieses Projekt unterstützt und bietet Mainstream -Online -Übersetzungs- und TTS -Dienste und kann zu verwandten Aufgaben über die bereitgestellte API -Schnittstelle problemlos ausführen. Gleichzeitig werden wir unter Berücksichtigung der potenziellen Bedürfnisse von Benutzern vorstellen, wie sie auf diesem Projekt erweitert werden, um den Zweck der sekundären Entwicklung zu erreichen. Vor dem Erweitern dieses Projekts müssen Benutzer ein gewisses Verständnis des Projektquellcodes und des HTTP -Wissens haben.
Die Aufzählung von LANG im Projektcode definiert die am häufigsten verwendeten Sprachen. Wenn die unterstützte Sprache die Bedürfnisse des Benutzers nicht erfüllen kann, kann der Benutzer sie selbst erweitern.
setLangSupport() die Codekarte zur langMap -Variablen hinzu.Zum Beispiel: Wenn Sie beispielsweise einen spanischen Support dem yodao -Übersetzer hinzufügen:
Schritt 1: Durch Abfragen der Liste der von YouDao Translation Server unterstützten Sprachen ist ersichtlich, dass die spanische Sprache unterstützt wird und der Codename: Es ist: es
Schritt 2: Fügen Sie in LANG Sprachcode hinzu:
public enum LANG {
ZH , // 中文
EN , // 英语
JP , // 日语
JPKA , // 日语假名
TH , // 泰语
FRA , // 法语
SPA , // 西班牙语 <--- 添加语种(自定义语种代号)
KOR , // 韩语
....
} Schritt 3: Fügen Sie in der YoudaoTranslator -Klasse die Codekarte hinzu:
@ Override
public void setLangSupport () {
langMap . put ( LANG . ZH , "zh-CHS" );
langMap . put ( LANG . EN , "en" );
langMap . put ( LANG . JP , "ja" );
langMap . put ( LANG . KOR , "ko" );
langMap . put ( LANG . FRA , "fr" );
langMap . put ( LANG . RU , "ru" );
langMap . put ( LANG . SPA , "es" ); // 添加代号映射
} Entwickler definieren ihre eigene Übersetzerklasse, indem sie die AbstractTranslator -Klasse erben und die folgenden abstrakten Methoden in der Klasse implementieren:
// 添加语种支持
public abstract void setLangSupport ();
// 用于设置请求参数
public abstract void setFormData ( LANG from , LANG to , String text );
// 发送 HTTP 请求并接收返回结果(通常为 JSON 或 XML 字符串,根据用户请求结果而定)
public abstract String query () throws Exception ;
// 解析字符串,提取翻译结果
public abstract String parses ( String text ) throws IOException ;HINWEIS: Für einige HTTP -Anfragen, bei denen Cookies festgelegt werden müssen, erhalten Sie die Cookies, bevor Sie die Anfrage stellen. Normalerweise drücken Sie F12 im Chrombrowser und geben Sie ein:
document.cookiein der Konsolenkonsole, um es anzuzeigen.
Entwickler definieren ihre eigene TTS -Klasse, indem sie die AbstractTTS Klasse erben und die folgenden abstrakten Methoden in der Klasse implementieren:
// 添加语种支持
public abstract void setLangSupport ();
// 用于设置请求参数
public abstract void setFormData ( LANG source , String text );
// 发送 HTTP 请求并接收返回结果(通常为 JSON 或 XML 字符串,根据用户请求结果而定)
public abstract String query () throws Exception ;HINWEIS: Der Standard -TTS Save -Pfad lautet: ./tts/class Name -md5 (Inhalt zu konvertieren) .mp3
(如:com.swjtu.tts.impl.GoogleTTS-5757a2c16ce52b5427eb12f961d6362e.mp3)