001/* 002 * Copyright (c) 2011-2017 Nexmo Inc 003 * 004 * Permission is hereby granted, free of charge, to any person obtaining a copy 005 * of this software and associated documentation files (the "Software"), to deal 006 * in the Software without restriction, including without limitation the rights 007 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 008 * copies of the Software, and to permit persons to whom the Software is 009 * furnished to do so, subject to the following conditions: 010 * 011 * The above copyright notice and this permission notice shall be included in 012 * all copies or substantial portions of the Software. 013 * 014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 017 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 019 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 020 * THE SOFTWARE. 021 */ 022package com.nexmo.client.voice; 023 024import com.fasterxml.jackson.annotation.JsonCreator; 025import com.fasterxml.jackson.annotation.JsonValue; 026 027import java.util.HashMap; 028import java.util.Map; 029 030/** 031 * Voice used to deliver text to a {@link Call} in a {@link TalkRequest}. 032 */ 033 034public enum VoiceName { 035 ADITI("Aditi"), 036 AGNIESZKA("Agnieszka"), 037 ALVA("Alva"), 038 AMY("Amy"), 039 ASTRID("Astrid"), 040 BIANCA("Bianca"), 041 BRIAN("Brian"), 042 CARLA("Carla"), 043 CARMEN("Carmen"), 044 CARMIT("Carmit"), 045 CATARINA("Catarina"), 046 CELINE("Celine"), 047 CEM("Cem"), 048 CHANTAL("Chantal"), 049 CHIPMUNK("Chipmunk"), 050 CONCHITA("Conchita"), 051 CRISTIANO("Cristiano"), 052 DAMAYANTI("Damayanti"), 053 EMPAR("Empar"), 054 DORA("Dora"), 055 EMMA("Emma"), 056 ENRIQUE("Enrique"), 057 ERIC("Eric"), 058 EWA("Ewa"), 059 FELIPE("Felipe"), 060 FILIZ("Filiz"), 061 GERAINT("Geraint"), 062 GIORGIO("Giorgio"), 063 GWYNETH("Gwyneth"), 064 HANS("Hans"), 065 HENRIK("Henrik"), 066 INES("Ines"), 067 IOANA("Ioana"), 068 IVETA("Iveta"), 069 IVY("Ivy"), 070 JACEK("Jacek"), 071 JAN("Jan"), 072 JENNIFER("Jennifer"), 073 JOANA("Joana"), 074 JOEY("Joey"), 075 JORDI("Jordi"), 076 JUSTIN("Justin"), 077 KANYA("Kanya"), 078 KARL("Karl"), 079 KENDRA("Kendra"), 080 KIMBERLY("Kimberly"), 081 LAILA("Laila"), 082 LAURA("Laura"), 083 LEA("Lea"), 084 LEKHA("Lekha"), 085 LIV("Liv"), 086 LOTTE("Lotte"), 087 LUCIA("Lucia"), 088 LUCIANA("Luciana"), 089 MADS("Mads"), 090 MAGED("Maged"), 091 MAJA("Maja"), 092 MARISKA("Mariska"), 093 MARLENE("Marlene"), 094 MATHIEU("Mathieu"), 095 MATTHEW("Matthew"), 096 MAXIM("Maxim"), 097 MEI_JIA("Mei-Jia"), 098 MELINA("Melina"), 099 MIA("Mia"), 100 MIGUEL("Miguel"), 101 MIREN("Miren"), 102 MIZUKI("Mizuki"), 103 MONTSERRAT("Montserrat"), 104 NAJA("Naja"), 105 NICOLE("Nicole"), 106 NIKOS("Nikos"), 107 NORA("Nora"), 108 OSKAR("Oskar"), 109 PENELOPE("Penelope"), 110 RAVEENA("Raveena"), 111 RICARDO("Ricardo"), 112 RUBEN("Ruben"), 113 RUSSELL("Russell"), 114 SALLI("Salli"), 115 SATU("Satu"), 116 SEOYEON("Seoyeon"), 117 SIN_JI("Sin-Ji"), 118 SORA("Sora"), 119 TAKUMI("Takumi"), 120 TARIK("Tarik"), 121 TATYANA("Tatyana"), 122 TESSA("Tessa"), 123 TIAN_TIAN("Tian-Tian"), 124 VICKI("Vicki"), 125 VITORIA("Vitoria"), 126 YELDA("Yelda"), 127 ZEINA("Zeina"), 128 ZHIYU("Zhiyu"), 129 ZUZANA("Zuzana"), 130 UNKNOWN("Unknown"); 131 132 private static final Map<String, VoiceName> voiceNameIndex = new HashMap<>(); 133 134 static { 135 for (VoiceName voiceName : VoiceName.values()) { 136 voiceNameIndex.put(voiceName.name(), voiceName); 137 } 138 } 139 140 private String displayName; 141 142 VoiceName(String displayName) { 143 this.displayName = displayName; 144 } 145 146 @Override 147 public String toString() { 148 return displayName; 149 } 150 151 @JsonCreator 152 public static VoiceName fromString(String name) { 153 VoiceName foundVoiceName = voiceNameIndex.get(name.toUpperCase()); 154 return (foundVoiceName != null) ? foundVoiceName : UNKNOWN; 155 } 156 157 @JsonValue 158 public String getDisplayName() { 159 return displayName; 160 } 161}