diff --git a/.env.webui b/.env.webui new file mode 100644 index 0000000000000000000000000000000000000000..eda09b0c62ad22c20b3e967a79dfb87f84b077b2 --- /dev/null +++ b/.env.webui @@ -0,0 +1,17 @@ +# Server configuration +SERVER_NAME= +SERVER_PORT= + +# Gradio interface options +SHARE= +DEBUG= +AUTH= + +# Model inference options +HALF= +OFF_TQDM=True + +# Text-to-Speech (TTS) configuration +TTS_MAX_LEN=1000 +SSML_MAX_LEN=3000 +MAX_BATCH_SIZE=12 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..a6344aac8c09253b3b630fb776ae94478aa0275b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,35 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..45c1d22ae3138a566228e9bb4d06f1ab19ebbceb --- /dev/null +++ b/.gitignore @@ -0,0 +1,165 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +*.wav +*.mp3 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f25c62cfa63e2a49c1af4fd9bd9cca3fd010b8db --- /dev/null +++ b/LICENSE @@ -0,0 +1,663 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (c) 2023 AUTOMATIC1111 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c90ae7105d27af76e397e7f451f57cb8ab0ad0dc --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +--- +title: ChatTTS Forge +emoji: 💬 +colorFrom: yellow +colorTo: purple +sdk: gradio +app_file: webui.py +pinned: true +license: agpl-3.0 +--- + +# 🗣️ ChatTTS-Forge +![GitHub Repo stars](https://img.shields.io/github/stars/lenML/ChatTTS-Forge) + +这个Space展示了强大的[ChatTTS-Forge](https://github.com/lenML/ChatTTS-Forge)项目,基于 ChatTTS 开源模型,生成丰富的文本转语音内容。 + +欢迎随时体验我们的项目,或者复制以便无需排队运行你自己的实例!完整文档请访问我们的[GitHub仓库](https://github.com/lenML/ChatTTS-Forge)。 + +🔎 想了解更多关于SSML语法的信息,请查看我们的[SSML指南](https://github.com/lenML/ChatTTS-Forge/blob/main/docs/SSML.md)。 + +🔨 有关API部署的信息,请参考GitHub上的[部署部分](https://github.com/lenML/ChatTTS-Forge#本地部署)。 + +🚀 如果您想使用 Colab 进行部署,点击一键部署:[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lenML/ChatTTS-Forge/blob/main/colab.ipynb) + +# en +This Space demonstrates the powerful [ChatTTS-Forge](https://github.com/lenML/ChatTTS-Forge) project, based on the open-source ChatTTS model, which generates rich text-to-speech content. + +Feel free to explore our project, or duplicate it to run your own instances without a queue! For the full documentation, please visit our [GitHub repository](https://github.com/lenML/ChatTTS-Forge). + +🔎 To learn more about SSML syntax, check out our [SSML guide](https://github.com/lenML/ChatTTS-Forge/blob/main/docs/SSML.md). + +🔨 For information on deploying the API, please refer to the [deployment section](https://github.com/lenML/ChatTTS-Forge#本地部署) on GitHub. + +🚀 If you want to deploy using Colab, click for one-click deployment: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lenML/ChatTTS-Forge/blob/main/colab.ipynb) + +# styles (Experimental) + +由于自回归模型的特性,我们可以对生成过程进行干扰和控制,目前,仅为实验性质功能 + +# styles table + +文件 `./data/styles.csv` 中包含所有风格,下面是具体的设定 + +> 风格名带有 `_p` 结尾的是注入上下文的风格,可能导致质量下降但是控制更强一点 + +| 风格 | 说明 | +| ------------------------- | -------------------------------------------------------------------------------------------------- | +| advertisement_upbeat | 用兴奋和精力充沛的语气推广产品或服务。 | +| affectionate | 以较高的音调和音量表达温暖而亲切的语气。说话者处于吸引听众注意力的状态。说话者的个性往往是讨喜的。 | +| angry | 表达生气和厌恶的语气。 | +| assistant | 数字助理用的是热情而轻松的语气。 | +| calm | 以沉着冷静的态度说话。语气、音调和韵律与其他语音类型相比要统一得多。 | +| chat | 表达轻松随意的语气。 | +| cheerful | 表达积极愉快的语气。 | +| customerservice | 以友好热情的语气为客户提供支持。 | +| depressed | 调低音调和音量来表达忧郁、沮丧的语气。 | +| disgruntled | 表达轻蔑和抱怨的语气。这种情绪的语音表现出不悦和蔑视。 | +| documentary-narration | 用一种轻松、感兴趣和信息丰富的风格讲述纪录片,适合配音纪录片、专家评论和类似内容。 | +| embarrassed | 在说话者感到不舒适时表达不确定、犹豫的语气。 | +| empathetic | 表达关心和理解。 | +| envious | 当你渴望别人拥有的东西时,表达一种钦佩的语气。 | +| excited | 表达乐观和充满希望的语气。似乎发生了一些美好的事情,说话人对此满意。 | +| fearful | 以较高的音调、较高的音量和较快的语速来表达恐惧、紧张的语气。说话人处于紧张和不安的状态。 | +| friendly | 表达一种愉快、怡人且温暖的语气。听起来很真诚且满怀关切。 | +| gentle | 以较低的音调和音量表达温和、礼貌和愉快的语气。 | +| hopeful | 表达一种温暖且渴望的语气。听起来像是会有好事发生在说话人身上。 | +| lyrical | 以优美又带感伤的方式表达情感。 | +| narration-professional | 以专业、客观的语气朗读内容。 | +| narration-relaxed | 为内容阅读表达一种舒缓而悦耳的语气。 | +| newscast | 以正式专业的语气叙述新闻。 | +| newscast-casual | 以通用、随意的语气发布一般新闻。 | +| newscast-formal | 以正式、自信和权威的语气发布新闻。 | +| poetry-reading | 在读诗时表达出带情感和节奏的语气。 | +| sad | 表达悲伤语气。 | +| serious | 表达严肃和命令的语气。说话者的声音通常比较僵硬,节奏也不那么轻松。 | +| shouting | 表达一种听起来好像声音在远处或在另一个地方的语气,努力让别人听清楚。 | +| sports_commentary | 表达一种既轻松又感兴趣的语气,用于播报体育赛事。 | +| sports_commentary_excited | 用快速且充满活力的语气播报体育赛事精彩瞬间。 | +| whispering | 表达一种柔和的语气,试图发出安静而柔和的声音。 | +| terrified | 表达一种害怕的语气,语速快且声音颤抖。听起来说话人处于不稳定的疯狂状态。 | +| unfriendly | 表达一种冷淡无情的语气。 | + diff --git a/data/load_json_spk.py b/data/load_json_spk.py new file mode 100644 index 0000000000000000000000000000000000000000..164e7f1e8d823080696917edfecba0fab5442c10 --- /dev/null +++ b/data/load_json_spk.py @@ -0,0 +1,20 @@ +import json +from modules.speaker import speaker_mgr + + +data = json.load(open("./data/slct_voice_240605.json", "r")) + +print("load speakers: ", len(data)) + +for id, spk in data.items(): + print(id, spk["describe"]) + name = f"spk_{id}" + describe = spk["describe"] + gender = spk["gender"] + speaker_mgr.create_speaker_from_tensor( + filename=name, + name=describe, + describe=describe, + gender=gender, + tensor=spk["tensor"], + ) diff --git a/data/slct_voice_240605.json b/data/slct_voice_240605.json new file mode 100644 index 0000000000000000000000000000000000000000..77c0e0c3516364ca625a20cbaa5caf53b6993efb --- /dev/null +++ b/data/slct_voice_240605.json @@ -0,0 +1,17030 @@ +{ + "1": { + "gender": "female", + "describe": "声音有点像陈一发", + "tensor": [ + 4.920174598693848, + -1.869746208190918, + -1.7132017612457275, + -0.9349462985992432, + -0.37758100032806396, + 2.2498812675476074, + 8.598373413085938, + 2.832313060760498, + 7.149417877197266, + -14.823704719543457, + 4.040902137756348, + -2.6333675384521484, + -0.952739953994751, + -0.8755201101303101, + 1.5750482082366943, + 0.09360229969024658, + 0.536379873752594, + -4.0122222900390625, + -4.980226039886475, + -0.050527721643447876, + 1.6680951118469238, + 3.134003162384033, + 2.377664804458618, + -10.111128807067871, + -2.6171741485595703, + -0.3308676481246948, + 8.602490425109863, + -13.125202178955078, + -3.421846389770508, + 2.439518451690674, + 11.972027778625488, + -1.4799253940582275, + -3.391841173171997, + -0.21018141508102417, + 0.40820053219795227, + -5.233132362365723, + -2.227834701538086, + -0.48215287923812866, + 3.737802505493164, + 1.1324801445007324, + -0.7616457343101501, + 2.2835874557495117, + 4.256156921386719, + -1.1395034790039062, + -9.688854217529297, + 2.128659248352051, + -0.10401371121406555, + -0.10503488779067993, + 0.7006937861442566, + -2.1900439262390137, + -0.4877392053604126, + -0.8575738668441772, + -0.5517227649688721, + 0.03549960255622864, + -1.631927728652954, + 2.982837200164795, + -0.7364442348480225, + 1.3802738189697266, + -3.816946029663086, + 8.133450508117676, + 1.038588285446167, + 6.736654758453369, + 0.610346794128418, + -5.385216236114502, + -0.5478577613830566, + -0.17147645354270935, + -0.31881994009017944, + 11.150802612304688, + 5.722754001617432, + 4.470250606536865, + 1.1215715408325195, + 0.7487375736236572, + -2.192920684814453, + 0.5026528239250183, + -1.5692771673202515, + 0.04432523250579834, + -1.6436948776245117, + 3.0349831581115723, + -2.5930469036102295, + 2.347980260848999, + 0.09017759561538696, + -3.2338707447052, + 0.2875867187976837, + -0.12349474430084229, + 6.786825656890869, + -1.5183994770050049, + -0.3860214948654175, + -0.580916702747345, + 1.663362741470337, + -3.114089012145996, + 0.6789265871047974, + 0.11757820844650269, + 4.173279762268066, + -4.033939838409424, + 8.682621955871582, + -10.636322021484375, + -0.20839443802833557, + -2.4579758644104004, + 0.7377820014953613, + -4.68248176574707, + -1.0134214162826538, + -1.6414884328842163, + 1.7630594968795776, + 0.4681098759174347, + -0.41658681631088257, + -0.17021918296813965, + 3.924041986465454, + 1.8920166492462158, + 7.235175132751465, + 1.9721827507019043, + -0.02588808536529541, + 9.360758781433105, + -1.135146141052246, + 0.390316903591156, + 1.6965192556381226, + 3.8185956478118896, + -2.5100057125091553, + -0.7862428426742554, + -1.14351487159729, + -0.6100760102272034, + -0.5293179750442505, + -0.6415067315101624, + -6.71793270111084, + -7.598003387451172, + 10.481423377990723, + 4.588684558868408, + -6.6124396324157715, + 4.613828182220459, + 3.019540786743164, + -2.1571693420410156, + 3.1872730255126953, + 4.162038326263428, + -1.4612876176834106, + -2.4281487464904785, + 0.833203911781311, + 1.4653042554855347, + -1.7570827007293701, + -5.143495082855225, + -6.736935138702393, + 4.695147514343262, + 0.3166985511779785, + -0.996975839138031, + -1.61958646774292, + 5.508022785186768, + -0.13433954119682312, + -2.9025397300720215, + 2.849198579788208, + 2.7422351837158203, + -0.30775126814842224, + 2.1749324798583984, + -0.5126080513000488, + -5.112812042236328, + -0.421909898519516, + 0.9419159293174744, + 1.0273075103759766, + -1.3903779983520508, + -21.59528350830078, + 4.847174644470215, + -0.7454193830490112, + 5.765843391418457, + 2.0779545307159424, + -0.23629936575889587, + 6.228811264038086, + 1.0681068897247314, + -2.4546666145324707, + 0.8487588167190552, + 1.3097459077835083, + 0.5564928650856018, + 4.145725727081299, + -7.3783369064331055, + 8.835065841674805, + 0.09930264949798584, + -9.427643775939941, + -1.1950156688690186, + -2.4090793132781982, + 1.336540699005127, + 3.849628210067749, + -2.0865187644958496, + -0.8679699301719666, + 0.6668643951416016, + 1.5051045417785645, + 1.8624781370162964, + -1.15422523021698, + -5.1467604637146, + -0.6352446675300598, + -4.35318660736084, + -4.230755805969238, + -1.973196029663086, + -4.856926918029785, + 4.327689170837402, + 0.9820353388786316, + -1.3190770149230957, + -3.8290936946868896, + -0.974743664264679, + 1.221196174621582, + -13.0864839553833, + -2.120689868927002, + -2.2906525135040283, + 1.8350023031234741, + -1.1340651512145996, + -7.545223236083984, + -5.014791488647461, + -0.2665136456489563, + -5.978692531585693, + 8.954651832580566, + 0.1758108288049698, + -3.239204168319702, + 2.9191346168518066, + 2.34155011177063, + -0.18226784467697144, + 8.306407928466797, + -2.54229736328125, + -2.643375873565674, + -6.356899261474609, + -0.9191651344299316, + 0.6588131189346313, + -4.857791423797607, + 1.9646806716918945, + -1.3815138339996338, + 16.448104858398438, + -5.173426151275635, + 0.4404822587966919, + -0.14893364906311035, + 15.234572410583496, + 3.3411238193511963, + 2.9631638526916504, + -1.7543528079986572, + 1.2841975688934326, + -0.5897563695907593, + 0.6286247372627258, + -2.3693578243255615, + -16.179529190063477, + -2.588085889816284, + -4.255232334136963, + 3.6078438758850098, + -3.183396339416504, + 0.8658466339111328, + 2.569152593612671, + 2.3274528980255127, + -1.330082654953003, + -0.9470537900924683, + -0.7458869218826294, + -4.992029190063477, + -4.499910831451416, + 1.6458464860916138, + -0.9326127767562866, + -1.1804516315460205, + 3.8070709705352783, + 10.683042526245117, + -0.8813427686691284, + 4.302681922912598, + -0.28493642807006836, + 2.4468398094177246, + 3.5172834396362305, + -9.147306442260742, + 5.882630348205566, + 2.066110610961914, + 8.848394393920898, + -0.12581992149353027, + 2.4144511222839355, + -0.15722134709358215, + 1.0051934719085693, + -0.5712314248085022, + 1.132248878479004, + -0.07267962396144867, + 1.635616421699524, + -6.277506351470947, + 16.430076599121094, + 1.1228431463241577, + 0.6113490462303162, + 0.45655569434165955, + -2.79864501953125, + -0.5995845794677734, + -2.8456783294677734, + 1.3767950534820557, + -6.7149200439453125, + 1.8679842948913574, + -2.254408121109009, + 2.97501277923584, + -0.029427558183670044, + -1.7929441928863525, + -0.668826162815094, + -9.546034812927246, + -2.2619757652282715, + 4.391816139221191, + 4.550719261169434, + 1.8184986114501953, + -1.0089993476867676, + -10.525728225708008, + -0.413173645734787, + -2.5439419746398926, + -0.6277903318405151, + 3.163295030593872, + 0.6210290789604187, + 1.1635420322418213, + 2.2146172523498535, + 4.788060188293457, + -8.047313690185547, + 3.1942968368530273, + 0.8446482419967651, + -1.0960566997528076, + 0.8912463188171387, + 3.3002374172210693, + 3.661714553833008, + 3.551353931427002, + -1.2517857551574707, + 4.919895648956299, + 3.2957069873809814, + 1.760500431060791, + -3.1388511657714844, + 0.3706178665161133, + -1.7291593551635742, + -3.398336410522461, + -0.46739664673805237, + 3.4798121452331543, + -1.6548285484313965, + -2.6832222938537598, + 1.4766901731491089, + 0.5731627941131592, + 0.40833359956741333, + -1.4768177270889282, + -2.885788917541504, + 3.881561756134033, + 3.1301558017730713, + 6.864509105682373, + 15.145464897155762, + 6.2108659744262695, + -4.550100326538086, + -3.359905242919922, + 1.0671873092651367, + 2.1751246452331543, + -15.852673530578613, + 1.2927762269973755, + 3.0387918949127197, + -3.095522880554199, + 10.998750686645508, + -16.305145263671875, + -2.045149803161621, + -2.560133934020996, + -4.537158966064453, + -0.4198158085346222, + -0.2539856433868408, + -2.257235527038574, + -2.7254457473754883, + -2.7506539821624756, + 16.209068298339844, + -1.1804639101028442, + 2.0672340393066406, + -2.2951953411102295, + 9.663533210754395, + 1.03141188621521, + 2.4430365562438965, + 3.727113723754883, + 1.042832374572754, + -3.1439011096954346, + 2.7306625843048096, + -1.3583407402038574, + 0.8971457481384277, + -1.7689485549926758, + -2.901867389678955, + -2.014214038848877, + -1.027837872505188, + 8.292218208312988, + 0.26081711053848267, + -0.024060726165771484, + -14.796781539916992, + -0.1328108310699463, + 2.7268824577331543, + 0.2212589681148529, + 4.7093377113342285, + 6.26617956161499, + -2.326725959777832, + 3.4189889430999756, + 6.045196056365967, + 1.5032767057418823, + 1.3312957286834717, + -1.2574366331100464, + 1.4935407638549805, + -13.847509384155273, + 0.8184583187103271, + 13.359435081481934, + 1.4691420793533325, + 2.7727534770965576, + -12.679079055786133, + 3.8052260875701904, + 8.452311515808105, + -7.978231430053711, + -4.0344367027282715, + -0.8567373156547546, + -5.004733085632324, + -1.64524507522583, + -3.876579761505127, + -2.959615468978882, + -5.870860576629639, + 3.2817399501800537, + 2.91231632232666, + 2.910634994506836, + -3.116252899169922, + -6.296098232269287, + -1.5658360719680786, + 1.1307034492492676, + 0.15579485893249512, + -0.015673398971557617, + 1.2679328918457031, + 2.758889675140381, + 1.3061703443527222, + -0.718701958656311, + -1.3728362321853638, + 16.24376106262207, + 5.411893844604492, + -0.3052937984466553, + 2.42240571975708, + 4.2217888832092285, + -0.3042706251144409, + -4.056606292724609, + 0.4752441644668579, + -7.301877498626709, + 3.1615915298461914, + -1.6803057193756104, + 8.006512641906738, + -1.1763889789581299, + -4.9336371421813965, + -0.8790977001190186, + -0.6550318002700806, + 0.9198558330535889, + 6.9974846839904785, + -2.4515175819396973, + -0.3343982696533203, + 1.5387276411056519, + 8.362483978271484, + -0.9617505073547363, + 0.45473819971084595, + -2.933469772338867, + -1.029887318611145, + -1.438445806503296, + 2.6411921977996826, + -4.552111625671387, + 3.8729500770568848, + 1.3572289943695068, + -0.3519600033760071, + 3.9939894676208496, + 0.17470185458660126, + 1.2213915586471558, + 0.02432262897491455, + 6.534300804138184, + 0.13632285594940186, + -1.3147904872894287, + -2.7967467308044434, + 2.5360217094421387, + -0.6668331623077393, + 3.7748093605041504, + 1.331089735031128, + -0.06908857822418213, + 0.5208933353424072, + -1.4392231702804565, + 1.7924156188964844, + -1.4288073778152466, + -0.6654989719390869, + 6.248370170593262, + -6.831850051879883, + 2.010829448699951, + -4.000683784484863, + 3.317530393600464, + -4.458334445953369, + 1.2565979957580566, + 6.5697174072265625, + 2.09843111038208, + -1.7286746501922607, + -5.139510631561279, + 2.1214964389801025, + 0.2752610445022583, + -7.001262664794922, + -1.4460043907165527, + 3.0784802436828613, + -1.0270261764526367, + -0.2734496593475342, + -2.3999640941619873, + -9.957401275634766, + 1.9039170742034912, + -5.049892425537109, + -1.0270496606826782, + -2.065023899078369, + 2.3923985958099365, + 0.24831587076187134, + 2.7474093437194824, + 0.14687924087047577, + 2.5945396423339844, + -0.7148599624633789, + -5.943282604217529, + 3.5877203941345215, + 2.3694591522216797, + -0.33390378952026367, + 1.2036478519439697, + -6.822054386138916, + 10.276172637939453, + 7.901592254638672, + -4.031211853027344, + -4.2335638999938965, + 1.9653412103652954, + -0.3825463056564331, + -1.9241095781326294, + 3.011847496032715, + 1.9564173221588135, + -1.3472548723220825, + -10.287496566772461, + -0.22870826721191406, + -2.727243185043335, + 0.05635273456573486, + -0.8984140157699585, + 8.067429542541504, + 2.688715934753418, + 2.2119693756103516, + 1.838621735572815, + 4.093429088592529, + -1.739152193069458, + 1.5016565322875977, + 3.2499680519104004, + 3.067958116531372, + -2.3794496059417725, + -5.849868297576904, + -2.814250946044922, + -3.7913098335266113, + -8.885632514953613, + 1.8861958980560303, + -0.08162641525268555, + -0.22730109095573425, + 0.5647813081741333, + 0.3316020369529724, + -8.497567176818848, + 0.5326386094093323, + 1.524940013885498, + 2.49172043800354, + 1.0251877307891846, + 0.01039975881576538, + -6.360742568969727, + -1.0726908445358276, + 3.521099805831909, + -20.89938735961914, + 3.8516805171966553, + 5.025920867919922, + -1.9609839916229248, + -0.43303215503692627, + -0.8128527402877808, + 0.33326345682144165, + -1.2676692008972168, + 0.3214079737663269, + -5.302408218383789, + -1.2858660221099854, + -2.3331637382507324, + -4.275376319885254, + -1.7996704578399658, + -1.1005635261535645, + 4.443465709686279, + 5.007880687713623, + -0.5229277610778809, + -4.937347888946533, + 3.881920337677002, + -2.9705731868743896, + 8.39565658569336, + 1.146209478378296, + 4.020198345184326, + -10.132383346557617, + 2.0055346488952637, + 1.7435263395309448, + 3.3461527824401855, + -2.7520394325256348, + -1.0688942670822144, + 1.9610780477523804, + -0.28443777561187744, + -3.8963375091552734, + 1.0257444381713867, + 2.3131418228149414, + 1.2011247873306274, + -5.429959774017334, + 2.53454327583313, + 13.774511337280273, + -4.51471471786499, + 5.429451942443848, + -2.1821484565734863, + 1.838890790939331, + 0.30892395973205566, + -2.2437949180603027, + -5.484969139099121, + 0.03272438049316406, + 2.8912551403045654, + -2.6087241172790527, + -1.5614632368087769, + -7.776717662811279, + 2.3399009704589844, + -2.4301750659942627, + -1.5701017379760742, + -0.4261730909347534, + 3.515059232711792, + 5.740559101104736, + -0.0492904931306839, + 3.909109115600586, + 3.5209414958953857, + 2.810110569000244, + -2.760878801345825, + 4.998473167419434, + 1.9835394620895386, + -1.1424694061279297, + -2.8368189334869385, + 7.60743522644043, + 1.1539833545684814, + 1.7819814682006836, + 5.647100448608398, + 1.083714485168457, + -6.854426383972168, + -2.887131929397583, + -5.070019245147705, + -1.7804546356201172, + -2.7663698196411133, + -2.890259265899658, + 1.946584701538086, + -3.4798691272735596, + -1.1982924938201904, + 7.4186224937438965, + -0.9873309135437012, + -0.2363588511943817, + 3.978374719619751, + -3.731423854827881, + 0.36771631240844727, + -0.08064800500869751, + 3.1020560264587402, + -0.7139465808868408, + 0.9918049573898315, + -1.9311556816101074, + 4.263083457946777, + -2.7379555702209473, + -0.2155332863330841, + -13.076830863952637, + 1.5151722431182861, + -0.10356885194778442, + -7.391122341156006, + -1.4051814079284668, + -4.723787307739258, + 2.0854339599609375, + 5.915645122528076, + 4.094266891479492, + 5.051909446716309, + 1.2475894689559937, + -3.5995750427246094, + -2.2059741020202637, + 0.6606571674346924, + -5.979715347290039, + -1.1574764251708984, + 1.8350236415863037, + -5.061601161956787, + -6.515567779541016, + 1.2186338901519775, + 0.12581771612167358, + -0.2959330677986145, + -7.53695821762085, + 3.2101478576660156, + -1.135510802268982, + 3.160296678543091, + -6.434854984283447, + -3.2820186614990234, + 1.5671789646148682, + 4.616850852966309, + 3.347196578979492, + -4.538607597351074, + -5.047244071960449, + -0.17939633131027222, + -3.6419756412506104, + -5.173664093017578, + 9.748540878295898, + -3.306802749633789, + 1.4344666004180908, + 1.8079215288162231, + -3.850872039794922, + -2.0794148445129395, + 2.6109812259674072, + 1.2406721115112305, + -1.0551767349243164, + 1.379051923751831, + 1.1719269752502441, + -4.132643222808838, + -7.095626354217529, + -3.241511344909668, + -0.8321233987808228, + 6.421873569488525, + -2.197119951248169, + 0.7068390250205994, + 6.078878879547119, + 7.869111061096191, + 0.9717793464660645, + 11.09844970703125, + 11.853650093078613, + 1.806703805923462, + 3.274224281311035, + 4.010034084320068, + 6.933138370513916, + -18.042238235473633, + 2.5129330158233643, + 9.248937606811523, + 13.966419219970703, + -1.0477319955825806, + -8.73896598815918, + 2.471482276916504, + 0.512531042098999, + 2.7681567668914795, + 1.8017730712890625, + -8.246063232421875, + 1.9969985485076904, + -2.9064502716064453, + 1.5318517684936523, + -0.6358776688575745, + 4.936244010925293, + 4.490049362182617, + 2.8114218711853027, + -0.6937977075576782, + -1.1176756620407104, + 1.4703797101974487, + -2.3655617237091064, + 4.470565319061279, + 2.064453125, + 1.7327020168304443, + -2.396200656890869, + 5.0138444900512695, + 0.44489678740501404, + 1.8744242191314697, + 3.253389835357666, + 1.5910428762435913, + -2.653625249862671, + -4.15688419342041, + 3.950326919555664, + -5.322956085205078, + -1.0080440044403076, + -4.827030658721924, + 0.21419203281402588, + 0.917827844619751, + 2.236433744430542, + -5.155881881713867, + 1.8143067359924316, + 2.347874164581299, + 1.948526382446289, + 1.7854727506637573, + 3.959897756576538, + 0.9324379563331604, + 0.07324892282485962, + -3.214113235473633, + 5.7438812255859375, + -7.1762471199035645, + 0.3508915305137634, + 0.20112931728363037, + 0.43207883834838867, + 0.1312570571899414, + -2.380305290222168, + 3.5424482822418213, + 7.7681474685668945, + -0.7592496871948242, + 1.2597479820251465, + -1.69123113155365, + 2.230262279510498, + 3.3427493572235107, + -3.9412591457366943, + -0.42548906803131104, + 2.257021427154541, + 1.2903746366500854, + -1.3011994361877441, + -4.410524368286133, + 7.947969436645508, + 2.987602472305298, + 2.9376652240753174, + 3.984252452850342, + 1.7419390678405762 + ] + }, + "2": { + "gender": "male", + "describe": "纯情男大学生", + "tensor": [ + 2.715526819229126, + -4.690955638885498, + -7.532233238220215, + 1.8891977071762085, + -1.6074213981628418, + 2.9016616344451904, + 4.026203155517578, + -2.5868899822235107, + 6.4268879890441895, + 14.335902214050293, + -1.880004644393921, + 5.524463176727295, + -0.7363237142562866, + 0.8871119022369385, + 1.837251901626587, + 0.18730032444000244, + -0.5217635035514832, + 1.8210515975952148, + 3.8693511486053467, + -1.164892315864563, + 8.953399658203125, + -0.6050459742546082, + -0.9386141300201416, + 16.293392181396484, + -0.5029006600379944, + 0.8942825198173523, + -8.617229461669922, + -7.282776832580566, + 0.6661158800125122, + -2.4071292877197266, + 4.7365264892578125, + 1.471512794494629, + -1.2019225358963013, + 0.5266652703285217, + 1.208139181137085, + 3.6704859733581543, + -5.534359455108643, + -9.91045093536377, + 0.30039262771606445, + -2.890136957168579, + -3.5237419605255127, + 6.719061374664307, + 2.900470495223999, + 0.0058498382568359375, + -3.5579612255096436, + 0.3656386137008667, + -0.26279687881469727, + 2.200854778289795, + -1.4258184432983398, + -4.2130937576293945, + -0.5446741580963135, + -3.4782400131225586, + 1.806814193725586, + -0.671582043170929, + 4.691220760345459, + 1.6332709789276123, + 0.7876812815666199, + -3.1704423427581787, + 5.509512424468994, + 3.4813692569732666, + 1.1337590217590332, + 6.419449806213379, + 3.9969284534454346, + 1.7048711776733398, + 0.3779751658439636, + 0.16936317086219788, + -3.3652255535125732, + 0.33903491497039795, + 4.157031059265137, + 1.411022663116455, + 2.157848358154297, + 0.16044551134109497, + 0.22092565894126892, + -6.8303070068359375, + -7.4548444747924805, + 0.22406014800071716, + 2.544332265853882, + -1.4308909177780151, + -1.0049943923950195, + 2.3468570709228516, + 4.680844306945801, + 2.6226658821105957, + 2.5171263217926025, + 1.6745940446853638, + 2.4188756942749023, + -3.272507667541504, + 2.0769810676574707, + 2.7540464401245117, + 2.306981325149536, + -9.610599517822266, + 7.518847465515137, + 3.3433523178100586, + 1.8787901401519775, + -0.9852896928787231, + 0.8628706932067871, + -6.637260913848877, + -0.31817811727523804, + 0.9074119329452515, + 0.6261914968490601, + -9.867932319641113, + 5.72069787979126, + 0.8279072642326355, + 2.2316904067993164, + 3.663867235183716, + -4.768877029418945, + 0.8891568183898926, + 4.311737060546875, + -7.90360164642334, + 9.300586700439453, + 0.9369562864303589, + 0.2561838626861572, + -1.7463762760162354, + 3.5046939849853516, + 4.316341400146484, + 3.4708127975463867, + -5.22018575668335, + -1.9080617427825928, + 0.8253235220909119, + 7.791868209838867, + 0.26017630100250244, + 4.1153388023376465, + 3.0307767391204834, + -12.753536224365234, + 4.235116004943848, + -5.064539909362793, + 3.503619909286499, + -3.247019052505493, + -0.5798568725585938, + -2.0355796813964844, + 1.991945743560791, + 0.12989729642868042, + -1.5666940212249756, + 1.4249008893966675, + 0.7738237977027893, + -1.5819834470748901, + 3.184309482574463, + 0.31132078170776367, + -3.481541633605957, + -7.426799297332764, + -1.1730726957321167, + 2.0055899620056152, + -2.9172275066375732, + -4.28165340423584, + 3.4518487453460693, + -0.7350308895111084, + 4.696822166442871, + 0.039021819829940796, + 2.7054905891418457, + -0.7050774097442627, + 0.42623400688171387, + 1.1946462392807007, + 0.9771864414215088, + 7.425861835479736, + 5.227228164672852, + -0.8504738807678223, + -0.06306151300668716, + 4.549283981323242, + 1.9231986999511719, + -11.098581314086914, + -1.1563900709152222, + 8.238529205322266, + -2.116213083267212, + 0.2448544204235077, + -5.52625846862793, + -4.416193962097168, + 6.111729621887207, + -0.017912238836288452, + -0.928476095199585, + -1.063854455947876, + 7.390430450439453, + 2.8364500999450684, + 4.54207706451416, + 8.606281280517578, + 3.259019613265991, + 1.2000885009765625, + 1.274216651916504, + -0.01468437910079956, + -0.23708787560462952, + -1.2736929655075073, + 1.3602392673492432, + 5.691405773162842, + -2.3473868370056152, + 1.2548069953918457, + 0.9500119090080261, + 4.898525714874268, + 3.1475045680999756, + 14.166290283203125, + -6.768446922302246, + 4.5696611404418945, + -3.189847469329834, + -3.418597459793091, + 2.49308180809021, + -8.581777572631836, + -4.017978668212891, + 1.2282600402832031, + -11.599832534790039, + -3.671509027481079, + -1.0168132781982422, + 2.6144630908966064, + -4.369224548339844, + 1.035874366760254, + -4.753545761108398, + -1.5243606567382812, + -1.7193282842636108, + 2.6876702308654785, + 0.7853090763092041, + -1.7525203227996826, + 3.883566379547119, + 10.364666938781738, + -1.2958793640136719, + 6.272950649261475, + 1.0706019401550293, + -3.0289642810821533, + 4.985968112945557, + -2.1978766918182373, + -0.738507866859436, + -1.493422269821167, + -7.505505561828613, + 2.3449699878692627, + 9.968303680419922, + -1.6315466165542603, + -7.165476322174072, + 4.915637969970703, + 5.901004791259766, + 4.425136566162109, + -6.1013288497924805, + 3.126680374145508, + -4.7334747314453125, + -1.500734806060791, + 1.4584342241287231, + -0.48006486892700195, + -5.406195163726807, + 0.7717392444610596, + 2.652172088623047, + 0.7085802555084229, + 5.358815670013428, + 0.4280521273612976, + -0.722395658493042, + 3.5312538146972656, + 0.03194260597229004, + -2.0695228576660156, + 2.7986974716186523, + -9.19631290435791, + -0.09256632626056671, + 0.12492036819458008, + 1.163789987564087, + -0.07285630702972412, + 5.599362850189209, + 6.719266891479492, + -0.2834254503250122, + -2.7881879806518555, + 0.2878458499908447, + -1.3069303035736084, + -0.8215155601501465, + 7.019140243530273, + -3.607048511505127, + -2.2986154556274414, + 8.089608192443848, + -1.8525655269622803, + -0.17292392253875732, + 1.5664823055267334, + 0.6609233617782593, + 0.1754157543182373, + -1.7437126636505127, + -0.032658547163009644, + 1.1404316425323486, + -1.2746683359146118, + 16.537538528442383, + 2.428495407104492, + 2.142429828643799, + 1.6874737739562988, + 1.3874739408493042, + 8.06811237335205, + -3.4954113960266113, + -1.252913236618042, + 2.644676685333252, + 8.651508331298828, + -2.7135605812072754, + -0.6476468443870544, + 7.011102199554443, + 0.17821550369262695, + 1.3520097732543945, + -1.5948281288146973, + 6.191143989562988, + 2.9590251445770264, + 0.8834433555603027, + 2.125227928161621, + 0.9418790340423584, + 0.8074042797088623, + -4.520700454711914, + -5.784855842590332, + -1.5654864311218262, + -1.735321044921875, + 6.357981204986572, + -2.3277640342712402, + 3.519613265991211, + 1.7732089757919312, + 11.266485214233398, + -0.022552207112312317, + 0.98298180103302, + 1.4971206188201904, + 0.572928786277771, + -4.395893096923828, + -1.0669302940368652, + -2.866550922393799, + -1.885230541229248, + 9.916122436523438, + 2.8776419162750244, + -2.5128138065338135, + -2.7862167358398438, + 1.3377747535705566, + -0.66599440574646, + 9.180127143859863, + 7.539520263671875, + 2.416679859161377, + -1.8882112503051758, + 2.0552754402160645, + 1.2975952625274658, + 1.6550639867782593, + -1.133953332901001, + -5.415308952331543, + 1.4015628099441528, + 0.0787423849105835, + 0.681668758392334, + -1.2723109722137451, + 9.737536430358887, + -6.50914192199707, + -2.600233793258667, + -0.03758203983306885, + -7.129917144775391, + -1.697163462638855, + -1.466761589050293, + -5.705090522766113, + 1.766526460647583, + -3.7298052310943604, + -4.439692497253418, + 8.902618408203125, + -19.70374870300293, + -0.8614232540130615, + 2.896122455596924, + -1.2687232494354248, + 7.545831203460693, + -3.1190237998962402, + 3.2149178981781006, + 0.6828848719596863, + 13.179759979248047, + -4.307463645935059, + 1.0129318237304688, + -0.30727624893188477, + -1.2384941577911377, + -5.912294864654541, + 0.9114807844161987, + 0.2687975764274597, + 1.6222074031829834, + 0.8968907594680786, + 0.18802857398986816, + -2.6005990505218506, + 1.4964826107025146, + -2.1950368881225586, + 5.025912284851074, + -0.22632873058319092, + -1.3021583557128906, + -15.186531066894531, + 4.893261432647705, + -6.936275482177734, + -7.429530620574951, + -2.980776309967041, + -1.5637524127960205, + 3.1427910327911377, + 0.6060366630554199, + 2.9068071842193604, + 1.2065385580062866, + -4.988542079925537, + 3.603792190551758, + -14.235221862792969, + 1.3723149299621582, + -2.7240498065948486, + -4.650763511657715, + -11.150389671325684, + -2.3087778091430664, + -5.19480037689209, + 0.5640476942062378, + 1.5073713064193726, + -3.0932347774505615, + 1.5205613374710083, + 1.207741141319275, + -1.6678555011749268, + 6.343547821044922, + 0.3519883155822754, + 1.7756149768829346, + -0.37832021713256836, + -3.5442209243774414, + 0.08365705609321594, + -1.1159398555755615, + 5.186623573303223, + 3.1436667442321777, + 1.8259519338607788, + 3.3603429794311523, + 2.209665298461914, + -4.96297025680542, + -0.41513538360595703, + 6.49475622177124, + -3.4370617866516113, + 1.2615259885787964, + 8.383772850036621, + -2.21807861328125, + 2.632293224334717, + -1.7731359004974365, + 21.33919906616211, + -27.403425216674805, + -1.5319563150405884, + 2.94700026512146, + -2.6683220863342285, + 3.8671722412109375, + 1.4068654775619507, + -1.8225789070129395, + 5.37190055847168, + 0.9601336121559143, + 4.190736770629883, + 1.3776955604553223, + -2.0093891620635986, + -4.395816326141357, + -2.0897207260131836, + -4.141630172729492, + 1.2437468767166138, + 2.9003140926361084, + -2.5783019065856934, + 10.22706413269043, + 0.5256032347679138, + -2.0981967449188232, + -4.9484429359436035, + -0.8371865153312683, + -3.0291457176208496, + 3.9685139656066895, + -3.688375473022461, + 2.921494722366333, + -5.050346851348877, + -4.273754596710205, + -0.9842921495437622, + 6.518200397491455, + -2.431975841522217, + 2.3730084896087646, + 0.14040321111679077, + 4.521897315979004, + -2.3158435821533203, + -2.882727861404419, + 16.787864685058594, + 6.778237342834473, + 1.0731419324874878, + 3.705717086791992, + -2.2622857093811035, + 1.3217480182647705, + 0.6318858861923218, + 2.8110458850860596, + -0.8138176202774048, + -0.4029611349105835, + -2.0332961082458496, + 3.3109936714172363, + 6.469330787658691, + -1.8085596561431885, + 2.385692596435547, + 6.370118618011475, + 5.770049571990967, + 4.374469757080078, + -1.8300248384475708, + 0.06460562348365784, + 1.075353741645813, + 18.35987663269043, + 1.2870073318481445, + 0.13122200965881348, + -2.763681411743164, + 4.54857063293457, + -0.23910588026046753, + -6.389564037322998, + -1.8737338781356812, + -2.3020288944244385, + -1.6687694787979126, + 6.089890956878662, + 1.7422953844070435, + 0.5815668106079102, + -2.212223529815674, + 0.03029632568359375, + 0.3159191310405731, + 3.0125343799591064, + 0.7549549341201782, + 2.0913987159729004, + 3.4905362129211426, + 4.922084808349609, + 2.272146463394165, + 0.7114260196685791, + 0.9921406507492065, + 2.7063965797424316, + 12.259419441223145, + -1.786894679069519, + 15.642424583435059, + 1.9764384031295776, + 3.6673426628112793, + 4.852342128753662, + -2.2577552795410156, + 1.286460041999817, + -0.6341824531555176, + 4.403896331787109, + 5.673203468322754, + -2.098240852355957, + 2.8102002143859863, + -9.096586227416992, + -0.4369877576828003, + 3.7661712169647217, + -3.508009433746338, + 7.399144649505615, + 0.6867895126342773, + -0.58241206407547, + -5.575905799865723, + 3.1940345764160156, + -7.926918983459473, + -5.0892157554626465, + 4.222906589508057, + -1.6928272247314453, + -1.4254286289215088, + 6.7791876792907715, + 0.6949820518493652, + -0.23126256465911865, + 3.1727802753448486, + -0.8173204660415649, + -0.8889027833938599, + -3.47029185295105, + -12.508867263793945, + -1.421282410621643, + 3.097848892211914, + -2.5963501930236816, + 0.848315954208374, + 1.2332682609558105, + -1.75383460521698, + -1.8352324962615967, + 1.336707353591919, + 4.112000465393066, + 0.15589994192123413, + -12.239001274108887, + -1.854588508605957, + 0.7354817390441895, + -0.9618465900421143, + -0.0832982063293457, + 0.27014434337615967, + -1.0554146766662598, + 2.393988609313965, + -3.3183720111846924, + -4.952419281005859, + 2.649921417236328, + -0.49123096466064453, + 2.085871458053589, + -4.242769718170166, + -1.6055961847305298, + -7.094061851501465, + -1.4192498922348022, + -4.179354190826416, + 1.95912504196167, + 3.5847063064575195, + -6.097533226013184, + 1.334922194480896, + -1.8639909029006958, + -6.021224021911621, + -3.646172523498535, + -0.38497593998908997, + 1.8535470962524414, + -1.02692711353302, + -1.704479694366455, + -1.4412420988082886, + -1.6410608291625977, + -3.1112236976623535, + 0.013753712177276611, + -5.21232795715332, + 3.2400593757629395, + 3.1967217922210693, + 2.4571361541748047, + -1.7459686994552612, + 9.887433052062988, + 2.689964771270752, + 0.284612238407135, + -3.072868585586548, + -4.198925971984863, + 1.5814274549484253, + 5.926227569580078, + 0.20320051908493042, + -5.995279788970947, + 1.116442322731018, + 1.8645519018173218, + 3.7530856132507324, + -4.38774299621582, + 7.309091567993164, + 0.6046216487884521, + -1.5161774158477783, + 0.49025964736938477, + -1.7409117221832275, + -3.0983431339263916, + -1.086012601852417, + -4.034039497375488, + -0.7016981840133667, + -1.5919371843338013, + -1.8176352977752686, + 9.261964797973633, + 0.6582112312316895, + 4.704986572265625, + 0.5380108952522278, + 0.7026210427284241, + 5.030004978179932, + 1.9337204694747925, + -0.1479397714138031, + 1.2200884819030762, + -10.01003360748291, + -4.009701251983643, + -6.589779853820801, + -2.739659309387207, + 0.11997964978218079, + 0.28143584728240967, + 1.6918659210205078, + 5.958367824554443, + -7.6357269287109375, + -2.122687816619873, + 3.4841599464416504, + 2.775916337966919, + -0.47214460372924805, + -1.2908430099487305, + 2.1404223442077637, + 2.664113759994507, + 0.6809664964675903, + 2.2998955249786377, + 1.4391610622406006, + -1.5640769004821777, + -2.269556999206543, + 3.1176376342773438, + 0.7784305214881897, + -5.2292914390563965, + -0.23363666236400604, + -1.939432144165039, + 0.3300647735595703, + 1.4199577569961548, + 3.4154701232910156, + 0.9801410436630249, + -2.7850334644317627, + -3.7796871662139893, + 2.444516658782959, + -1.3101922273635864, + -2.286378860473633, + -1.1781799793243408, + 0.8600802421569824, + -4.881753444671631, + 2.147334337234497, + -2.0669639110565186, + 17.338354110717773, + -6.2750444412231445, + 7.38665771484375, + 1.891479730606079, + -0.025680243968963623, + -8.329111099243164, + -0.01922696828842163, + 4.508927822113037, + -3.734480857849121, + -0.8986649513244629, + 3.644233226776123, + -0.027414977550506592, + -10.087028503417969, + -2.6422221660614014, + 0.143915057182312, + 7.406315326690674, + -0.6991904973983765, + 1.5701053142547607, + -1.5675592422485352, + -7.141575336456299, + 16.25891876220703, + 1.2584580183029175, + 7.003187656402588, + 3.698899745941162, + -0.8377270698547363, + -0.13644342124462128, + -0.45461392402648926, + -2.328864574432373, + 2.202784299850464, + -2.036626100540161, + -3.970428228378296, + 4.981101989746094, + -2.9986870288848877, + 0.2791346311569214, + -8.989184379577637, + -1.2685272693634033, + 2.0844390392303467, + -0.39971470832824707, + 13.235663414001465, + -2.1651065349578857, + 2.9834096431732178, + -5.335531711578369, + -2.252286195755005, + -1.7586952447891235, + -2.4923338890075684, + 2.896486282348633, + 4.584746360778809, + -0.8788877725601196, + 5.194128513336182, + 8.622148513793945, + 0.5523722171783447, + -2.563380479812622, + 0.3074990510940552, + -0.9562010765075684, + -4.002928733825684, + 1.7303478717803955, + -0.4360809326171875, + -0.7404747009277344, + -2.380186080932617, + 1.2834833860397339, + -1.4568184614181519, + 5.443216323852539, + 1.3658266067504883, + 3.7059154510498047, + 2.0809168815612793, + -0.044790029525756836, + 1.066088318824768, + -1.5270392894744873, + 2.0186328887939453, + -0.3500688970088959, + -1.1634151935577393, + -0.009807705879211426, + -4.6354498863220215, + -0.06278929114341736, + 5.86417818069458, + 2.6359479427337646, + -0.6213060617446899, + 3.88348650932312, + -0.36691558361053467, + 1.683215618133545, + -0.7388863563537598, + -1.511181116104126, + -1.0752352476119995, + -0.8441774845123291, + 2.2713675498962402, + 3.8524436950683594, + -5.813567161560059, + 0.7696774005889893, + 0.6937006711959839, + 5.158993244171143, + 4.864609718322754, + 1.5389986038208008, + 2.6036226749420166, + -2.4087765216827393, + 2.6539924144744873, + 5.1005144119262695, + -19.049205780029297, + 2.25887131690979, + -3.3696470260620117, + -1.5245317220687866, + -0.605726957321167, + -0.7421272993087769, + -2.7551305294036865, + -2.0334033966064453, + 1.5992343425750732, + 1.46963632106781, + 0.23119208216667175, + 3.039469003677368, + -4.373601913452148, + 0.549454927444458, + -0.4056033194065094, + -5.925791263580322, + -0.15668287873268127, + 0.9929201602935791, + 0.24146795272827148, + 3.9816055297851562, + -2.847900152206421, + 0.29362842440605164, + 5.477535247802734, + -3.756073474884033 + ] + }, + "3": { + "gender": "male", + "describe": "阳光开朗大男孩", + "tensor": [ + 5.120743751525879, + 2.7746496200561523, + -18.227006912231445, + 1.4079300165176392, + 0.44916096329689026, + 7.979751110076904, + 3.965881824493408, + -0.06384116411209106, + -1.4009425640106201, + 8.330877304077148, + 2.4659993648529053, + 1.0069774389266968, + 0.5025953650474548, + 1.0695682764053345, + 0.3374822437763214, + 0.9381874799728394, + 2.932792901992798, + -2.3860487937927246, + 6.4010090827941895, + 1.287554383277893, + 13.250978469848633, + -4.694284439086914, + 1.8284024000167847, + 16.470375061035156, + -0.4358842670917511, + 5.394802093505859, + -4.421468257904053, + -9.210853576660156, + 1.369512677192688, + -0.6050858497619629, + 0.4322686195373535, + -4.193854331970215, + 0.8912303447723389, + 2.2858331203460693, + 3.607175588607788, + 10.224390983581543, + 0.17608636617660522, + -1.9202028512954712, + 1.7954022884368896, + -1.6895785331726074, + -4.360405921936035, + 1.510292410850525, + 3.9889769554138184, + 2.8551242351531982, + 1.395723819732666, + 1.4712188243865967, + 0.4728916585445404, + 0.574003279209137, + -1.815520167350769, + 1.4937045574188232, + -0.9635807275772095, + -4.41126012802124, + -1.869441032409668, + 1.126862645149231, + 1.3414678573608398, + -0.3130929470062256, + 3.850355625152588, + 1.3343310356140137, + 0.36071550846099854, + 4.6116156578063965, + -3.4998586177825928, + 2.0669775009155273, + 4.699923515319824, + -5.392538547515869, + 0.7482835054397583, + 3.8217639923095703, + -4.604004383087158, + 17.42479705810547, + 8.140535354614258, + 4.714232444763184, + 1.1334724426269531, + -0.042738914489746094, + -0.5476807355880737, + -4.065764904022217, + -2.333230495452881, + -0.9950982332229614, + 0.009004831314086914, + -2.7863616943359375, + -3.038421630859375, + 1.5962307453155518, + -0.9191375970840454, + -4.795480728149414, + 0.5077818036079407, + 3.3609042167663574, + 5.841254234313965, + 1.764798879623413, + -0.8906679153442383, + 1.7344304323196411, + 6.431232929229736, + 1.5084362030029297, + 12.089263916015625, + 0.32386499643325806, + 4.972409248352051, + 5.439972400665283, + -2.593654155731201, + -16.16981315612793, + -0.4959092140197754, + -1.1358413696289062, + 4.406496047973633, + -5.1874494552612305, + 3.6131091117858887, + 0.8074008822441101, + 4.476578235626221, + -1.5589648485183716, + -5.688698768615723, + 2.1098785400390625, + 3.8161754608154297, + 4.544325828552246, + 2.4395480155944824, + 2.8141510486602783, + -1.2340459823608398, + -12.027146339416504, + 0.4449191093444824, + 0.9030038118362427, + -1.3085415363311768, + -0.44800323247909546, + 1.5295748710632324, + 0.32010918855667114, + 5.8595733642578125, + 0.4817948341369629, + 4.792166233062744, + 0.9074109196662903, + 1.7719025611877441, + 0.8045285940170288, + -1.4703576564788818, + 3.887007236480713, + 0.11465632915496826, + 6.90413236618042, + 1.703561782836914, + 2.878096342086792, + 0.10940489172935486, + -2.61789608001709, + 7.888744831085205, + -3.6870107650756836, + 3.0447235107421875, + 4.7598724365234375, + -7.47012996673584, + -0.8479376435279846, + 19.198644638061523, + -3.5214786529541016, + -4.404268264770508, + 3.7506701946258545, + 2.5526368618011475, + 4.829975128173828, + -1.3650329113006592, + 5.317339897155762, + 0.45417070388793945, + -3.558781623840332, + -4.078840732574463, + -1.6024446487426758, + -0.7639995813369751, + 2.4652721881866455, + -2.7978110313415527, + 8.316667556762695, + 1.9989502429962158, + 0.5372844934463501, + -19.432985305786133, + -0.9592732787132263, + -3.6883068084716797, + 2.878377676010132, + 2.76271390914917, + 3.0464677810668945, + 0.17438176274299622, + -4.973336219787598, + 7.020924091339111, + 5.246875762939453, + 1.3157730102539062, + -0.11870937049388885, + 2.652989625930786, + -3.457794427871704, + -2.5341413021087646, + 6.426802158355713, + 14.215365409851074, + -4.212082862854004, + -0.8288666009902954, + 3.401026487350464, + 2.8176965713500977, + 0.8111670613288879, + -0.375871866941452, + -4.941135406494141, + 2.9881365299224854, + -4.8068389892578125, + 4.339609146118164, + 8.853188514709473, + 3.403047561645508, + 0.424873411655426, + -16.7996826171875, + -0.35408735275268555, + 2.46065092086792, + 0.9207969903945923, + 3.3320114612579346, + 2.1820714473724365, + -2.26572322845459, + 0.7713351249694824, + 2.92962646484375, + -3.8149542808532715, + 1.442091703414917, + 2.132225275039673, + -6.346354007720947, + 0.7087132930755615, + 0.7415502071380615, + 7.031313896179199, + -2.6912484169006348, + -6.381038665771484, + 6.5219573974609375, + -2.635688066482544, + 0.9551682472229004, + 8.100833892822266, + -8.5560884475708, + -1.3624414205551147, + 1.3853578567504883, + 0.6215195655822754, + 0.9901912212371826, + -1.2929630279541016, + -1.7505671977996826, + -0.8490340709686279, + -4.397972583770752, + 14.157879829406738, + 1.8286259174346924, + -1.4671955108642578, + 3.482785224914551, + 3.9358630180358887, + -0.586641788482666, + 7.143943786621094, + 4.189739227294922, + -2.231904983520508, + -1.4514598846435547, + 0.34579601883888245, + -0.8927313685417175, + 2.2831618785858154, + -1.2069180011749268, + -8.200201988220215, + 1.3768150806427002, + -3.007500410079956, + -3.0671913623809814, + 3.9210734367370605, + 1.2263354063034058, + 5.259180068969727, + 4.796475887298584, + -0.553807258605957, + -0.6062378287315369, + 5.3155598640441895, + -4.367227077484131, + 1.4809515476226807, + 2.6868185997009277, + 0.7661349773406982, + -7.294856071472168, + -0.406893253326416, + 26.573381423950195, + 5.78491735458374, + 9.891302108764648, + 1.8394496440887451, + 0.5052187442779541, + -1.1971156597137451, + -3.7705190181732178, + -2.686185121536255, + -0.96244215965271, + 0.7589762210845947, + -1.5674104690551758, + 1.5131094455718994, + 3.5476577281951904, + 0.5302780866622925, + -1.877503752708435, + -0.20231127738952637, + 0.5054478645324707, + 2.5426406860351562, + -2.519878625869751, + -2.9539732933044434, + 6.485410213470459, + -1.4137070178985596, + -1.8430477380752563, + 4.283562660217285, + -1.5813014507293701, + 2.402340888977051, + 0.96135413646698, + 0.9692826271057129, + 1.854968547821045, + -1.8415465354919434, + 0.8776415586471558, + 1.0294723510742188, + -0.7517848610877991, + -0.2913183867931366, + -3.434227466583252, + 4.55380916595459, + 3.4523417949676514, + 5.5630903244018555, + 0.7752031087875366, + -1.0705578327178955, + -8.86054515838623, + -5.71121883392334, + -0.37431836128234863, + 0.37885335087776184, + 1.745132327079773, + -1.5762453079223633, + -0.6653000116348267, + 3.071275472640991, + -1.8094761371612549, + 18.551294326782227, + -0.16456805169582367, + 0.4238787889480591, + -1.3477871417999268, + -0.5226185321807861, + 0.16527609527111053, + 0.27556145191192627, + -2.721888542175293, + 0.4484928846359253, + 15.269427299499512, + -0.6630821228027344, + 0.6501055359840393, + 0.9793457984924316, + 4.229963302612305, + -1.17502760887146, + 0.7339998483657837, + 0.36522889137268066, + 1.1224920749664307, + 3.2549498081207275, + 4.6992597579956055, + -4.391885757446289, + 1.9079523086547852, + -1.4732232093811035, + -0.6208549737930298, + -5.5651936531066895, + -3.885751724243164, + -0.13318032026290894, + 2.6474227905273438, + -17.895179748535156, + -6.529864311218262, + -0.3700491189956665, + -0.23492521047592163, + -0.13503074645996094, + -0.06688126921653748, + -4.883335590362549, + -2.8417575359344482, + -1.3591563701629639, + -0.828071653842926, + 3.543261766433716, + 8.281824111938477, + -5.472187042236328, + -7.032988548278809, + -2.0235648155212402, + -0.7962860465049744, + 6.481806755065918, + -0.8862520456314087, + -2.9497435092926025, + 1.2098504304885864, + 11.139469146728516, + -0.03726491332054138, + 0.08820995688438416, + 3.0770981311798096, + 7.3842291831970215, + 0.7320556640625, + -7.837479591369629, + 3.603808879852295, + -1.8561336994171143, + 0.6137268543243408, + -5.720763206481934, + -6.5418572425842285, + 0.11388051509857178, + -4.844058990478516, + -4.035985469818115, + -2.043689727783203, + -4.966587066650391, + -5.352834224700928, + 1.163519024848938, + 2.208064556121826, + 0.3584480285644531, + 6.530623435974121, + -3.3197882175445557, + -4.661995887756348, + 0.5244412422180176, + 2.511214256286621, + 1.2784066200256348, + 3.2697842121124268, + -4.1328020095825195, + 7.573858261108398, + 0.6729246377944946, + 1.9954873323440552, + -0.29554998874664307, + -30.437814712524414, + 1.7404967546463013, + -11.501778602600098, + 2.6208481788635254, + -2.3580808639526367, + 1.447507381439209, + -3.2624785900115967, + 5.241944313049316, + 4.321321487426758, + 0.912171483039856, + -2.849334239959717, + 8.345706939697266, + 0.9442671537399292, + 5.970411777496338, + -0.7865564823150635, + 2.350799083709717, + -1.5844964981079102, + -4.375917911529541, + -1.9156911373138428, + 4.520115375518799, + -5.444334030151367, + -7.4176740646362305, + 1.3330271244049072, + -2.1981091499328613, + -10.737100601196289, + 1.6063803434371948, + -1.071039080619812, + -3.8800954818725586, + -2.198622465133667, + 3.3326191902160645, + 16.442352294921875, + -5.504205703735352, + 4.007458209991455, + 2.6735029220581055, + 1.9717769622802734, + -0.5730642080307007, + 1.988483190536499, + -0.6761606335639954, + 6.677783966064453, + -0.3875349164009094, + -3.835331439971924, + -2.4035146236419678, + -0.5649689435958862, + -3.094878673553467, + 1.245269775390625, + 1.2836668491363525, + 0.9477323293685913, + 3.4853436946868896, + 6.345026016235352, + 3.5812063217163086, + -0.6039940118789673, + -1.8266220092773438, + 4.702004909515381, + 3.861449956893921, + 0.9324055910110474, + -0.526209831237793, + -5.924872398376465, + -6.744236946105957, + 1.296191692352295, + 2.1893179416656494, + -5.1715240478515625, + -1.8557685613632202, + 6.1622419357299805, + -2.072547674179077, + -0.45008552074432373, + 1.156792163848877, + 2.979893207550049, + -3.3331663608551025, + -0.8289844989776611, + 1.7365154027938843, + 3.544613838195801, + -0.13386976718902588, + -2.609041690826416, + 0.55120849609375, + -10.60352611541748, + -2.060452938079834, + 2.999894618988037, + 0.638641893863678, + 0.18258875608444214, + -3.825437068939209, + -7.491549968719482, + -8.400430679321289, + 8.384714126586914, + 0.03138134628534317, + 0.5342718958854675, + 6.411322116851807, + 5.909671306610107, + 4.946786403656006, + 11.76248550415039, + 0.9551135897636414, + 2.0907175540924072, + 4.156933307647705, + 0.6007136106491089, + -3.8940253257751465, + -1.9089435338974, + 4.181432723999023, + -1.0115604400634766, + 1.0479172468185425, + 5.178289413452148, + -5.516232013702393, + -0.948409914970398, + -0.1637609899044037, + -4.209076881408691, + -1.3087408542633057, + 1.085179090499878, + 0.5873011350631714, + 1.350027084350586, + -6.030963897705078, + 1.7496998310089111, + -4.334037780761719, + -13.949559211730957, + -5.408028602600098, + 1.8252874612808228, + -3.3881375789642334, + -3.860914707183838, + 3.784184455871582, + 10.30538272857666, + 2.2012155055999756, + 0.16321280598640442, + 2.6751770973205566, + 2.348801374435425, + 0.41228771209716797, + -3.48091197013855, + -4.806221008300781, + -0.6313794851303101, + 6.227141380310059, + -0.9814655780792236, + -6.6046600341796875, + 2.017418622970581, + 6.779699802398682, + 1.9374017715454102, + -1.2084031105041504, + -1.8000415563583374, + -1.2303647994995117, + -1.5220870971679688, + 0.11294329166412354, + 1.2137377262115479, + -12.371912956237793, + -0.9575920104980469, + -0.8715839385986328, + -1.5870141983032227, + -5.150489330291748, + -10.895662307739258, + 10.386486053466797, + 4.121563911437988, + -2.152052402496338, + -3.103867530822754, + -0.9398778080940247, + -4.691522121429443, + -3.067549467086792, + -6.166980266571045, + -0.6329600214958191, + 0.19042909145355225, + 0.39238572120666504, + -2.2403736114501953, + 1.9604183435440063, + -5.788551330566406, + 2.1317625045776367, + -1.912227749824524, + 5.901250839233398, + 5.217245578765869, + 4.685746192932129, + -3.120828866958618, + -9.038673400878906, + -0.20486247539520264, + -0.12608876824378967, + 6.20701789855957, + 1.6023379564285278, + 5.557031154632568, + -4.735737323760986, + 3.1318066120147705, + 0.42597538232803345, + -0.07402640581130981, + -2.304053783416748, + -2.5445666313171387, + 2.2163782119750977, + -7.644615650177002, + 4.004940986633301, + 0.5658965110778809, + -5.560862064361572, + -4.2296528816223145, + -1.3695869445800781, + 1.40949547290802, + -15.314362525939941, + 0.9490528106689453, + 5.522669792175293, + -0.9748629331588745, + -20.0649356842041, + -0.06769317388534546, + 2.7076170444488525, + 1.4070380926132202, + 10.089372634887695, + 1.9397221803665161, + 1.0386695861816406, + -0.022446930408477783, + -4.4168009757995605, + -0.8140663504600525, + -3.1465160846710205, + 25.443431854248047, + 3.92124080657959, + 0.07995396852493286, + -2.3994851112365723, + 0.4123949110507965, + -3.8232898712158203, + -3.6600072383880615, + -4.194244384765625, + -0.3080674111843109, + 2.300551176071167, + -0.7482594847679138, + 8.982000350952148, + 11.287800788879395, + 2.2757937908172607, + -3.605931282043457, + 3.7998592853546143, + 2.508481979370117, + -0.9936672449111938, + -0.23593533039093018, + -1.7550636529922485, + 1.4090509414672852, + -0.29900363087654114, + 0.6640336513519287, + 10.514327049255371, + 2.8156580924987793, + 1.0193153619766235, + 1.121350884437561, + -1.3461668491363525, + -2.104654550552368, + -2.053032159805298, + 0.26172828674316406, + -1.263676643371582, + -10.598681449890137, + -3.8209023475646973, + 12.440402030944824, + 4.861499786376953, + -3.8493380546569824, + -1.975183129310608, + -0.01259547472000122, + 2.8855574131011963, + 1.412153959274292, + 4.729551315307617, + 1.6615649461746216, + -1.4155478477478027, + -3.654478073120117, + 3.46213960647583, + 1.362281322479248, + -3.180217981338501, + 1.152044653892517, + -3.6694865226745605, + 4.089485168457031, + 4.541468620300293, + -0.06403577327728271, + 3.1577062606811523, + 3.1003262996673584, + -5.6793742179870605, + 1.983898401260376, + -0.6028707027435303, + 0.12656831741333008, + 2.6737051010131836, + 0.6449229121208191, + 0.3002309203147888, + 3.2700228691101074, + -4.2561116218566895, + -1.230567455291748, + -0.9202182292938232, + -5.37230920791626, + -1.5724738836288452, + 2.536855936050415, + -6.208347797393799, + 1.0927667617797852, + 0.42392218112945557, + 20.328283309936523, + 2.174669027328491, + -1.080117106437683, + -6.49732780456543, + -1.280027985572815, + -13.45227336883545, + -2.877500295639038, + 5.329860687255859, + -0.9944093227386475, + -0.7765034437179565, + 1.6188836097717285, + 5.699484825134277, + 1.2387537956237793, + -5.482387542724609, + 1.6167526245117188, + -1.5337483882904053, + -3.2403149604797363, + 3.8588757514953613, + -0.1112213134765625, + -5.67165470123291, + 3.164268970489502, + 1.5171937942504883, + -3.6491942405700684, + 7.7382893562316895, + 0.8126106262207031, + 3.3018581867218018, + -1.6699376106262207, + -0.4302077889442444, + -1.8239741325378418, + 2.0784754753112793, + -3.56455659866333, + 5.270388126373291, + 0.08005034923553467, + -3.364133596420288, + 6.724492073059082, + 0.9944975972175598, + 1.3953486680984497, + 0.043253108859062195, + 2.8308489322662354, + -1.3201059103012085, + -6.463700294494629, + 11.999128341674805, + 1.631112813949585, + -1.384270429611206, + -7.16771936416626, + -4.313484191894531, + -16.09773063659668, + -0.716279149055481, + 4.054507255554199, + 1.3605118989944458, + 2.443223237991333, + -13.744582176208496, + 5.822597026824951, + 2.4827494621276855, + -3.279775381088257, + -7.925826072692871, + -2.9579761028289795, + 0.3371432423591614, + -0.6085304617881775, + -1.8090746402740479, + -0.7666022181510925, + -1.2421493530273438, + 3.024013042449951, + 2.58949875831604, + 0.5556977987289429, + 0.8286271095275879, + -2.428575038909912, + 2.21382474899292, + 0.9628798365592957, + 2.170083999633789, + -0.9904748201370239, + -1.7529296875, + 2.1269290447235107, + -1.9688491821289062, + -2.5787200927734375, + 2.6522278785705566, + 1.742578148841858, + -2.1320559978485107, + -1.2731022834777832, + 0.9947381019592285, + -4.025530815124512, + -0.4268101751804352, + -2.4170379638671875, + 0.22833630442619324, + -3.0459554195404053, + -2.9650330543518066, + -1.8334383964538574, + -4.170026779174805, + -1.2977421283721924, + -0.6150842308998108, + -0.30117297172546387, + 0.031949400901794434, + 0.8938813209533691, + 2.026150703430176, + -1.0522511005401611, + 3.0488228797912598, + -7.9004597663879395, + -4.926634311676025, + 1.8509197235107422, + -4.277576446533203, + -4.567620754241943, + -2.4168169498443604, + 7.237779140472412, + -0.8629669547080994, + -2.4410693645477295, + -0.12569546699523926, + 0.18844489753246307, + 1.9913179874420166, + -0.5462557673454285, + 1.578356385231018, + 0.3160300552845001, + 0.03178250789642334, + -1.0327494144439697, + -0.1409548819065094, + -4.957073211669922, + 0.9004013538360596, + -0.8644410371780396, + 1.3904305696487427, + 1.1060081720352173, + -5.406496047973633 + ] + }, + "4": { + "gender": "female", + "describe": "知心小姐姐", + "tensor": [ + -0.5851728916168213, + 3.6880478858947754, + 1.8257272243499756, + 3.515974521636963, + -1.4402234554290771, + 1.6617156267166138, + 0.843829870223999, + -2.461839437484741, + -2.306220769882202, + 1.554520845413208, + 1.7968358993530273, + 1.6617308855056763, + 0.3998546004295349, + 1.855228066444397, + -2.6883115768432617, + -1.7641582489013672, + 3.478573799133301, + 1.9454224109649658, + 4.151295185089111, + -0.4138868451118469, + -1.933363437652588, + -0.18470412492752075, + 4.665329933166504, + -4.674685001373291, + -1.3723208904266357, + 3.1991055011749268, + 1.0675740242004395, + 11.445100784301758, + 1.5682668685913086, + 1.6237623691558838, + -1.6628525257110596, + -0.12950646877288818, + 1.0324177742004395, + -1.870410680770874, + -0.6406782865524292, + 0.17978262901306152, + -1.2282402515411377, + -5.621504783630371, + 2.566340446472168, + 0.2805474102497101, + -2.4469101428985596, + -6.5417561531066895, + -2.8442296981811523, + -2.734220027923584, + 12.693964004516602, + -0.8248660564422607, + 0.4382353127002716, + 0.011882364749908447, + -3.6014249324798584, + 0.29400819540023804, + 0.365332692861557, + -1.5817070007324219, + 3.8272202014923096, + 0.0023435354232788086, + 2.9692587852478027, + -1.151494026184082, + 1.9189534187316895, + 0.013408541679382324, + -2.0694010257720947, + 1.7330331802368164, + -1.5645465850830078, + 4.243363857269287, + 2.281550407409668, + 2.7372467517852783, + -3.8067729473114014, + -1.7900784015655518, + -3.1663219928741455, + -13.616334915161133, + 1.9355218410491943, + 2.970893144607544, + -2.4377248287200928, + 3.0472793579101562, + -4.009223937988281, + 2.512826442718506, + -0.6969766020774841, + -3.2380330562591553, + 2.6084909439086914, + -3.6030850410461426, + 0.926803469657898, + 2.5168051719665527, + 2.3435544967651367, + -5.4697675704956055, + 0.9964417219161987, + -1.0262787342071533, + 3.752847671508789, + -0.37840962409973145, + 3.5349926948547363, + -0.8005269765853882, + -0.9636974334716797, + 0.17069709300994873, + -0.4537273645401001, + 0.49056923389434814, + 3.1290483474731445, + -2.4016671180725098, + 2.784106492996216, + -13.955648422241211, + 0.42751914262771606, + -1.86398184299469, + 3.180211067199707, + -5.466833591461182, + -2.9385464191436768, + 0.5397330522537231, + 1.579469919204712, + 3.096233367919922, + -0.26844322681427, + 2.752999782562256, + -3.798457145690918, + -4.219141483306885, + 15.745081901550293, + 0.5458163022994995, + 2.0425124168395996, + 16.86039161682129, + -10.631914138793945, + 2.824439525604248, + -0.23053109645843506, + 0.29770413041114807, + -2.991938591003418, + -3.678995132446289, + 3.0316951274871826, + 4.0001044273376465, + -1.5183757543563843, + 0.2158847153186798, + -4.7412214279174805, + 3.4242823123931885, + -1.8659722805023193, + -2.640662670135498, + 0.7691453695297241, + 4.157830238342285, + 0.28017401695251465, + 0.8821239471435547, + 1.120943546295166, + 6.832309722900391, + 3.370577335357666, + -2.0882976055145264, + 0.1498187780380249, + 0.9214494228363037, + -6.149633884429932, + -7.671121120452881, + -2.5855987071990967, + -0.7680049538612366, + -1.878557562828064, + -4.382069110870361, + 0.8383187055587769, + -1.4677772521972656, + -1.119395136833191, + -4.725262641906738, + 0.1002713143825531, + -2.2303314208984375, + 1.622248649597168, + 2.797271251678467, + 2.0538575649261475, + -3.9138855934143066, + -2.505549907684326, + 5.130217552185059, + -4.521616458892822, + -0.5408917665481567, + 7.356250762939453, + 6.038209915161133, + 0.9855613708496094, + 0.546349287033081, + 3.1527183055877686, + -1.7284352779388428, + 0.7239639759063721, + 5.012546539306641, + 3.0435454845428467, + 4.764035224914551, + -1.4896975755691528, + 1.595961570739746, + 0.6094424724578857, + 3.2541661262512207, + 5.7233076095581055, + -6.374414443969727, + -4.289981842041016, + -2.6727118492126465, + 0.26722386479377747, + 0.014411458745598793, + -0.5366528034210205, + -2.231755495071411, + 2.9483625888824463, + 1.0861389636993408, + -2.770141839981079, + 3.0359387397766113, + 6.287510871887207, + 4.350572109222412, + -2.1602962017059326, + -0.735525369644165, + 20.502525329589844, + 6.135834693908691, + 1.2444428205490112, + -1.5466097593307495, + -3.2706146240234375, + -2.661684513092041, + -0.9323858618736267, + -2.84561824798584, + -0.571036159992218, + -2.655951499938965, + -2.718839645385742, + -0.6386122703552246, + -4.053083419799805, + -2.721391439437866, + 0.06416845321655273, + -2.441685199737549, + 0.189764603972435, + -4.296698570251465, + 14.853211402893066, + -2.8702504634857178, + 4.951896667480469, + 10.480717658996582, + 3.6042277812957764, + 3.5278282165527344, + 0.1329146921634674, + -3.4820358753204346, + -6.227074146270752, + -0.7800135612487793, + 1.7199256420135498, + 0.884699821472168, + -0.6067605018615723, + 7.400779724121094, + -3.2759909629821777, + 6.386544227600098, + 3.5201408863067627, + -2.086869239807129, + 2.7934370040893555, + 3.4322283267974854, + -0.13634800910949707, + -2.090487480163574, + 2.286383628845215, + 4.177327632904053, + -0.5069741010665894, + 2.570679187774658, + -0.8095122575759888, + 4.464632034301758, + 6.62062406539917, + -1.970432162284851, + -0.4658559560775757, + -0.46082425117492676, + -0.15485930442810059, + 0.4149564504623413, + 1.6364850997924805, + 1.0445775985717773, + -1.5737123489379883, + -0.48158180713653564, + -2.7629969120025635, + -2.453897476196289, + 1.118835210800171, + 0.9672551155090332, + -4.311382293701172, + 4.884599685668945, + -9.115461349487305, + 1.8071388006210327, + 1.5721509456634521, + 4.7199602127075195, + 0.0779038667678833, + 1.1660951375961304, + 4.567465305328369, + 0.3956759572029114, + 0.37612903118133545, + -1.1904417276382446, + 4.33800745010376, + 0.3876307010650635, + -1.7745281457901, + -2.841482639312744, + -6.868590831756592, + 1.5531806945800781, + 6.387038230895996, + -0.10640811920166016, + -2.4456980228424072, + -3.248631000518799, + -3.6483302116394043, + 0.530647873878479, + 0.40141117572784424, + 1.03694748878479, + -6.485558032989502, + -3.0664968490600586, + -1.394111156463623, + 7.656408309936523, + 3.6755738258361816, + 0.9456675052642822, + -5.612077236175537, + 1.42854905128479, + 1.0768779516220093, + 0.7026770114898682, + -2.6652371883392334, + -0.1318894624710083, + -2.381653308868408, + 1.2090569734573364, + 4.265395164489746, + -0.3875633180141449, + -1.9353301525115967, + 0.5129386186599731, + -5.901371479034424, + 0.8858899474143982, + -0.2878798246383667, + 0.35578596591949463, + -2.964608669281006, + 3.6032135486602783, + -0.5487250089645386, + 1.7378339767456055, + 4.839059352874756, + 0.31754153966903687, + 0.2745658755302429, + -2.0015337467193604, + -0.8220745921134949, + -2.7472124099731445, + -0.8465165495872498, + 0.6895426511764526, + -3.798417091369629, + -0.3074271082878113, + -0.5910942554473877, + 0.48252829909324646, + 8.939820289611816, + 2.229860782623291, + 0.13336181640625, + -1.8896620273590088, + 0.6202394366264343, + -1.5218148231506348, + 2.272130012512207, + -2.8176987171173096, + 2.552417278289795, + -0.21386897563934326, + -0.5189118981361389, + -4.180997371673584, + -4.483270168304443, + -1.0205796957015991, + -0.13992464542388916, + 6.631154537200928, + -4.274115085601807, + -6.974748134613037, + 0.7364004850387573, + 0.1011132001876831, + -1.9479401111602783, + 13.494565963745117, + -1.5602589845657349, + -3.4126758575439453, + -3.524044990539551, + -4.817403793334961, + -11.969371795654297, + 12.505533218383789, + -7.242180824279785, + -0.6652776002883911, + 3.904254913330078, + 2.755141258239746, + -2.50913667678833, + 1.9620388746261597, + 2.789780378341675, + -11.44134521484375, + -3.406905174255371, + 0.3374541401863098, + 4.640172958374023, + -4.777480125427246, + 7.465202331542969, + 6.235621452331543, + -2.337960958480835, + -0.6575924158096313, + -2.6031312942504883, + -0.7215561866760254, + 6.2034220695495605, + 1.4968676567077637, + -11.05561351776123, + 3.129573345184326, + -0.10441470146179199, + 3.373197555541992, + 9.526443481445312, + -0.4660080671310425, + 2.767388343811035, + -4.510136604309082, + -0.9164104461669922, + -7.533825397491455, + 3.9066948890686035, + 2.8367760181427, + -3.021944046020508, + -2.5097224712371826, + 0.6212766170501709, + 0.7536563873291016, + 3.771731376647949, + 5.209357261657715, + 4.100400924682617, + 2.2855064868927, + -3.8832244873046875, + -3.019765853881836, + 7.238552093505859, + 4.9313178062438965, + -0.21087875962257385, + 1.5470457077026367, + -4.133023262023926, + 0.007192619144916534, + 3.4214913845062256, + 4.140014171600342, + 1.1776587963104248, + -1.617293119430542, + 2.2599573135375977, + -2.470423460006714, + -2.672783613204956, + -1.8314976692199707, + 0.902437150478363, + 3.3550710678100586, + -3.4329051971435547, + 6.896972179412842, + -0.9740886688232422, + -4.243814468383789, + 0.7092137336730957, + 0.928032636642456, + -3.6018099784851074, + -0.6632587909698486, + 3.2907583713531494, + 1.3989787101745605, + -1.0511826276779175, + 3.368788957595825, + 5.823977470397949, + 1.371401309967041, + 3.8835415840148926, + 0.8523998260498047, + -4.09576416015625, + 3.4469118118286133, + 2.368252992630005, + 8.073711395263672, + 2.00553822517395, + -1.909576416015625, + 1.2968181371688843, + 0.43897122144699097, + -0.7672509551048279, + -6.858323097229004, + -0.6869815587997437, + -0.558453381061554, + 2.554556369781494, + 1.2212769985198975, + 6.194704055786133, + 11.08519172668457, + 0.15952283143997192, + 0.8356062173843384, + 2.492112398147583, + 2.339026689529419, + -0.05764484405517578, + -0.23325377702713013, + -1.67210853099823, + 0.09339699149131775, + 0.4182426929473877, + 0.4786261022090912, + -3.3145267963409424, + -0.16681843996047974, + 0.4206487238407135, + -0.46019089221954346, + -3.65555477142334, + 1.3736724853515625, + -2.1854660511016846, + -0.8936866521835327, + 8.060297012329102, + 1.280626654624939, + -2.5829217433929443, + -1.6013798713684082, + -0.873931884765625, + -1.3027172088623047, + 0.17826294898986816, + -1.5192989110946655, + 1.9528191089630127, + 0.18151414394378662, + -0.8358213901519775, + -1.3314933776855469, + -1.630078911781311, + -0.43468350172042847, + 1.9664647579193115, + 3.2300469875335693, + 5.598848819732666, + 0.6190586090087891, + 1.3545763492584229, + 0.24171796441078186, + 10.6122407913208, + 12.532841682434082, + -10.221086502075195, + 1.4044499397277832, + -4.475601673126221, + 3.1260693073272705, + -1.3015422821044922, + 1.3812545537948608, + -3.695406436920166, + 2.6902360916137695, + -1.0900112390518188, + -6.800989151000977, + 2.4220774173736572, + 3.0308997631073, + -0.9904400706291199, + 3.558171033859253, + 4.89099645614624, + 6.177764415740967, + 1.8913720846176147, + -1.8479176759719849, + 1.79679536819458, + 0.744103193283081, + 6.00057315826416, + 0.3201184868812561, + -1.208295226097107, + -2.9034159183502197, + 7.093640327453613, + 16.20329475402832, + -2.285264492034912, + 1.06508207321167, + 3.5020031929016113, + 2.1578774452209473, + 0.9280158877372742, + 2.073922872543335, + -2.1920275688171387, + -0.8203740119934082, + 1.8363076448440552, + -0.5605930685997009, + 23.0247859954834, + -4.970607757568359, + -3.914790153503418, + -4.1304216384887695, + -2.817913055419922, + 0.09742540121078491, + 2.1580989360809326, + 1.0105617046356201, + 10.92403793334961, + 2.179346799850464, + 0.9627945423126221, + -10.10934829711914, + 3.7535624504089355, + 0.6275297403335571, + 0.13044682145118713, + -7.13212251663208, + -7.859465599060059, + 1.3950618505477905, + -0.5688124895095825, + 3.928269147872925, + 3.594698905944824, + -2.8260128498077393, + -3.7378580570220947, + -3.3919837474823, + -4.928829193115234, + -4.159782409667969, + -1.075911045074463, + 4.943683624267578, + -1.4193931818008423, + 3.5551466941833496, + -3.517888307571411, + -0.911950945854187, + -1.0743908882141113, + -15.979789733886719, + -1.7158539295196533, + -4.363293647766113, + -0.18479013442993164, + 3.9618797302246094, + 0.6501002311706543, + -2.0119454860687256, + 1.4177627563476562, + 1.1368565559387207, + -8.9552640914917, + -0.4009522497653961, + 1.4490530490875244, + 0.47332775592803955, + -2.1052844524383545, + -1.1696844100952148, + 1.364364743232727, + -6.750042915344238, + -1.8383111953735352, + -0.3198814392089844, + 7.876732349395752, + -3.7650911808013916, + 3.636552572250366, + 0.17322012782096863, + 4.550399303436279, + 2.163825035095215, + 1.3265138864517212, + 2.448586940765381, + 2.1035919189453125, + -16.822202682495117, + -5.48777437210083, + 1.2401530742645264, + 2.4805219173431396, + -2.9775259494781494, + 3.7783892154693604, + -3.2349841594696045, + -1.411032795906067, + 3.0818824768066406, + -0.7859383821487427, + 1.2599087953567505, + 2.80706524848938, + 2.2899787425994873, + -2.6722617149353027, + -0.5276041030883789, + -1.9988603591918945, + -0.25860342383384705, + -0.23663651943206787, + -3.0214695930480957, + 1.113713264465332, + 5.928112983703613, + 0.7025635242462158, + -5.511975288391113, + 1.546085238456726, + -0.07969999313354492, + -2.7133991718292236, + 2.577315330505371, + 3.7280611991882324, + 2.217717170715332, + 2.9690048694610596, + 2.97745418548584, + -1.583606481552124, + -0.2594452500343323, + 1.8715263605117798, + 12.214456558227539, + -1.4824981689453125, + -1.0633916854858398, + 2.163548707962036, + 0.3607494831085205, + 2.691289186477661, + 5.1258649826049805, + -3.313626766204834, + -1.6059470176696777, + -0.5036423802375793, + -4.456963539123535, + -3.1175379753112793, + 3.471625566482544, + -1.3805687427520752, + -0.7553438544273376, + 3.1663546562194824, + 1.917477011680603, + 1.7507421970367432, + -1.854292392730713, + 0.49529117345809937, + -1.194669246673584, + -0.8050267696380615, + -1.7709697484970093, + -1.7724207639694214, + 2.302013397216797, + -0.714475154876709, + 2.3045358657836914, + -1.0800442695617676, + 5.131864070892334, + 4.199567794799805, + 0.44853878021240234, + 2.9424946308135986, + -2.622781276702881, + 5.177225112915039, + -0.024166613817214966, + -3.3127241134643555, + -1.7049483060836792, + -3.1466622352600098, + 0.795714259147644, + -9.952839851379395, + 3.996786594390869, + 1.6421034336090088, + 0.6614827513694763, + 0.7236907482147217, + -0.9756630063056946, + -0.08871293067932129, + -8.025935173034668, + 0.8754777908325195, + 1.6099576950073242, + -10.469542503356934, + -1.0872689485549927, + -0.18012523651123047, + 10.967460632324219, + 1.257339358329773, + -9.868664741516113, + -0.502108097076416, + -13.327945709228516, + 5.981071949005127, + 0.8944038152694702, + 7.351065635681152, + 7.82653284072876, + 19.42945098876953, + -0.8537179231643677, + 4.881540298461914, + 2.8868165016174316, + 0.4708753824234009, + -5.362237930297852, + 1.6040899753570557, + -1.5004581212997437, + -8.556029319763184, + -1.9526795148849487, + 3.583390951156616, + 1.2857922315597534, + -0.7907378077507019, + -0.24441273510456085, + 3.4398410320281982, + 2.158754587173462, + 0.23108947277069092, + -0.6283524632453918, + 1.8326435089111328, + 4.309016227722168, + -2.659130096435547, + -3.0170392990112305, + -9.016160011291504, + -0.4745311737060547, + 1.2146210670471191, + -2.840481758117676, + 17.444303512573242, + 1.431662917137146, + 3.739163398742676, + -9.643446922302246, + 3.003431797027588, + 1.0874876976013184, + 1.2505686283111572, + -4.711128234863281, + -7.761691093444824, + 2.624269962310791, + 7.266016960144043, + 1.089799165725708, + -3.4955105781555176, + -6.370697975158691, + 0.4607585072517395, + -4.15244722366333, + -1.4482126235961914, + -2.9149906635284424, + -2.8163886070251465, + 0.9359076023101807, + -1.3904510736465454, + 0.12677711248397827, + -2.7194204330444336, + 0.42934131622314453, + 4.297700881958008, + 0.23614710569381714, + 0.6817106008529663, + 2.2581686973571777, + 1.5510343313217163, + -5.790206432342529, + 1.3139665126800537, + -2.991060495376587, + 0.9736899137496948, + 4.985659599304199, + 0.3523404002189636, + 1.646238923072815, + -0.40105295181274414, + -4.5531182289123535, + -1.3868498802185059, + 3.507422924041748, + -0.784184455871582, + -9.291114807128906, + -3.8495333194732666, + 2.024264097213745, + 1.9252114295959473, + 2.1103696823120117, + 1.6298704147338867, + 3.4589529037475586, + -2.271078109741211, + -4.8921918869018555, + -3.212334632873535, + -3.2612648010253906, + 4.774796485900879, + -0.44538354873657227, + 1.9991673231124878, + 0.6982741951942444, + -3.8543667793273926, + -0.1067129373550415, + -7.407508850097656, + -3.89086651802063, + -3.0542211532592773, + -3.7797932624816895, + 2.0833282470703125, + 1.8229093551635742, + -0.7693051099777222, + -1.4035298824310303, + 0.917460560798645, + 0.42365559935569763, + -2.100348711013794, + 0.40657293796539307, + -3.6256778240203857, + -3.0924031734466553, + -1.497504711151123, + -2.971566677093506, + -1.7875044345855713, + -2.504432201385498, + -0.10235118865966797, + 2.221489191055298, + 1.007485032081604, + -2.069312334060669, + -1.5106379985809326, + -2.1163949966430664 + ] + }, + "5": { + "gender": "female", + "describe": "电视台女主持", + "tensor": [ + 1.1031162738800049, + -0.3559848666191101, + -10.132878303527832, + -2.475895881652832, + -0.9890118837356567, + -1.1358553171157837, + 9.581518173217773, + -4.272543907165527, + -2.717761754989624, + -9.899277687072754, + -0.07101333141326904, + 2.6559388637542725, + -3.287719488143921, + 2.0143585205078125, + -7.4677252769470215, + 2.7375411987304688, + 1.3139095306396484, + 0.06586861610412598, + -4.582176208496094, + -0.17678076028823853, + -0.518024206161499, + -3.279142141342163, + -0.07983994483947754, + -6.309693336486816, + 2.0482094287872314, + 1.5360909700393677, + 2.7992186546325684, + -12.138275146484375, + -1.6609811782836914, + -0.35465794801712036, + -3.8611278533935547, + -5.959837913513184, + -0.6480984687805176, + -4.873000621795654, + -1.6726489067077637, + -17.142826080322266, + -0.2283947914838791, + -3.3374671936035156, + -2.908663272857666, + -4.786422252655029, + 1.8099757432937622, + 0.21948963403701782, + 5.100899696350098, + 1.578331470489502, + -10.441035270690918, + -5.52306604385376, + -4.151099681854248, + 6.650579929351807, + 4.217511177062988, + -0.08874356746673584, + 0.7076783776283264, + -3.256868600845337, + -0.540647029876709, + -0.17992325127124786, + 1.782479166984558, + -1.8022589683532715, + 1.2875810861587524, + -0.5661195516586304, + -5.0861029624938965, + -0.8154149055480957, + -0.7799295783042908, + 2.867672920227051, + -3.383729934692383, + -3.6600944995880127, + -2.0013504028320312, + 0.8016246557235718, + 3.4170241355895996, + 6.276032447814941, + 4.007160186767578, + 1.9599543809890747, + -2.0348403453826904, + 1.0671517848968506, + 1.819079041481018, + 4.141101360321045, + -2.8860411643981934, + 0.41108524799346924, + -2.4488162994384766, + -7.963019371032715, + 1.3719345331192017, + 2.4517085552215576, + 0.5067011117935181, + -1.4870092868804932, + 0.15279093384742737, + -2.690910577774048, + 0.5894854068756104, + -2.834643602371216, + 1.2595560550689697, + -1.047971248626709, + 1.2550652027130127, + 3.156848430633545, + 6.1755146980285645, + -0.608039379119873, + 0.006069183349609375, + 0.3788805902004242, + 1.8937034606933594, + -0.708003044128418, + -2.283405065536499, + 4.003352642059326, + 1.1297545433044434, + -0.3839133381843567, + 6.058026313781738, + -1.9198533296585083, + -2.15000581741333, + -2.286454677581787, + 6.301407337188721, + -2.1249077320098877, + 0.8984564542770386, + -1.3898507356643677, + 9.429322242736816, + -0.8890015482902527, + 1.900186538696289, + 4.163876533508301, + -16.721256256103516, + -0.7366575002670288, + 3.2430214881896973, + -0.9105373620986938, + -0.49484992027282715, + 2.7193055152893066, + -0.9328877925872803, + -1.179358720779419, + 3.0452687740325928, + 1.8020654916763306, + -0.2536216974258423, + 5.485031604766846, + 4.916557788848877, + -6.624104976654053, + -5.6480793952941895, + -5.025794982910156, + 2.8369357585906982, + -0.7495355606079102, + -5.092158794403076, + 0.5134499073028564, + -0.67549729347229, + -1.5984382629394531, + -3.9921188354492188, + -1.7504937648773193, + -3.472598075866699, + -4.884407043457031, + 10.021586418151855, + -2.7067108154296875, + -1.190271258354187, + -0.05283935368061066, + -7.595129013061523, + -4.689226150512695, + 0.3386390507221222, + -9.983935356140137, + -4.670895576477051, + 3.349907875061035, + 0.8111830949783325, + -4.175534248352051, + -2.6056699752807617, + 3.5253915786743164, + -6.626195430755615, + -3.4239072799682617, + -7.295278072357178, + 0.9583977460861206, + -6.763319492340088, + 9.060744285583496, + -6.250721454620361, + 1.0394318103790283, + -2.417536973953247, + 1.01361083984375, + 1.1949223279953003, + 0.2731437683105469, + -1.319079875946045, + 1.9326473474502563, + -0.17711766064167023, + 1.8732613325119019, + 0.5856584310531616, + -1.9819023609161377, + 3.6512482166290283, + -3.448151111602783, + 0.2781068682670593, + -1.3120930194854736, + 2.893094301223755, + 1.3836034536361694, + 1.0572125911712646, + -0.4800620675086975, + 0.3997477889060974, + -3.794539451599121, + -2.0234601497650146, + 0.5818310976028442, + -2.299027681350708, + 5.420114517211914, + -3.7701711654663086, + -0.24841660261154175, + -0.21005916595458984, + 1.097522258758545, + 1.7506183385849, + -1.6864235401153564, + 7.667790412902832, + -0.3219987750053406, + 2.6746346950531006, + 3.189276695251465, + -0.5270287990570068, + -13.204570770263672, + -2.5196073055267334, + -3.068450450897217, + 6.607553005218506, + -0.08586566150188446, + -2.6243057250976562, + -1.1945323944091797, + -1.036893367767334, + -3.4785029888153076, + -1.6115553379058838, + 2.01676607131958, + -0.8560374975204468, + 12.24977970123291, + -1.976837396621704, + -2.3609066009521484, + -2.3307933807373047, + 3.0309674739837646, + -2.5786237716674805, + 3.2788381576538086, + -4.332724094390869, + 0.40037477016448975, + 2.7195887565612793, + 9.12165355682373, + -1.0266753435134888, + 8.186264038085938, + 4.990070819854736, + 5.287994384765625, + 5.49606990814209, + 2.419544219970703, + 0.9891283512115479, + 3.353135585784912, + -2.088244915008545, + 2.1195545196533203, + -4.424335479736328, + -3.098586082458496, + -1.7055529356002808, + 1.6110069751739502, + 0.1708720475435257, + -3.434309482574463, + 3.303858995437622, + -0.5396789312362671, + 3.2180614471435547, + 5.827062606811523, + 2.030773878097534, + 1.8481838703155518, + -0.432840496301651, + 3.612226724624634, + -6.50759220123291, + -0.14205366373062134, + 2.644263744354248, + 1.6644659042358398, + 0.21096324920654297, + 7.026523113250732, + 4.633346080780029, + 2.204061508178711, + 4.106611251831055, + 1.1969883441925049, + -1.6586415767669678, + -3.4077043533325195, + -6.053469657897949, + -4.159571170806885, + -2.5764851570129395, + -5.453805446624756, + -1.2736108303070068, + 2.597095012664795, + -3.4381425380706787, + 1.1573240756988525, + -4.445044040679932, + -3.0599606037139893, + -0.3021894693374634, + 4.841910362243652, + -2.7829291820526123, + 9.22102165222168, + 2.3600704669952393, + 0.05997470021247864, + 2.2746777534484863, + 4.896076679229736, + -1.0200035572052002, + 3.6867475509643555, + -0.8354727029800415, + -0.9492495059967041, + 4.131508827209473, + 1.6742647886276245, + 4.088156700134277, + -0.1042572557926178, + -5.327041149139404, + 0.5600224733352661, + 1.0784907341003418, + -2.2184531688690186, + -4.614040374755859, + -2.011206865310669, + -3.581273317337036, + -2.242706298828125, + -0.8000345230102539, + -0.41207391023635864, + 4.380050182342529, + 2.2771806716918945, + 2.815542697906494, + -1.4383915662765503, + 3.1062979698181152, + -1.794703483581543, + 0.0580611526966095, + -7.571052551269531, + 0.4337484836578369, + -2.0264463424682617, + -2.8957011699676514, + -4.2884521484375, + -3.8196420669555664, + -0.6660078763961792, + -1.1263853311538696, + -3.7953476905822754, + 7.092690944671631, + -2.878267288208008, + -3.0137434005737305, + 3.3367209434509277, + 2.2545924186706543, + 2.23195743560791, + -1.0724146366119385, + 3.4688034057617188, + -2.6643130779266357, + 3.754689931869507, + 1.5807578563690186, + 3.397970199584961, + 1.0451691150665283, + 0.7553547024726868, + -1.2582643032073975, + 1.0660978555679321, + 2.095824718475342, + -0.08255895972251892, + 0.9660252332687378, + 13.999177932739258, + 2.395374298095703, + 1.9843326807022095, + 3.6120400428771973, + 2.920074462890625, + -2.6742918491363525, + 4.677522659301758, + 2.3053269386291504, + 12.710121154785156, + -3.053514242172241, + 3.89250111579895, + -1.0357818603515625, + -14.71276569366455, + 0.18967510759830475, + -3.0791070461273193, + -1.2513697147369385, + 0.4644967317581177, + -0.8394129276275635, + 2.300443172454834, + -1.3302947282791138, + -2.1189417839050293, + 1.0033034086227417, + -1.4604095220565796, + 5.599133014678955, + 9.581493377685547, + 4.067461013793945, + 8.400999069213867, + 4.546342372894287, + -2.0218684673309326, + -3.755632162094116, + 0.30857646465301514, + -0.0567094087600708, + 6.519403457641602, + 1.013623595237732, + 2.3614325523376465, + 1.5855917930603027, + 1.0907700061798096, + 8.448469161987305, + -0.6842775344848633, + 2.8699402809143066, + -6.511875152587891, + -0.6202561855316162, + 5.828358173370361, + -3.389129161834717, + 5.048945903778076, + -4.072854995727539, + -1.3884471654891968, + -2.350989580154419, + 0.964514970779419, + -1.7200396060943604, + -2.659045934677124, + 0.16532015800476074, + -4.549874305725098, + -9.327695846557617, + 0.17790627479553223, + -6.683108329772949, + 0.7704529166221619, + -2.5488038063049316, + -5.696393013000488, + 0.3994190990924835, + 2.235865354537964, + -0.5990023612976074, + 6.608945369720459, + -2.7780070304870605, + -0.8334183692932129, + -1.846926212310791, + -4.782318115234375, + 0.31803518533706665, + 3.258277177810669, + 0.9962276220321655, + 0.5018864870071411, + 3.5005369186401367, + 3.3256711959838867, + -1.7546768188476562, + -1.587550401687622, + 3.5477962493896484, + 3.828701972961426, + -0.8211803436279297, + -0.5111339688301086, + 4.519298076629639, + -2.5292069911956787, + 6.1242899894714355, + -0.7431149482727051, + -1.746255874633789, + -8.37911319732666, + -4.277486801147461, + -4.173343658447266, + 1.7651591300964355, + 6.395511150360107, + 2.0172460079193115, + 5.138425827026367, + 9.767654418945312, + -2.8295223712921143, + 0.6998484134674072, + 6.249134540557861, + 3.1901373863220215, + 3.9339191913604736, + -2.594574213027954, + -0.408331960439682, + -2.245051860809326, + 1.1266261339187622, + 5.891650199890137, + 13.50938892364502, + -1.0160918235778809, + 6.752801418304443, + 3.4370522499084473, + 2.5263047218322754, + 5.206596851348877, + 0.6803940534591675, + 0.9277129173278809, + 1.7064063549041748, + -5.790375709533691, + 3.1738908290863037, + 1.059127688407898, + 2.338069438934326, + 6.61030387878418, + 2.671635866165161, + 1.157522201538086, + -1.9415819644927979, + -3.538980007171631, + -5.332464218139648, + 1.3161782026290894, + 0.8320435285568237, + -0.5897457599639893, + 0.9498590230941772, + 4.229214668273926, + -0.6688117980957031, + 1.0724258422851562, + -0.4927985966205597, + -1.7755686044692993, + 3.959083318710327, + 4.149285316467285, + 3.3978776931762695, + -9.978243827819824, + -1.5380462408065796, + 7.4087629318237305, + 4.202554702758789, + -2.7687015533447266, + 0.25136470794677734, + 1.3264962434768677, + 5.635585784912109, + 0.19251585006713867, + 1.741602897644043, + -6.278481483459473, + -1.1933538913726807, + -0.619574785232544, + -3.0721325874328613, + 2.6902434825897217, + 4.064742088317871, + -5.004098415374756, + -1.780687928199768, + -0.41228801012039185, + -7.57974100112915, + 4.488299369812012, + -1.433255910873413, + -1.2146061658859253, + -0.21105408668518066, + -2.5617737770080566, + 3.1626486778259277, + 1.1588956117630005, + 1.7445751428604126, + 1.033748984336853, + -2.3920843601226807, + -4.368431091308594, + 3.7889697551727295, + 2.2920081615448, + 1.3401920795440674, + 9.252674102783203, + -15.942525863647461, + 2.816927909851074, + -5.944433212280273, + -1.5978790521621704, + -2.7387540340423584, + -3.2259597778320312, + -3.1499621868133545, + 0.6428576707839966, + 0.5905978679656982, + 2.9867312908172607, + 9.723103523254395, + -30.513776779174805, + -3.812822103500366, + 4.279253005981445, + 0.9915937185287476, + -6.734917640686035, + -1.3168286085128784, + -3.418973684310913, + -1.1162735223770142, + -12.125401496887207, + 3.3838274478912354, + 0.014208555221557617, + -4.888906002044678, + -2.0454962253570557, + -4.433047771453857, + -0.7843037843704224, + -2.8819119930267334, + -6.289020538330078, + -0.3471546173095703, + 2.049877643585205, + -0.7699152827262878, + 2.7039692401885986, + -2.7063705921173096, + -4.646270275115967, + 1.5208567380905151, + -6.208227157592773, + -1.1031895875930786, + 1.7044909000396729, + 2.5971858501434326, + -0.30290675163269043, + 0.5250946879386902, + -1.698210597038269, + -3.1351771354675293, + 1.2582041025161743, + -24.963003158569336, + 3.8811848163604736, + 4.435772895812988, + 1.99673330783844, + 0.21097588539123535, + -6.617132663726807, + -2.1110284328460693, + -16.327682495117188, + -0.8127005100250244, + 2.0045089721679688, + 1.3823939561843872, + 2.9068830013275146, + 1.0349931716918945, + -1.2217484712600708, + 0.024492885917425156, + 8.338050842285156, + -3.009965658187866, + -4.613037586212158, + -7.332071304321289, + -1.753981590270996, + -4.671860694885254, + 1.695709228515625, + -1.624850869178772, + 5.147912979125977, + -1.6038784980773926, + -2.6029932498931885, + -1.5900661945343018, + 2.072251796722412, + 15.02055549621582, + -1.1407418251037598, + 3.0760226249694824, + -1.2148112058639526, + 3.9204354286193848, + 2.294689178466797, + 0.23883074522018433, + -3.4622480869293213, + -4.527552604675293, + 1.1369619369506836, + -14.831055641174316, + 21.25039291381836, + -2.5483522415161133, + 0.45275557041168213, + -1.7428524494171143, + -0.06272777915000916, + 0.9767210483551025, + 2.4226784706115723, + 1.495591163635254, + -0.8389054536819458, + 0.17351245880126953, + 5.412115097045898, + -3.6459267139434814, + 4.201284408569336, + -2.1541309356689453, + -2.2032179832458496, + 1.2414801120758057, + -4.693887710571289, + -0.7163633108139038, + 4.107325077056885, + 2.5542736053466797, + 0.7173008322715759, + -1.0037561655044556, + -0.1919448971748352, + 11.569953918457031, + -3.5673818588256836, + -2.1263482570648193, + 0.3142416775226593, + 0.49901413917541504, + 2.3762502670288086, + 4.064826488494873, + -2.8513553142547607, + 0.9782007336616516, + 0.5953314304351807, + -1.8497908115386963, + 16.11219596862793, + 2.617403507232666, + -0.2588651478290558, + 0.3448193073272705, + 2.8114330768585205, + 0.6463644504547119, + 3.989434003829956, + 1.046102523803711, + -5.487110614776611, + 0.017807722091674805, + 1.1242125034332275, + -4.45692777633667, + -4.022647857666016, + -1.754709005355835, + -2.4124913215637207, + 0.4957164525985718, + -0.22100386023521423, + -1.119117259979248, + -0.40179818868637085, + -5.069485664367676, + 5.705406188964844, + -1.7677209377288818, + -0.6424906849861145, + -0.41163647174835205, + -3.982661008834839, + -2.884182929992676, + 0.1688225269317627, + -2.3934340476989746, + -8.47053337097168, + 0.6709743738174438, + -0.45499157905578613, + 0.7741034030914307, + -3.0224173069000244, + 1.690291404724121, + 0.18392294645309448, + -4.521805763244629, + 1.4261934757232666, + 0.8562639951705933, + -0.8971900939941406, + -2.539762020111084, + -1.340293288230896, + -3.7499494552612305, + -0.6444900035858154, + -14.242380142211914, + -0.5777985453605652, + -4.330535411834717, + -7.204633712768555, + -3.444828748703003, + -1.4346586465835571, + -5.919709205627441, + -14.078531265258789, + 1.045310378074646, + 2.0437328815460205, + 4.295366287231445, + 1.5572338104248047, + -1.810336947441101, + 0.9819868803024292, + -1.7546027898788452, + -3.9812254905700684, + 6.489669322967529, + 1.5580285787582397, + 1.1918435096740723, + -0.41103053092956543, + 0.13438215851783752, + 0.720067024230957, + -0.8638380765914917, + -4.198234558105469, + -1.9515658617019653, + -3.963935375213623, + -3.1089634895324707, + -3.8205456733703613, + 0.38696932792663574, + 1.6963727474212646, + 0.9472796320915222, + -2.195298910140991, + -1.859921932220459, + 9.795995712280273, + -4.099854946136475, + 6.169092178344727, + -1.3664824962615967, + 0.03053748607635498, + -0.9395459890365601, + 0.9156548976898193, + -8.085450172424316, + 6.295533180236816, + -1.4487125873565674, + 10.511381149291992, + -10.428362846374512, + 0.7263978719711304, + -6.148567199707031, + -2.5727455615997314, + 4.0316972732543945, + -1.2186393737792969, + 6.337735652923584, + -9.992387771606445, + 0.6981872320175171, + 6.846592903137207, + -1.3089897632598877, + -1.20653235912323, + -4.032040596008301, + -2.546762228012085, + -0.25437089800834656, + 1.464930772781372, + -4.493698596954346, + -2.563448667526245, + -0.24184098839759827, + -3.022794246673584, + -1.8452624082565308, + 0.6264224052429199, + 11.342951774597168, + -4.497096538543701, + 0.5765941143035889, + 3.73519229888916, + -2.1972904205322266, + 0.10210883617401123, + 2.7869205474853516, + -3.4916610717773438, + 4.066854953765869, + -1.0567717552185059, + -5.29497766494751, + -4.391786575317383, + 0.9823437929153442, + -4.096922874450684, + -0.05512118339538574, + -0.03465700149536133, + 2.733401298522949, + 2.4528262615203857, + 0.18828873336315155, + 3.1564443111419678, + 1.1846065521240234, + 1.3858098983764648, + -0.6861995458602905, + -1.3448750972747803, + -3.0839343070983887, + -7.538672924041748, + -4.776178359985352, + 2.6965746879577637, + 5.362679481506348, + 3.8674614429473877, + 1.6346449851989746, + 4.05999755859375, + -0.009550847113132477, + -0.4906380772590637, + 3.1433351039886475, + -2.4361672401428223, + 0.9505964517593384, + -4.31318998336792, + 3.7061052322387695, + 0.38223519921302795, + 3.7641918659210205, + -1.3944320678710938, + -3.4997024536132812, + -0.5426039099693298, + -10.909992218017578, + -1.729097843170166, + -3.99041748046875, + -5.220019817352295, + -1.8272229433059692 + ] + }, + "6": { + "gender": "male", + "describe": "魅力大叔", + "tensor": [ + 0.7012296915054321, + 1.3610135316848755, + 3.39646577835083, + -0.008094429969787598, + -2.956493616104126, + 1.447649359703064, + -16.81707763671875, + 1.3165385723114014, + -6.939085960388184, + -9.591889381408691, + -1.7607042789459229, + -1.293820858001709, + -0.9996484518051147, + -2.016674280166626, + 3.936718463897705, + -2.564424753189087, + 1.4031779766082764, + -3.44138240814209, + 5.8537797927856445, + -1.1353249549865723, + 14.581316947937012, + 3.1097331047058105, + -1.6779801845550537, + 8.450864791870117, + -0.9733300805091858, + 1.54122793674469, + -12.886590003967285, + -8.663335800170898, + -0.02191370725631714, + -0.1383996605873108, + 13.198201179504395, + -6.673137664794922, + -0.7059332132339478, + -0.21299010515213013, + -1.76444411277771, + -7.274956226348877, + -2.983980655670166, + -2.3984298706054688, + 1.2026405334472656, + 2.3637046813964844, + 2.461937189102173, + 4.158989429473877, + -5.081063270568848, + -1.4022908210754395, + 11.20211410522461, + -0.17220991849899292, + 1.2993746995925903, + -10.780073165893555, + -1.0839036703109741, + -2.53551983833313, + -3.2315518856048584, + -1.0771851539611816, + 0.7903404235839844, + -1.0418658256530762, + 0.3924499452114105, + 3.507899761199951, + 0.2607686519622803, + -2.5281851291656494, + -2.815645694732666, + 0.7620531916618347, + 0.8431705236434937, + -3.353843927383423, + 7.700700759887695, + -1.0815492868423462, + -0.191389262676239, + 1.6445974111557007, + 3.0237505435943604, + 19.683460235595703, + -2.3807947635650635, + -3.6788768768310547, + -1.2347506284713745, + 0.429561972618103, + 0.6154649257659912, + 2.7847533226013184, + 2.2648258209228516, + -0.9995355606079102, + 3.4056525230407715, + 3.798691749572754, + 2.061516523361206, + -6.075375080108643, + 2.353433847427368, + -5.617636680603027, + 1.7562079429626465, + -1.9936397075653076, + 3.5877857208251953, + 2.699364185333252, + -2.184819459915161, + -2.9797418117523193, + 0.46232616901397705, + 5.401594638824463, + 2.45023250579834, + 0.5539112091064453, + 1.8715126514434814, + 0.20166614651679993, + 2.387077569961548, + -12.879653930664062, + 1.482276439666748, + 0.0569230318069458, + 2.881911039352417, + 5.355575084686279, + -0.2945852279663086, + 2.2402737140655518, + 0.6084542274475098, + -2.3656628131866455, + -1.0075836181640625, + -4.851868629455566, + 2.968407392501831, + -0.8007358312606812, + 3.143362522125244, + -2.599337100982666, + -1.996307611465454, + -2.5645618438720703, + 15.572317123413086, + -0.05885687470436096, + 0.07328790426254272, + 4.398686408996582, + -2.1587440967559814, + 3.027940511703491, + -3.4519500732421875, + -8.081666946411133, + 3.8525447845458984, + -1.9862751960754395, + -4.418190002441406, + 0.8439959287643433, + 12.921051025390625, + 1.8022541999816895, + 3.5464463233947754, + -8.085665702819824, + 6.202066421508789, + 2.03235125541687, + 1.3607473373413086, + 1.3817753791809082, + -1.983024001121521, + 5.49685001373291, + 3.1680190563201904, + -0.09822547435760498, + -3.855092763900757, + -6.8974504470825195, + -5.820518970489502, + -1.3567439317703247, + -0.8104068040847778, + 1.6821913719177246, + 1.6670749187469482, + 2.771556854248047, + 0.9862975478172302, + -4.48850154876709, + -0.16111022233963013, + 3.1034421920776367, + -1.0333281755447388, + -1.179829478263855, + -0.7420411109924316, + -2.1085691452026367, + 1.9067031145095825, + -7.139625549316406, + -0.8254784345626831, + 1.784571647644043, + 0.0476984977722168, + -0.8253531455993652, + -3.5584497451782227, + -1.6127946376800537, + -1.201629638671875, + 1.7299511432647705, + -0.6930741667747498, + 6.074588775634766, + -0.8248579502105713, + 4.165324687957764, + -0.07626284658908844, + 0.3725301921367645, + 0.45160365104675293, + 4.374938011169434, + 2.5030713081359863, + 8.6120023727417, + 2.497767686843872, + 1.13591730594635, + -1.5467902421951294, + -0.9651950597763062, + 3.3858096599578857, + 2.4482810497283936, + 0.2458830177783966, + -4.474488258361816, + 1.0640747547149658, + -1.7533633708953857, + 1.3617867231369019, + 5.605762481689453, + -0.48469340801239014, + 1.656693458557129, + -15.379127502441406, + -1.599163293838501, + -2.222395420074463, + 1.5902316570281982, + 5.272763729095459, + 2.190390110015869, + -8.943218231201172, + -4.36551570892334, + -3.8875389099121094, + -4.523147106170654, + 0.54365074634552, + -2.6982431411743164, + -6.895460605621338, + -0.4918758273124695, + -9.037663459777832, + 0.5699080228805542, + 1.8245596885681152, + -2.8260133266448975, + -3.40767765045166, + -3.6997427940368652, + 1.0955899953842163, + 9.044086456298828, + 8.072587013244629, + 2.238299608230591, + 0.5395057201385498, + 0.8673012256622314, + -0.009196102619171143, + -0.9412248134613037, + 3.2226815223693848, + 0.7173181772232056, + -1.6187342405319214, + 1.4779026508331299, + -2.262561082839966, + 6.98140287399292, + -4.17310094833374, + 8.801629066467285, + -2.0260186195373535, + 6.1123738288879395, + -4.9606475830078125, + -3.293057680130005, + 1.998908281326294, + 1.1546268463134766, + -1.4014016389846802, + -1.7131311893463135, + 1.7220723628997803, + -1.4074070453643799, + -0.15615415573120117, + -0.9544539451599121, + -0.7511094808578491, + 5.673070430755615, + 1.2961543798446655, + 0.8454970121383667, + -4.712825298309326, + 0.5317492485046387, + -2.5683135986328125, + 2.556936264038086, + 8.898430824279785, + 0.8767538070678711, + 2.308897018432617, + -0.83380126953125, + -1.1369504928588867, + -3.5149240493774414, + -5.56275749206543, + 3.0981462001800537, + 1.2662851810455322, + -0.2459496259689331, + -0.3746083378791809, + 6.2300519943237305, + 2.2599031925201416, + 0.40363967418670654, + 0.1923087239265442, + -5.998404502868652, + -3.647369384765625, + -1.8696292638778687, + -2.028249979019165, + -4.475456237792969, + -0.12672418355941772, + 1.008436679840088, + -1.5408891439437866, + -4.287425994873047, + -3.2505927085876465, + 1.5005245208740234, + -2.667858839035034, + 2.4717905521392822, + 0.39619511365890503, + 8.48967456817627, + -6.359307289123535, + -0.4319331645965576, + 1.304768443107605, + -2.771691083908081, + -7.859455108642578, + -1.7096726894378662, + -0.020764470100402832, + 4.926934242248535, + 3.617738723754883, + -3.936336040496826, + 4.165213584899902, + 4.195245265960693, + 5.969150066375732, + 2.744511604309082, + -3.2951200008392334, + 0.4864218235015869, + -7.920171737670898, + -1.8820655345916748, + 3.4702603816986084, + 4.07712984085083, + 3.117943286895752, + -0.8933016061782837, + -3.5176784992218018, + 8.76878547668457, + -3.5279173851013184, + -0.6756330132484436, + -2.290565013885498, + -4.22700834274292, + 6.282143592834473, + -2.099891424179077, + -3.1953890323638916, + -6.588860034942627, + -0.26164230704307556, + 5.051580905914307, + 9.062955856323242, + -0.26485419273376465, + -4.240556716918945, + 3.619452953338623, + 3.399022102355957, + 2.170073986053467, + 8.007665634155273, + -2.1389455795288086, + 0.8937911987304688, + 5.1345319747924805, + 2.997128486633301, + 3.574401378631592, + 0.742560863494873, + 0.09045612812042236, + -2.207505702972412, + -0.7508864402770996, + -2.62313175201416, + -0.06334352493286133, + -3.9947848320007324, + 14.090645790100098, + 1.347093939781189, + -19.519153594970703, + 0.4845045804977417, + -1.2908964157104492, + -0.3041894733905792, + -11.892765045166016, + 0.07772812247276306, + -4.821030616760254, + -1.992897629737854, + -8.21587085723877, + -0.5354979038238525, + -13.985715866088867, + 1.2719024419784546, + -1.2255322933197021, + 3.221683979034424, + 1.5832406282424927, + 5.063075065612793, + 0.9908344745635986, + 4.705610275268555, + -1.7544794082641602, + -4.478928565979004, + -1.7719560861587524, + -3.1945698261260986, + -6.225736618041992, + 1.5951573848724365, + 6.093227863311768, + 0.6294212341308594, + 2.32242488861084, + -4.324664115905762, + 4.308273792266846, + 5.514974594116211, + 0.6249629855155945, + -6.322526931762695, + -2.625746250152588, + 0.393731951713562, + -3.169130563735962, + -7.01361083984375, + -4.787878513336182, + -2.1623878479003906, + -2.8278589248657227, + -5.856457710266113, + -3.3263840675354004, + -1.442731499671936, + 4.931445121765137, + -0.036016762256622314, + 2.678313970565796, + 0.5862295031547546, + -6.5029072761535645, + 5.881024360656738, + 4.4900712966918945, + -1.8439761400222778, + -1.4892230033874512, + 1.608293056488037, + 2.7735369205474854, + 7.013861179351807, + 1.8022575378417969, + 1.8149056434631348, + -14.166986465454102, + 5.954548358917236, + 8.974715232849121, + 0.5850036144256592, + 0.2864387035369873, + -0.46632683277130127, + -6.2114152908325195, + -1.4460952281951904, + 1.0813425779342651, + 2.6893272399902344, + -8.245624542236328, + 6.033785820007324, + -1.8585762977600098, + 2.082540512084961, + 1.996144413948059, + 2.928102970123291, + -0.8482429385185242, + 1.0818119049072266, + 0.7608628273010254, + -2.1549038887023926, + -3.8083646297454834, + 1.801958680152893, + -2.3000526428222656, + 4.289517402648926, + 1.2967063188552856, + 8.842850685119629, + -6.2555036544799805, + 2.7615368366241455, + 0.8497544527053833, + -1.556740403175354, + -3.878498077392578, + 1.2357186079025269, + 1.8172731399536133, + -13.559937477111816, + 1.1032123565673828, + -0.13342857360839844, + -0.10669493675231934, + -2.448697566986084, + -3.2558724880218506, + 2.4838993549346924, + 3.605705738067627, + 1.9528405666351318, + 3.5400848388671875, + 2.5827672481536865, + 8.768837928771973, + 1.5520764589309692, + -1.7851762771606445, + -2.0974819660186768, + -0.7305644750595093, + -1.8968324661254883, + 0.9597162008285522, + -6.702141761779785, + 1.4470282793045044, + -6.236487865447998, + 1.0159541368484497, + -1.3518344163894653, + -2.208327293395996, + 0.8336156606674194, + 0.32959118485450745, + -1.093770980834961, + -3.4319334030151367, + -7.248028755187988, + -4.071793556213379, + 3.7314229011535645, + 9.180686950683594, + -0.30082687735557556, + 4.336746692657471, + 0.8515984416007996, + 0.5358705520629883, + -1.6658825874328613, + 0.7247122526168823, + 3.5128281116485596, + 2.32541561126709, + 1.2308626174926758, + -0.890510082244873, + -4.615118026733398, + -4.379206657409668, + 0.5270493030548096, + -10.238822937011719, + 5.852690696716309, + -5.560914993286133, + 2.695261240005493, + 3.672548294067383, + 7.505858421325684, + 5.210440635681152, + 2.9570298194885254, + -0.8373517990112305, + 3.5618834495544434, + 13.718652725219727, + -1.7328331470489502, + -1.042620062828064, + -1.251386046409607, + -1.9724022150039673, + 2.9201536178588867, + 4.119412899017334, + 4.3339314460754395, + 5.38139009475708, + -4.879079341888428, + 4.653220176696777, + 4.6987624168396, + 1.4155347347259521, + -1.5271474123001099, + -1.4447356462478638, + 4.136672496795654, + 1.5511687994003296, + -7.921794414520264, + -3.5242726802825928, + -3.1114141941070557, + 1.7363907098770142, + 2.522533655166626, + -9.019165992736816, + -0.740471363067627, + 4.235533714294434, + -0.9225376844406128, + -2.4813549518585205, + 0.6644167900085449, + -2.200934886932373, + -3.1276333332061768, + 5.337038516998291, + 2.000976085662842, + -0.7906198501586914, + 1.1021819114685059, + -14.856067657470703, + 3.924003839492798, + -1.401125192642212, + 1.079854965209961, + 1.113747477531433, + 1.840437889099121, + 2.3545455932617188, + -4.305612087249756, + -0.04942706227302551, + 5.42827033996582, + -0.7714943885803223, + -2.0423505306243896, + -0.4833862781524658, + 4.004120826721191, + -3.6771438121795654, + -10.776636123657227, + 2.6384682655334473, + -9.911425590515137, + 0.5196677446365356, + 2.366983652114868, + -1.9884895086288452, + 5.3275227546691895, + -3.1684882640838623, + -1.7619175910949707, + -2.3915209770202637, + 0.7289271354675293, + 7.273603916168213, + -3.362955093383789, + 3.5974953174591064, + -4.2356038093566895, + 2.2141265869140625, + -0.4546469449996948, + 13.841136932373047, + 2.2095787525177, + 2.318836212158203, + 1.352941870689392, + -2.6538381576538086, + -0.8665124773979187, + 0.5178720951080322, + -10.150394439697266, + 0.7362008094787598, + -17.282060623168945, + 2.8439669609069824, + 3.044652223587036, + 0.5893353819847107, + -2.641613006591797, + -1.2874345779418945, + 0.8609415292739868, + 1.4172934293746948, + -0.03917503356933594, + -2.1336874961853027, + 6.46640682220459, + -2.698610305786133, + 1.9905767440795898, + 2.0244669914245605, + -0.282240092754364, + -6.5704169273376465, + 2.3217904567718506, + 1.2583013772964478, + 2.282055139541626, + -2.525794506072998, + -5.369611740112305, + -1.346961498260498, + 5.892597198486328, + 1.6499640941619873, + 4.766870021820068, + 6.9387288093566895, + 3.7878658771514893, + -3.2543625831604004, + -0.49921292066574097, + -0.7369686365127563, + 4.64171838760376, + 4.485472202301025, + -0.7187912464141846, + -1.651230812072754, + 1.0234816074371338, + -1.1133804321289062, + -0.7466262578964233, + -2.165217876434326, + 3.3232288360595703, + 0.5017114877700806, + 0.9132932424545288, + -1.6524723768234253, + 0.6195668578147888, + -7.016081809997559, + -1.2440531253814697, + 0.2877267599105835, + 3.220010280609131, + 1.8992875814437866, + -0.564516544342041, + 0.8574780225753784, + 1.256371021270752, + -1.0829975605010986, + 0.0070986561477184296, + 12.582639694213867, + -1.2350958585739136, + -3.2460925579071045, + -0.33048465847969055, + 0.19237279891967773, + -0.14008605480194092, + 5.199833393096924, + -5.9311747550964355, + -3.0799965858459473, + -0.7024275660514832, + -0.5899451971054077, + 2.3877270221710205, + 0.499525249004364, + 1.495793342590332, + -1.4507339000701904, + -3.7356646060943604, + 2.3916175365448, + -1.5422887802124023, + 1.9525766372680664, + -3.4538915157318115, + 0.11187183856964111, + 2.5619211196899414, + -0.3043680191040039, + -0.2306811362504959, + -7.853137969970703, + -0.10778915882110596, + -2.87916898727417, + 2.9089856147766113, + 0.9183294773101807, + 4.977611064910889, + -11.934244155883789, + 0.05486255884170532, + -10.28446102142334, + 1.0259559154510498, + -2.380462169647217, + -6.551632881164551, + 3.9148430824279785, + -3.0149338245391846, + -1.1504621505737305, + 9.128371238708496, + -0.3624476492404938, + -1.7181386947631836, + 2.8521058559417725, + -1.1990864276885986, + -0.9706964492797852, + -0.034561753273010254, + -8.045485496520996, + -0.4238252639770508, + -3.60249400138855, + 2.275899648666382, + -0.9636947512626648, + -1.4411450624465942, + -2.130312919616699, + -1.7266547679901123, + -9.852434158325195, + -2.0721395015716553, + 1.5777068138122559, + -1.6014046669006348, + 0.7677749395370483, + 0.017068341374397278, + 3.669796943664551, + 8.242528915405273, + -3.805403470993042, + 1.2453131675720215, + 5.35117769241333, + 1.549508810043335, + -4.379016399383545, + -1.331546425819397, + -8.191401481628418, + -0.8837754726409912, + 2.464109420776367, + 4.987374305725098, + -2.227055072784424, + 1.7534418106079102, + 0.19075453281402588, + 1.0435988903045654, + 1.1173254251480103, + -5.314177989959717, + 2.382411003112793, + -5.707756519317627, + 8.008402824401855, + -5.40284538269043, + 0.5246977210044861, + -0.8663120269775391, + -1.835348129272461, + -0.7919385433197021, + 2.178382158279419, + -3.164788246154785, + -0.11270982027053833, + 2.9004006385803223, + 3.5901079177856445, + 0.20332151651382446, + -5.765172004699707, + 12.47374153137207, + -6.53895378112793, + 7.64139986038208, + 2.848630428314209, + 4.492152690887451, + -2.0889811515808105, + -0.9666059017181396, + -8.30898666381836, + 5.1399641036987305, + 0.03550076484680176, + -1.9067089557647705, + -0.5847710967063904, + -1.249319314956665, + 1.7097370624542236, + 7.137476444244385, + 0.057986438274383545, + 0.9901808500289917, + -1.2996652126312256, + 2.9890964031219482, + 1.8740196228027344, + -6.8576202392578125, + -0.6415701508522034, + -0.32790452241897583, + -0.4462348222732544, + -0.7532962560653687, + 0.5347988605499268, + -1.367631196975708, + 4.290134429931641, + 2.7212729454040527, + 0.33785122632980347, + -2.161768674850464, + 0.2662666440010071, + -1.4439330101013184, + -0.8707787990570068, + 0.7147600650787354, + 1.1223258972167969, + -1.6498441696166992, + 1.082627296447754, + -3.3004274368286133, + -1.6936180591583252, + 3.472874879837036, + -3.471240282058716, + -1.5366657972335815, + 0.2806732952594757, + 2.7502596378326416, + 1.8498973846435547, + 6.249131202697754, + 0.6374661922454834, + -4.279997825622559, + 0.20730122923851013, + 7.594688415527344, + -3.462740421295166, + -13.101119995117188, + -2.455596923828125, + -2.301858901977539, + 2.713482141494751, + -3.364065647125244, + 1.203295350074768, + 0.022697508335113525, + 3.088078260421753, + 0.7438787221908569, + 0.30065953731536865, + -1.0361191034317017, + -2.420252561569214, + 2.116575241088867, + -0.07989060878753662, + -5.294960975646973, + 1.2614039182662964, + 0.2745763659477234, + -0.8858920335769653, + 3.524301052093506, + -6.584267616271973, + 4.808055877685547, + -0.5963267087936401, + -0.14897370338439941, + -0.40607741475105286 + ] + }, + "7": { + "gender": "女性", + "describe": "比较甜美", + "tensor": [ + 0.2495962381362915, + 3.865365505218506, + 12.748506546020508, + -1.8969058990478516, + 3.0777668952941895, + 1.1467156410217285, + 2.1736907958984375, + -2.9017369747161865, + 0.821898341178894, + 12.284990310668945, + 0.17881721258163452, + -4.3223395347595215, + -2.75478196144104, + 0.09943586587905884, + -5.084339141845703, + -1.6844873428344727, + 2.03182315826416, + 0.2897930145263672, + -5.584497928619385, + -1.7826945781707764, + 2.267838954925537, + -1.5620324611663818, + 2.654265880584717, + -6.04062557220459, + 4.623810768127441, + 1.1765904426574707, + 4.659332275390625, + -1.723069190979004, + 3.13741135597229, + 2.2118515968322754, + 5.93443489074707, + -0.903515636920929, + 0.9293050765991211, + 2.08538818359375, + 3.6127614974975586, + -15.427614212036133, + 2.1015241146087646, + 2.079888343811035, + -4.927841663360596, + 2.649477005004883, + 0.1617920994758606, + -0.7871791124343872, + -4.418732643127441, + -2.9339592456817627, + -19.736297607421875, + 0.7764341831207275, + -0.8962998390197754, + -5.996053218841553, + -2.4658362865448, + -0.2121090292930603, + 1.3127002716064453, + -0.3777937591075897, + -0.6517413854598999, + 1.245448350906372, + -1.949591875076294, + 1.3479446172714233, + 2.560361623764038, + 0.1368425190448761, + 1.5432933568954468, + 1.7385499477386475, + -1.5110613107681274, + -5.05799674987793, + 5.034884452819824, + 0.39575016498565674, + -2.479963541030884, + 3.033262252807617, + 0.5916898250579834, + 17.004377365112305, + 3.8061468601226807, + 5.473971843719482, + -3.3434956073760986, + -0.49412569403648376, + -3.281872510910034, + -1.538051962852478, + 14.944835662841797, + 2.9487900733947754, + 0.9315800666809082, + 0.5451405048370361, + -2.516726493835449, + -0.6497408151626587, + 0.12835854291915894, + -0.7407213449478149, + 1.581009864807129, + 0.44159579277038574, + -0.03650927543640137, + -3.245295286178589, + 8.370223999023438, + 2.3245015144348145, + 2.166952610015869, + 1.3527553081512451, + -0.020734727382659912, + 2.1524600982666016, + 4.5185017585754395, + -1.2506011724472046, + 1.741041898727417, + -8.574015617370605, + 1.4321409463882446, + 4.276580333709717, + 0.20476356148719788, + -2.973773717880249, + 6.1035356521606445, + 1.0034492015838623, + 0.2419261932373047, + -3.5046191215515137, + -1.7793244123458862, + 1.4383543729782104, + 3.671032428741455, + -7.501865863800049, + 7.77596378326416, + 2.152954339981079, + 5.071253776550293, + 4.991631507873535, + -1.3588693141937256, + 0.47562873363494873, + -0.30974912643432617, + 1.1581974029541016, + -4.090409755706787, + 5.065822124481201, + 2.276521682739258, + 3.7762370109558105, + -2.080519676208496, + 0.6069101691246033, + 2.0925588607788086, + 7.698043346405029, + 12.359992980957031, + -0.4114636182785034, + -0.2745857238769531, + -0.6699095368385315, + -3.3942251205444336, + 1.3852885961532593, + 1.8557528257369995, + 1.3975324630737305, + -5.88663911819458, + 3.112157106399536, + -2.112499475479126, + 0.015586018562316895, + -10.071098327636719, + 1.558060646057129, + -10.99078369140625, + -0.5361475944519043, + 0.8462710380554199, + -3.2482826709747314, + 1.4847768545150757, + -0.7964798808097839, + 1.753746747970581, + -0.5933440923690796, + 1.91376531124115, + -0.7571201324462891, + -0.35967904329299927, + -2.104076385498047, + 6.682676792144775, + -0.6323176622390747, + 0.08222363889217377, + -8.796497344970703, + -1.6495752334594727, + -1.037912130355835, + -2.9612348079681396, + -0.0715177059173584, + -2.986506462097168, + 0.43446552753448486, + -1.430722713470459, + 2.615290880203247, + -1.5028111934661865, + -13.27345085144043, + -1.8110334873199463, + 2.2800207138061523, + 0.026054173707962036, + 2.212174654006958, + 3.5296008586883545, + -7.256204128265381, + 1.9631483554840088, + 5.4233012199401855, + -0.8630899786949158, + -1.7843858003616333, + 1.7950173616409302, + -1.1657543182373047, + 2.710947036743164, + -2.9630870819091797, + -2.614133834838867, + -0.8502099514007568, + 0.7579128742218018, + -5.486347675323486, + 6.051227569580078, + 2.135279655456543, + 0.7018966674804688, + 3.2877511978149414, + -1.977804183959961, + 2.217289686203003, + -4.813913822174072, + 0.16021224856376648, + 1.693977952003479, + -5.038921356201172, + -1.5073827505111694, + -3.025449752807617, + -3.832465887069702, + -10.144283294677734, + -0.7339996695518494, + 2.4486498832702637, + -6.03171443939209, + 2.0572521686553955, + -4.673495292663574, + -2.6206064224243164, + -0.5800201892852783, + -0.8032650947570801, + -6.671832084655762, + 0.12975424528121948, + -2.500028133392334, + 11.181193351745605, + -8.05068588256836, + 4.891804218292236, + 1.9742345809936523, + -2.3732571601867676, + -1.94333016872406, + -1.6052918434143066, + 1.5254528522491455, + -3.242009162902832, + -2.048368453979492, + 7.923051834106445, + 0.7701371908187866, + 5.170846462249756, + -1.6146776676177979, + -2.6991958618164062, + 2.0878849029541016, + 7.232151031494141, + 1.1195470094680786, + 0.32042956352233887, + -2.5148396492004395, + -0.773892879486084, + -0.35861504077911377, + -1.2090044021606445, + 3.8837318420410156, + 0.26915109157562256, + -1.6751234531402588, + -2.5673487186431885, + 3.0271477699279785, + -2.4224483966827393, + 0.8802991509437561, + 4.428066253662109, + -5.993630886077881, + -3.0665512084960938, + 1.8992295265197754, + -1.75014328956604, + -8.766609191894531, + -2.8394057750701904, + 2.524515151977539, + 0.235491544008255, + -0.8646097779273987, + 1.4916679859161377, + -6.61916446685791, + -2.9384632110595703, + -3.621809482574463, + -1.8544061183929443, + -0.41493651270866394, + -0.27991271018981934, + 0.1319185495376587, + 3.031510353088379, + 3.671935796737671, + -9.336740493774414, + 3.0785138607025146, + 0.1452159285545349, + -5.979244232177734, + 1.444939136505127, + 1.0914031267166138, + -1.0906718969345093, + -0.6784477829933167, + 2.393153190612793, + -5.520705699920654, + 5.2267255783081055, + -2.6575400829315186, + 2.880363941192627, + 2.236196517944336, + 2.553039789199829, + -3.1670546531677246, + 3.095086097717285, + 1.1343438625335693, + -5.439387798309326, + -3.683305263519287, + -1.304097056388855, + 3.7453927993774414, + 4.166508674621582, + -1.137892246246338, + -3.7269809246063232, + 0.6062431335449219, + -1.5424270629882812, + -2.425835609436035, + 3.7784790992736816, + 0.4332777261734009, + 0.4930005669593811, + -1.442858099937439, + -0.31833213567733765, + 2.2827916145324707, + 0.794496476650238, + -1.5933482646942139, + 0.6979759931564331, + -6.37945556640625, + -0.06496477127075195, + -0.13828229904174805, + 3.8352088928222656, + -3.061307668685913, + 1.0836983919143677, + -0.21626496315002441, + 3.083305835723877, + -1.020559549331665, + -3.3099215030670166, + 0.3099902272224426, + -0.22319525480270386, + 0.8718838691711426, + 0.052682578563690186, + 2.5853018760681152, + -4.85476016998291, + -0.044087886810302734, + 0.16405758261680603, + 2.5050454139709473, + -5.297297477722168, + -1.4447567462921143, + -0.505770206451416, + 5.751461982727051, + -1.3287426233291626, + 1.2690026760101318, + 0.8757224082946777, + -0.3897106647491455, + -1.1728546619415283, + -1.9555734395980835, + 2.0508179664611816, + -0.7319828271865845, + 9.841766357421875, + 6.753002643585205, + -2.6457509994506836, + 1.5427427291870117, + 0.19591712951660156, + 1.031954288482666, + 7.359136581420898, + -1.2730138301849365, + -10.989518165588379, + 3.110379219055176, + 0.2788337469100952, + 7.389728546142578, + -9.475607872009277, + -4.280364513397217, + -1.0070652961730957, + 1.5577259063720703, + -3.065678596496582, + 2.8411524295806885, + 3.5057551860809326, + 0.10412877798080444, + 1.0965571403503418, + -2.0129361152648926, + -1.9894322156906128, + 1.2643709182739258, + 2.658355712890625, + 2.658634901046753, + -1.5290570259094238, + -2.2431037425994873, + -5.117453575134277, + -0.4900122284889221, + -3.3779406547546387, + 1.2552533149719238, + 4.202397346496582, + 1.1590492725372314, + 7.776023864746094, + -4.842867374420166, + -0.754375696182251, + 11.389312744140625, + 1.9970941543579102, + 3.8127055168151855, + -14.459756851196289, + -3.4842171669006348, + -6.678285598754883, + -2.195275068283081, + 3.938746452331543, + 1.343052864074707, + -1.4334031343460083, + -1.8121663331985474, + 4.166567802429199, + -13.675705909729004, + 0.6431447267532349, + -4.0986223220825195, + -2.7828850746154785, + -4.5761399269104, + 0.7314238548278809, + -14.146074295043945, + 1.7283673286437988, + -3.0535974502563477, + -0.20384836196899414, + 1.6135962009429932, + 2.8175430297851562, + 3.9622483253479004, + 6.603145122528076, + -1.7673227787017822, + 3.1509201526641846, + 1.3196990489959717, + 0.6432187557220459, + 1.8711644411087036, + 1.6348991394042969, + -6.023777961730957, + -1.6209065914154053, + -2.6556589603424072, + -1.1672695875167847, + 3.2860875129699707, + 2.1239447593688965, + 0.0637262761592865, + 4.462463855743408, + -2.3256757259368896, + 4.752902507781982, + -9.037857055664062, + -0.12375417351722717, + -0.07071530818939209, + 2.3752329349517822, + 0.7159271240234375, + -14.74405288696289, + 0.09174126386642456, + 1.6363370418548584, + -7.836086273193359, + 3.121561050415039, + -2.049485921859741, + -3.419342517852783, + -1.9594440460205078, + 3.5135109424591064, + 0.9602921009063721, + 2.042067050933838, + -0.8890197277069092, + -1.6450719833374023, + -1.6006102561950684, + -1.2145168781280518, + -4.670619010925293, + -4.10589599609375, + 5.630643844604492, + 18.835586547851562, + 0.1317804604768753, + -0.8496537208557129, + -2.7530734539031982, + -0.1932973861694336, + -4.125395774841309, + -0.24738824367523193, + -3.4928693771362305, + -2.0568161010742188, + -6.872483730316162, + -1.2134803533554077, + 0.8005082011222839, + 0.058432042598724365, + 7.552270889282227, + -1.566159725189209, + 3.3392531871795654, + 1.1542900800704956, + 4.789858341217041, + -1.5617378950119019, + -4.823060989379883, + -2.9113926887512207, + 2.486452579498291, + 0.8846592903137207, + 0.4683930277824402, + 2.3937366008758545, + -1.0368311405181885, + -1.6990807056427002, + 1.6918458938598633, + -3.5759596824645996, + -2.508336305618286, + 3.7518157958984375, + -3.4628100395202637, + -0.862148106098175, + -0.42386651039123535, + -2.994044065475464, + 5.310742378234863, + -0.7134106159210205, + -3.257432460784912, + 0.02926844358444214, + -5.836378574371338, + 4.700139045715332, + 0.8189144134521484, + 8.301166534423828, + -1.6005539894104004, + 1.4083658456802368, + -4.803012847900391, + 6.858063220977783, + -2.5369129180908203, + -4.223547458648682, + -1.3783775568008423, + 6.3374810218811035, + -1.5358328819274902, + -0.9565061330795288, + 2.2432870864868164, + -0.27391695976257324, + 1.355168104171753, + 1.2093968391418457, + 2.7560324668884277, + -1.1315339803695679, + 1.535068392753601, + 0.8657379746437073, + 4.655749320983887, + -4.570915222167969, + 0.015320360660552979, + -1.197028636932373, + 2.693551778793335, + -7.193924427032471, + 11.51736068725586, + 2.238269805908203, + -3.888000011444092, + -3.466765880584717, + 1.413784384727478, + -1.6357455253601074, + 0.9358183145523071, + 1.68583083152771, + -3.342369556427002, + -4.230857849121094, + -7.54135799407959, + -10.638771057128906, + -1.2624657154083252, + 6.879008769989014, + -8.238917350769043, + 7.091472148895264, + -0.5278787016868591, + 0.09296303987503052, + 20.34925079345703, + 0.3961385488510132, + -3.2342755794525146, + 3.12939453125, + 2.662628173828125, + -1.6386890411376953, + 1.014318823814392, + -5.290652751922607, + -5.553147792816162, + 5.1119384765625, + 3.090921401977539, + -0.4405357837677002, + 4.794600009918213, + 1.2382100820541382, + -0.18998855352401733, + -2.951573133468628, + -2.0807061195373535, + 2.86212420463562, + 0.7500718832015991, + 1.434441089630127, + -3.603184938430786, + -0.8444229364395142, + -2.946535110473633, + -0.8497343063354492, + 2.0089974403381348, + -12.471989631652832, + 1.0336003303527832, + -2.186319351196289, + 1.5164824724197388, + -0.4281848669052124, + -4.465022087097168, + 0.5770759582519531, + -4.674162864685059, + -0.6204319000244141, + -4.810698986053467, + -3.0538196563720703, + 2.091273784637451, + 2.9928722381591797, + -1.687894344329834, + 1.0403716564178467, + 14.545158386230469, + 4.2887701988220215, + -5.3542351722717285, + 5.010317802429199, + 5.942951202392578, + -2.8021504878997803, + -3.651014804840088, + 1.2703595161437988, + 2.8523290157318115, + -10.353667259216309, + 0.3811795115470886, + -0.5473726987838745, + 1.5331511497497559, + -1.4715301990509033, + -3.568645715713501, + 2.0930802822113037, + 1.83669114112854, + 2.445314407348633, + 7.494604110717773, + 1.3158562183380127, + -0.7581784725189209, + -1.9718620777130127, + 2.697996139526367, + -11.680802345275879, + 9.44210433959961, + -5.7532639503479, + -4.934546947479248, + -3.947920322418213, + 4.6700520515441895, + 5.1451029777526855, + -1.6069539785385132, + -7.462682247161865, + 1.755192518234253, + 3.097515821456909, + 0.03336744010448456, + -4.930015563964844, + -2.099385976791382, + 1.0712924003601074, + -1.9186031818389893, + 2.288512706756592, + 1.0694270133972168, + -2.2325456142425537, + 3.467742681503296, + -2.1796302795410156, + -0.18109548091888428, + 0.5733957886695862, + 1.2001701593399048, + 6.152682781219482, + 2.7574989795684814, + -3.8757240772247314, + -2.9833877086639404, + -0.705284833908081, + -0.14398272335529327, + -0.057985126972198486, + 6.708841800689697, + 2.656498670578003, + -0.007159113883972168, + 4.0104546546936035, + -11.34063720703125, + 1.1690819263458252, + -0.2589763104915619, + 3.128523588180542, + -4.334938049316406, + -0.40357404947280884, + -1.9052822589874268, + 0.7938994765281677, + 0.21463212370872498, + -1.6767101287841797, + 0.5413951277732849, + -3.9531517028808594, + 0.9049205780029297, + 1.193774938583374, + -0.10800999402999878, + -4.952024459838867, + 3.338761806488037, + -3.0284178256988525, + 7.087174415588379, + -1.8569810390472412, + -2.043816089630127, + -22.18531608581543, + 2.225727081298828, + 3.574542999267578, + -1.9758846759796143, + -2.7165846824645996, + 1.155544638633728, + 0.2195473313331604, + 0.6447229385375977, + -2.814403772354126, + -1.2276057004928589, + 0.36894315481185913, + 10.610455513000488, + -6.76943826675415, + 2.495607852935791, + 1.1056804656982422, + -0.15151602029800415, + 1.1510106325149536, + 3.462108612060547, + 4.7592620849609375, + -2.893435478210449, + -0.8326308727264404, + 1.2413440942764282, + -7.736032962799072, + 4.958855628967285, + 1.6171073913574219, + 3.6594483852386475, + -1.3718321323394775, + 3.9627432823181152, + -0.8093161582946777, + 3.399313449859619, + 0.5229105949401855, + -8.899938583374023, + 3.235208749771118, + -2.3715131282806396, + -1.5021004676818848, + -4.029853820800781, + 5.5549092292785645, + 6.626331329345703, + 1.4463779926300049, + -0.09489340335130692, + -3.108083486557007, + -6.285879135131836, + 0.2761945128440857, + 3.739060640335083, + 2.7256717681884766, + 1.9083929061889648, + -1.1058125495910645, + -2.522367238998413, + 4.005405902862549, + 4.445854187011719, + 0.8810485601425171, + -0.5490541458129883, + 3.064664363861084, + 1.4412248134613037, + -0.24445709586143494, + -4.515631675720215, + -0.6304499506950378, + 1.6949670314788818, + -9.223138809204102, + 5.5765862464904785, + -6.223435878753662, + 5.0048298835754395, + -1.881685495376587, + 1.244286298751831, + -0.7186371684074402, + 4.752323150634766, + -7.663304328918457, + 0.42494189739227295, + -0.4524528980255127, + 6.582937717437744, + 7.66940450668335, + 0.5357797741889954, + -2.527879476547241, + -0.17378711700439453, + -0.6049096584320068, + -6.137734889984131, + -0.2593413293361664, + -2.6887660026550293, + 1.5091079473495483, + -4.401906490325928, + 1.9829086065292358, + 2.199923276901245, + -1.8329558372497559, + -7.089094161987305, + -0.9719533920288086, + -2.799797534942627, + 1.5914210081100464, + -1.5930593013763428, + -4.60656213760376, + 9.106892585754395, + 4.630828857421875, + 0.28553223609924316, + -0.5021960735321045, + 4.422791481018066, + -0.025156170129776, + -4.906012058258057, + -0.34838783740997314, + -0.29781949520111084, + -2.9617209434509277, + 3.2637486457824707, + -4.025202751159668, + -1.2689707279205322, + -0.305846244096756, + 0.11894845962524414, + -3.3646349906921387, + 0.008156895637512207, + 4.6157708168029785, + 5.250039577484131, + -0.15038573741912842, + 2.6071372032165527, + 2.087851047515869, + -3.0914547443389893, + 6.478915214538574, + -14.445068359375, + -0.5377513766288757, + -0.8895504474639893, + -0.38082748651504517, + -1.1133674383163452, + 0.6073094606399536, + 4.588297367095947, + -0.009624700993299484, + 0.35120558738708496, + -1.0565105676651, + 1.8158820867538452, + 0.3800910711288452, + 0.6327648758888245, + -2.1396913528442383, + -0.8811360597610474, + 5.691032886505127, + 2.606809139251709, + 2.6327693462371826, + -3.959453582763672, + -10.938604354858398, + -0.8868383169174194, + 3.5046610832214355, + 1.4179743528366089, + -4.167999267578125 + ] + }, + "8": { + "gender": "男性", + "describe": "正式", + "tensor": [ + 4.846062660217285, + -3.311047315597534, + 6.377013683319092, + -3.433943271636963, + 0.72811359167099, + 0.6711472272872925, + -3.180807113647461, + 0.6183816194534302, + 5.400249004364014, + -0.9048330783843994, + 1.0271079540252686, + -4.222364902496338, + 1.0648096799850464, + 1.2115199565887451, + 2.7903480529785156, + -0.8344284296035767, + 0.39865902066230774, + -1.0668760538101196, + -0.07802391052246094, + 1.362092137336731, + 6.077568054199219, + 2.283302068710327, + 2.9766359329223633, + 3.3977584838867188, + -2.7122039794921875, + 1.9570224285125732, + -4.672563076019287, + -23.889829635620117, + 0.3528819680213928, + -3.213655948638916, + 2.141970157623291, + -2.5412254333496094, + 0.26701056957244873, + 3.1016266345977783, + -0.3235434889793396, + -14.13187026977539, + -1.6959487199783325, + 2.743405818939209, + 1.6063165664672852, + 1.3711607456207275, + -4.643013954162598, + 2.737361431121826, + 8.172447204589844, + -3.08125638961792, + -7.451798915863037, + 3.299354076385498, + 3.306591272354126, + -0.32680845260620117, + -1.4905037879943848, + 0.40915143489837646, + 1.8181071281433105, + 2.7446789741516113, + -1.6843712329864502, + 3.6092002391815186, + -0.4698060154914856, + 10.368082046508789, + 4.987884998321533, + 3.2211878299713135, + 1.5693284273147583, + 0.8423964381217957, + -2.449772834777832, + -2.073401927947998, + 0.5129914283752441, + 0.23140764236450195, + 0.0534093976020813, + 0.7464399337768555, + -4.584478855133057, + 4.82911491394043, + 3.2157740592956543, + -4.4716691970825195, + 4.697261333465576, + 4.774775505065918, + -1.7840722799301147, + -0.4061061143875122, + 2.3076345920562744, + 0.7254725694656372, + 5.155766487121582, + -3.852173089981079, + -2.50034761428833, + 5.320416450500488, + 0.9366811513900757, + -2.75766658782959, + 4.173701286315918, + 1.325262188911438, + 8.572715759277344, + 1.0948227643966675, + 0.7724066972732544, + 1.27825927734375, + -0.2278517484664917, + 2.467576265335083, + -13.338315963745117, + -3.7716293334960938, + 2.3649303913116455, + -1.6214637756347656, + 7.867526054382324, + -19.030757904052734, + 6.348601341247559, + -3.1965763568878174, + 3.6563284397125244, + -3.621678113937378, + -3.615668296813965, + 1.7932642698287964, + -0.3987520933151245, + 1.2308430671691895, + -2.525360584259033, + 1.863927960395813, + -3.4091062545776367, + 0.5456082820892334, + 8.648750305175781, + -1.673037052154541, + 0.5802955031394958, + -15.207694053649902, + 0.7796163558959961, + -2.262040138244629, + -5.086748123168945, + -1.5141576528549194, + -0.644027054309845, + 0.02038705348968506, + 2.903381109237671, + 2.6370391845703125, + 5.319900035858154, + 0.27249374985694885, + -7.798427104949951, + 2.44055438041687, + 2.5522284507751465, + 2.121166229248047, + -4.302847862243652, + -2.64209246635437, + 0.44014275074005127, + 0.5596326589584351, + 2.3069193363189697, + 1.0723804235458374, + -2.7037763595581055, + -2.0525524616241455, + -4.124256610870361, + 2.1836776733398438, + 1.3509397506713867, + -1.0821030139923096, + -13.566160202026367, + 5.75719690322876, + 0.6113541126251221, + 2.103917121887207, + 0.3526342511177063, + 0.8437116146087646, + 2.4467897415161133, + -2.125396251678467, + 1.9060084819793701, + -6.84294319152832, + 2.687391757965088, + -6.8025336265563965, + -0.17436325550079346, + -3.164971113204956, + 1.8899952173233032, + 17.431716918945312, + 3.8389124870300293, + -2.0785605907440186, + 11.108782768249512, + 4.016770839691162, + -4.819023132324219, + -0.7162235379219055, + -1.547968864440918, + 4.561107635498047, + 2.356903076171875, + -6.969344615936279, + 1.0134971141815186, + 4.159314155578613, + 1.4279656410217285, + -5.949771881103516, + 0.5245610475540161, + -2.30928111076355, + -1.3811559677124023, + 1.3342461585998535, + -2.5654187202453613, + -0.650966465473175, + -1.5932021141052246, + -3.376307964324951, + 0.7756226062774658, + 4.370997905731201, + -0.7890180945396423, + 0.16201448440551758, + 1.162674069404602, + 5.605557918548584, + 1.4551202058792114, + -3.882561206817627, + -0.777535617351532, + -5.0397443771362305, + -9.963766098022461, + -6.030014514923096, + 0.34291815757751465, + 1.7197656631469727, + 1.2031704187393188, + -1.1994463205337524, + -3.6981544494628906, + -2.974637031555176, + 0.18547844886779785, + -1.9794325828552246, + -0.7404544949531555, + -0.0681639313697815, + -0.7839168310165405, + 2.436939001083374, + -0.8737773895263672, + -0.5187919735908508, + 3.2397215366363525, + 0.5825281143188477, + 6.407045364379883, + -0.16119909286499023, + -3.949681282043457, + -3.361130714416504, + -8.409391403198242, + 1.2599828243255615, + 3.185537099838257, + -0.4871019124984741, + -2.796292304992676, + 4.248919486999512, + 4.309021949768066, + 2.3561007976531982, + 3.642707347869873, + -15.971891403198242, + 0.39550596475601196, + 10.078585624694824, + 1.552688717842102, + -0.20551253855228424, + -1.1041548252105713, + 3.2183966636657715, + 6.310413837432861, + -0.5218804478645325, + -6.652071952819824, + -0.10526031255722046, + -2.208004951477051, + -0.5159516334533691, + -6.869773864746094, + 8.36146068572998, + 1.056138277053833, + -3.675034523010254, + -0.648084282875061, + 1.1718637943267822, + 1.4931743144989014, + 5.044252395629883, + 3.6112122535705566, + -0.7613216638565063, + -2.8092801570892334, + 2.7258615493774414, + -2.423457622528076, + -0.15140312910079956, + 2.7111430168151855, + 0.21037715673446655, + -1.5754506587982178, + 1.117088794708252, + 14.057859420776367, + -2.0897841453552246, + 0.35228824615478516, + -1.5929651260375977, + 0.38059258460998535, + 4.515545845031738, + 23.15926170349121, + 2.827641010284424, + -0.24583780765533447, + -3.825246810913086, + -3.984360456466675, + -1.8550548553466797, + -2.648719072341919, + 2.3033673763275146, + -6.010766983032227, + -3.053744316101074, + 1.135321855545044, + -1.5203166007995605, + -2.6025846004486084, + 3.762799024581909, + -2.122443675994873, + -1.290738582611084, + 0.7503864169120789, + -2.3226170539855957, + -16.505306243896484, + -3.1624932289123535, + -1.8663127422332764, + -10.006036758422852, + 1.5656952857971191, + -1.2737473249435425, + -1.7978012561798096, + 1.2576162815093994, + 2.532137632369995, + -1.2685762643814087, + 3.614955425262451, + -0.22112628817558289, + 10.93328857421875, + -4.776811599731445, + 1.1056232452392578, + 0.6546751856803894, + -2.3996593952178955, + -2.2871625423431396, + -5.525022029876709, + -0.3720515966415405, + 4.18978214263916, + 0.646477460861206, + -3.5704450607299805, + 1.9950125217437744, + -1.667320966720581, + 6.995092391967773, + 1.1305022239685059, + -5.165390491485596, + 3.8256726264953613, + -0.8781964182853699, + -3.4613239765167236, + -0.41880324482917786, + -1.904050350189209, + -5.658219337463379, + 9.544557571411133, + 2.5974507331848145, + 3.9119644165039062, + 0.5180581212043762, + 3.443216323852539, + -3.486172676086426, + 3.8140296936035156, + -5.200700283050537, + -0.8618267774581909, + 0.053410619497299194, + 2.168734550476074, + 5.688985824584961, + -4.0749430656433105, + -0.9248085021972656, + -1.6459660530090332, + -1.777979850769043, + 0.8881673812866211, + -2.023965358734131, + 1.5977214574813843, + 8.026729583740234, + 3.5832884311676025, + 0.18417811393737793, + 0.12057232856750488, + -1.9974300861358643, + -0.5303412675857544, + -22.90447235107422, + 0.6828292012214661, + 0.03594350814819336, + 0.3620688319206238, + 1.4365761280059814, + -11.391716957092285, + 8.572524070739746, + 8.047419548034668, + 2.1186881065368652, + -0.23396268486976624, + 3.903790235519409, + 0.5401546359062195, + -5.213687419891357, + 1.1662390232086182, + -1.8758587837219238, + -1.5956697463989258, + -4.3477373123168945, + -4.394045352935791, + -0.1349191665649414, + 0.11670193076133728, + 2.4325389862060547, + -2.6313462257385254, + 1.0847690105438232, + -8.00710391998291, + -2.200857639312744, + 0.6744593381881714, + -0.7196035385131836, + 0.4869990348815918, + -0.2415175437927246, + -2.28458309173584, + -5.098682403564453, + -5.783388137817383, + -0.2308582067489624, + 2.0180203914642334, + -2.4511075019836426, + 4.057816505432129, + 1.3694069385528564, + 3.607055902481079, + 10.877599716186523, + -1.247537612915039, + -0.7347575426101685, + -1.4564675092697144, + 0.9998974800109863, + -4.950247764587402, + 0.6593932509422302, + 2.386289596557617, + -2.7741596698760986, + 2.766204833984375, + 1.0888832807540894, + -7.157131195068359, + 0.4100345969200134, + -1.1689897775650024, + -12.86939811706543, + -0.665147602558136, + -3.742858409881592, + -2.0006260871887207, + -2.220515727996826, + -3.73712420463562, + 0.6580911874771118, + 0.23669683933258057, + -3.5522446632385254, + 2.7786831855773926, + 1.8912197351455688, + 3.4945356845855713, + -4.9590582847595215, + 2.4389853477478027, + 7.4380693435668945, + -2.753326416015625, + -0.24911490082740784, + 1.0888876914978027, + 1.0511975288391113, + -2.409412384033203, + 2.346980333328247, + 2.017256259918213, + -2.7043206691741943, + -3.5415101051330566, + 0.31946560740470886, + 9.210676193237305, + -2.4882266521453857, + -0.48327672481536865, + 1.0218737125396729, + 2.797785758972168, + -3.586885452270508, + 1.3332964181900024, + 3.4712252616882324, + 1.9831829071044922, + 0.662372350692749, + -5.7120208740234375, + 1.6872239112854004, + -0.9721056222915649, + 2.404287815093994, + 4.822690010070801, + -6.68569803237915, + -0.9175980091094971, + 2.607715368270874, + 5.344552993774414, + 9.083646774291992, + 2.2293474674224854, + 3.9355380535125732, + 2.7132365703582764, + 3.2107694149017334, + 2.723355293273926, + 3.1131486892700195, + 1.499265432357788, + 1.6734440326690674, + -4.731332778930664, + 5.453131675720215, + 0.4050855338573456, + -0.06301268935203552, + 1.7414571046829224, + 0.5120736956596375, + 0.994805634021759, + 3.4591894149780273, + -1.544767141342163, + 5.4060444831848145, + -4.490958213806152, + 1.9028081893920898, + -0.9757921695709229, + -1.4148757457733154, + 1.5337882041931152, + 1.9954699277877808, + 7.442185401916504, + 0.07731080055236816, + 0.8942544460296631, + 4.14944314956665, + -0.6335399150848389, + 6.889669418334961, + -3.6221845149993896, + -1.1931562423706055, + -7.551896095275879, + 4.6645917892456055, + 0.3200359344482422, + -1.3835110664367676, + -2.743356943130493, + 4.280567646026611, + -7.832718849182129, + 11.054886817932129, + -1.0578336715698242, + 1.646093487739563, + -0.03558027744293213, + -3.529994010925293, + 0.3421332836151123, + 1.6438231468200684, + -1.0183002948760986, + -3.649502754211426, + -1.3227859735488892, + -4.482547760009766, + -1.753434419631958, + 4.569812774658203, + -0.09886723756790161, + 3.0040102005004883, + 3.4489059448242188, + -1.1739394664764404, + 2.469728469848633, + 1.1179016828536987, + -0.32019945979118347, + -2.9363067150115967, + -7.757504940032959, + 1.1846709251403809, + -0.5062129497528076, + 1.3654059171676636, + -4.139204978942871, + -4.601686477661133, + -4.768729209899902, + -0.35927557945251465, + 0.8997880220413208, + -1.7377934455871582, + 2.6267592906951904, + 0.8857203125953674, + -2.3791069984436035, + -1.343390941619873, + -1.5758590698242188, + -3.9078316688537598, + 3.3501839637756348, + -10.093019485473633, + -1.1140999794006348, + -0.44522392749786377, + -2.6893649101257324, + -0.21742379665374756, + -0.5243306756019592, + 1.0567519664764404, + 19.582181930541992, + -1.5091158151626587, + 3.0938947200775146, + -3.1308035850524902, + 0.870660662651062, + -1.7212549448013306, + 0.3049064874649048, + -4.018794059753418, + -3.401353120803833, + 6.171112060546875, + 6.10728120803833, + 2.9177329540252686, + 1.123166561126709, + 0.678033709526062, + 5.783371925354004, + 1.2660796642303467, + 3.952119827270508, + -0.23582538962364197, + 0.353348970413208, + 3.0561821460723877, + 4.025858402252197, + 1.20451021194458, + -5.351276397705078, + -1.3080564737319946, + -0.9006768465042114, + -11.21313762664795, + 7.1542582511901855, + 0.8984678983688354, + 0.4500177502632141, + -1.544480562210083, + 3.0044121742248535, + -6.270456790924072, + -2.2458038330078125, + 3.3956451416015625, + 11.083233833312988, + 0.13350450992584229, + -0.92431640625, + -8.011428833007812, + -2.0070438385009766, + -2.457292318344116, + 9.143203735351562, + -2.79030704498291, + -0.7223834991455078, + 0.4612705707550049, + 2.8271665573120117, + -5.9156880378723145, + -0.9650943279266357, + -2.407656192779541, + 6.0521955490112305, + 1.4985504150390625, + 4.04577112197876, + -0.7841081619262695, + -2.0936429500579834, + -24.21121597290039, + 0.018443942070007324, + 0.5823217034339905, + 3.555727958679199, + 1.2051109075546265, + 2.4262681007385254, + 0.3692808449268341, + 1.7285691499710083, + 5.254568576812744, + 0.5242747068405151, + 13.559433937072754, + -17.71117401123047, + -0.9488524198532104, + 1.6014845371246338, + -0.1487138569355011, + 2.1606459617614746, + 5.07113790512085, + -0.45676887035369873, + -4.5872416496276855, + -0.6756020188331604, + 6.611438274383545, + 3.624697685241699, + -3.4644675254821777, + 7.515517234802246, + -1.5620170831680298, + -1.4030802249908447, + 2.110818862915039, + 2.3018441200256348, + 0.9357735514640808, + 3.483407497406006, + 2.3499958515167236, + -0.12005287408828735, + 4.613752365112305, + 0.22512485086917877, + 8.691920280456543, + -0.7246527671813965, + 4.617908477783203, + -0.2020641714334488, + 1.3378567695617676, + 3.51615047454834, + 7.098909854888916, + 1.0305579900741577, + -1.543217420578003, + -5.551265716552734, + -8.779444694519043, + 1.0319409370422363, + -1.8172472715377808, + -0.5062829852104187, + -0.22686341404914856, + -1.7563581466674805, + 0.068566232919693, + 2.8036603927612305, + 1.3421845436096191, + -2.8107857704162598, + -3.1456713676452637, + 0.4418580234050751, + -2.64121675491333, + 1.2457863092422485, + 1.5963997840881348, + -0.48623907566070557, + -0.12981191277503967, + -3.0337727069854736, + 1.1463016271591187, + -2.117788791656494, + -8.040614128112793, + -2.2682833671569824, + 9.544076919555664, + -1.2508544921875, + -2.6634020805358887, + -8.015024185180664, + -0.75140780210495, + 1.4101831912994385, + -1.5694366693496704, + -7.84107780456543, + 0.6743841171264648, + 2.893399715423584, + 0.7308835983276367, + -0.11928717792034149, + -4.829416751861572, + 3.5139100551605225, + -11.567527770996094, + 2.6929538249969482, + 4.063390254974365, + 6.725951194763184, + 1.2242023944854736, + -1.0265814065933228, + -0.3584190011024475, + -1.2629197835922241, + -5.811300277709961, + 1.0050148963928223, + 4.074859142303467, + 2.648750066757202, + -6.665651798248291, + -7.7357258796691895, + 0.8737025260925293, + 18.802410125732422, + -2.125868082046509, + -4.704686164855957, + 4.78375244140625, + -3.819044351577759, + 0.8849849700927734, + 3.642557144165039, + -6.3712077140808105, + 4.311976909637451, + -0.5455142259597778, + 6.632028579711914, + -0.29683274030685425, + -4.233845233917236, + 0.6235330104827881, + 2.296804904937744, + -0.6548057794570923, + -2.632885456085205, + 1.7251123189926147, + -1.7225446701049805, + -4.699098110198975, + 1.845959186553955, + -0.12515303492546082, + 18.553857803344727, + 3.605407476425171, + 1.9410127401351929, + -3.6910393238067627, + 14.518128395080566, + -1.240175485610962, + 3.5301666259765625, + -11.517934799194336, + 0.21014028787612915, + -3.940886974334717, + 4.002108573913574, + -0.4532462954521179, + 0.23377883434295654, + 2.452700614929199, + 2.0205190181732178, + -3.2195322513580322, + 0.42605918645858765, + -8.124382019042969, + -0.8868887424468994, + 4.675806045532227, + 1.6515473127365112, + -3.9391262531280518, + -6.104740619659424, + 0.02942359447479248, + 0.8947377800941467, + 0.155320405960083, + 1.796284794807434, + -1.8709790706634521, + -2.512509822845459, + 0.5419846773147583, + 4.065505027770996, + -0.4138648509979248, + -3.5611672401428223, + -0.8366987705230713, + 1.0972343683242798, + 0.4079910218715668, + 3.765471935272217, + 2.499155282974243, + 8.234003067016602, + 3.885829210281372, + 1.5234375, + -3.3539905548095703, + -4.18828010559082, + -3.385227918624878, + -0.4871644377708435, + -4.101612091064453, + -3.265744686126709, + -1.0812983512878418, + 4.267961025238037, + -2.1322290897369385, + -0.16413867473602295, + 0.04341009259223938, + -5.318021297454834, + -1.2736172676086426, + 0.12044235318899155, + 0.04819279909133911, + 1.121199369430542, + 1.5904537439346313, + -3.859257221221924, + -0.8978210687637329, + -1.1314219236373901, + 2.129819393157959, + -11.352323532104492, + -4.778299331665039, + -2.926380157470703, + -5.90811824798584, + 1.5568963289260864, + -6.5500054359436035, + 3.642928123474121, + -0.023895010352134705, + -2.6139509677886963, + 2.252737522125244, + -2.165781021118164, + 2.930760145187378, + 0.9340752363204956, + 0.9569112062454224, + 3.8883352279663086, + 3.3948354721069336, + -0.5404850244522095, + 1.0973701477050781, + -3.3416569232940674, + 3.9920692443847656, + 2.350607395172119, + 5.753788471221924, + -0.13343676924705505, + -4.172259330749512 + ] + }, + "9": { + "gender": "男性", + "describe": "娘娘腔", + "tensor": [ + 4.3287506103515625, + 5.462342262268066, + -14.722189903259277, + -1.631347417831421, + 7.042790412902832, + -0.07795143127441406, + -5.465886116027832, + 6.077270984649658, + -1.701439619064331, + 3.0423810482025146, + -1.77201247215271, + 1.4920051097869873, + -0.5616086721420288, + 0.3657882511615753, + -1.5898113250732422, + 3.64800763130188, + 1.8876830339431763, + -7.628226280212402, + -7.434952735900879, + -4.296509742736816, + 9.212553977966309, + 4.2349019050598145, + 3.3681480884552, + 5.395586967468262, + 2.2207107543945312, + 0.023925721645355225, + 5.061546325683594, + -17.1696834564209, + -0.49160540103912354, + 2.8201401233673096, + -9.362702369689941, + -3.2890126705169678, + -4.977144241333008, + -3.1002402305603027, + 1.8929417133331299, + -19.15793228149414, + -2.145298480987549, + 1.3341894149780273, + 0.7281080484390259, + 1.651916265487671, + -3.2668182849884033, + 1.7510688304901123, + 3.115119695663452, + -2.350672960281372, + -8.434905052185059, + -2.7092456817626953, + 1.2986178398132324, + 7.9638166427612305, + -2.404085397720337, + -0.2815577983856201, + 0.0063177794218063354, + 2.539644718170166, + -2.09578013420105, + -6.2419023513793945, + 0.6104391813278198, + 3.761277437210083, + 0.9231633543968201, + 2.0419135093688965, + 2.0700340270996094, + 2.1412858963012695, + -2.8737683296203613, + -2.0168802738189697, + 3.147653579711914, + -6.217510223388672, + 1.3333079814910889, + 3.6284658908843994, + -0.9635003209114075, + 18.44102668762207, + -2.929403066635132, + 7.327947616577148, + -1.3040125370025635, + 0.6217625141143799, + 1.6852928400039673, + -1.5537137985229492, + -2.3649027347564697, + 3.4142074584960938, + 0.4017709493637085, + -8.967016220092773, + -0.46861547231674194, + 4.958522319793701, + 3.4440009593963623, + 0.7450578212738037, + 2.6714818477630615, + 0.11558520793914795, + 2.0062649250030518, + 0.9369540214538574, + 3.4723289012908936, + -2.3373167514801025, + 0.5797629356384277, + -4.340883731842041, + 4.079153060913086, + -2.0909175872802734, + -0.1589106321334839, + 3.098881721496582, + 11.12806224822998, + -5.356560707092285, + 2.4452013969421387, + -3.333049774169922, + 5.015941143035889, + 1.9854860305786133, + -2.687695026397705, + -0.7713091969490051, + -0.1746678352355957, + -1.5711835622787476, + -3.8275744915008545, + 1.4865950345993042, + 0.3503638803958893, + -0.7531462907791138, + 4.712487697601318, + 1.3157776594161987, + 2.3492586612701416, + -7.388407230377197, + -18.602577209472656, + -1.9884884357452393, + 0.26995670795440674, + 3.6225175857543945, + -3.6825180053710938, + -0.496049165725708, + -4.287792682647705, + -4.049981594085693, + -3.046353816986084, + 0.08430929481983185, + -2.041539192199707, + 0.7362712621688843, + -5.739002227783203, + -4.051584720611572, + 0.5013351440429688, + 4.171970367431641, + -2.6035029888153076, + 2.3098361492156982, + -0.48062896728515625, + -1.9006614685058594, + -2.8609578609466553, + -2.917850971221924, + 5.823416709899902, + 3.1801300048828125, + -7.243122100830078, + -6.199999809265137, + 13.375420570373535, + 2.319763422012329, + 1.3263452053070068, + 1.7712981700897217, + -3.0072214603424072, + 0.39324048161506653, + -3.8119373321533203, + -3.9441468715667725, + -2.169105291366577, + -5.004182815551758, + 3.4006834030151367, + -0.9678781628608704, + -5.137801647186279, + -1.2211768627166748, + 0.113238126039505, + -9.987987518310547, + -3.3388662338256836, + -2.7608323097229004, + 6.675798416137695, + -10.18348503112793, + -5.653987407684326, + -3.18914794921875, + 0.450278639793396, + -0.7402545213699341, + 2.3676414489746094, + -7.670475959777832, + 1.0002782344818115, + 2.7338948249816895, + 0.314419686794281, + -2.568830728530884, + 4.653815269470215, + -5.947731018066406, + -3.062157154083252, + -9.823359489440918, + -6.273056983947754, + 0.7656171321868896, + -1.705812692642212, + 1.0264948606491089, + -2.321375608444214, + -0.11042425036430359, + -2.1707329750061035, + -2.4899983406066895, + 0.557578444480896, + 1.8978718519210815, + 0.9287012219429016, + 0.514785885810852, + -2.671140193939209, + 0.7904095649719238, + -5.082634449005127, + -2.9241209030151367, + -7.0715155601501465, + -0.7347912788391113, + 3.759580373764038, + -1.4133551120758057, + 5.490821838378906, + 0.0906217098236084, + -1.65009605884552, + -12.268085479736328, + 0.07977432012557983, + -6.325660228729248, + -2.7515008449554443, + -1.064184308052063, + 1.2905683517456055, + 0.38440996408462524, + 0.8465179204940796, + -3.4952991008758545, + 9.569646835327148, + -2.5604217052459717, + -1.0464333295822144, + 6.708466529846191, + -4.119366645812988, + -0.40077751874923706, + -2.4212749004364014, + 1.4878089427947998, + 1.0087428092956543, + 5.635210037231445, + 0.08033895492553711, + -1.9792354106903076, + -0.004751788452267647, + 3.1925461292266846, + 2.74099063873291, + 6.568661689758301, + -0.21253681182861328, + -4.11367130279541, + 0.30969566106796265, + 5.135819435119629, + 0.6483707427978516, + -4.060611248016357, + -1.8565471172332764, + -1.5718352794647217, + -0.1380631923675537, + 0.21689462661743164, + 4.017738342285156, + -17.860111236572266, + -1.2142553329467773, + 2.4406051635742188, + -0.2651631832122803, + 3.188194751739502, + 0.9962424039840698, + 9.730685234069824, + -1.0573948621749878, + -1.3259146213531494, + 0.9112645387649536, + -2.7704551219940186, + -9.240991592407227, + -2.3205435276031494, + 1.8073627948760986, + -0.5458178520202637, + -1.6570850610733032, + 5.7601237297058105, + 21.339649200439453, + -5.13132905960083, + -5.078738212585449, + 0.8931132555007935, + -1.3257465362548828, + -2.3851630687713623, + 1.1818077564239502, + -2.6447551250457764, + -1.048423171043396, + 10.495701789855957, + -1.273478627204895, + 0.763222336769104, + 5.026787281036377, + -1.6530213356018066, + -1.6734249591827393, + -1.5298957824707031, + 0.3917909562587738, + -1.7116618156433105, + 0.6833208799362183, + -4.335359573364258, + 0.8775991201400757, + 2.9549522399902344, + -0.7434912323951721, + 2.525967597961426, + -6.537360668182373, + 8.71119499206543, + -1.2430050373077393, + 2.0939106941223145, + -4.629431247711182, + 1.3717771768569946, + -2.316527843475342, + -2.5109918117523193, + -0.8075301647186279, + 1.2147146463394165, + -7.762753963470459, + -3.196352243423462, + 3.707085609436035, + -4.870976448059082, + -1.948024034500122, + 0.7705175280570984, + 2.8717799186706543, + 2.210911273956299, + -2.5702240467071533, + 1.2191193103790283, + 2.79921555519104, + -1.301814317703247, + -9.501291275024414, + -1.768834114074707, + -1.2963227033615112, + -11.404928207397461, + -1.0925463438034058, + -0.89138263463974, + 4.942622661590576, + -2.373605489730835, + -7.463965892791748, + 0.7587506771087646, + -3.1073036193847656, + 4.405585765838623, + 6.026285648345947, + 2.129549980163574, + -1.0985305309295654, + -4.718257904052734, + -0.12665295600891113, + -0.930976152420044, + 3.4914913177490234, + -3.674976348876953, + 1.8644217252731323, + 4.685931205749512, + -0.0720447301864624, + 0.25607749819755554, + 1.9483821392059326, + 2.596449375152588, + 2.2961950302124023, + 2.5296967029571533, + -1.8448914289474487, + 3.229207992553711, + 0.8004248142242432, + 16.263187408447266, + 1.8479832410812378, + -5.014439582824707, + -1.063700556755066, + 1.3455517292022705, + 0.7197126746177673, + -19.75646209716797, + -0.9261344075202942, + -7.482821941375732, + -0.6761842966079712, + -0.4617328643798828, + -8.258390426635742, + 1.238037347793579, + -4.725767135620117, + -0.6045507192611694, + 3.1560661792755127, + -1.6005213260650635, + 1.461288571357727, + -0.40829896926879883, + 0.9683293104171753, + 5.028105735778809, + -3.5596375465393066, + -1.0713839530944824, + -2.399881601333618, + -14.723112106323242, + 0.29763728380203247, + 4.149682998657227, + 9.373140335083008, + 0.8834484219551086, + -1.5245513916015625, + 3.6087751388549805, + -2.17755389213562, + 3.1725916862487793, + 3.432175636291504, + 5.712957382202148, + -3.4008147716522217, + -3.9050426483154297, + -3.0283203125, + 2.8904082775115967, + 10.62548828125, + -7.633455276489258, + 2.108908176422119, + 0.33393311500549316, + -2.429255247116089, + 7.453850746154785, + 4.9254560470581055, + -1.8835458755493164, + -1.1913373470306396, + -2.7184154987335205, + -1.6649986505508423, + 3.992915153503418, + 3.443443536758423, + -3.4725711345672607, + 0.4689509868621826, + -1.1861355304718018, + -9.176609992980957, + 4.575539588928223, + -1.7941174507141113, + -6.957720756530762, + 4.53398323059082, + 5.596364498138428, + -2.8202621936798096, + 2.2970871925354004, + -0.12641578912734985, + 3.5845224857330322, + 4.7539472579956055, + -0.603691577911377, + 0.739323616027832, + 0.18061357736587524, + 1.860740065574646, + -3.9958205223083496, + 3.032236337661743, + -3.542060613632202, + -11.684012413024902, + -1.1009995937347412, + -0.4364614486694336, + -2.474993944168091, + -7.500677585601807, + 1.5768365859985352, + -7.186208724975586, + -0.48237597942352295, + 8.142240524291992, + 0.33069661259651184, + 26.7147216796875, + -13.086909294128418, + 4.730823516845703, + -2.605407238006592, + -3.756364583969116, + 0.8998158574104309, + 1.0749151706695557, + -4.896505832672119, + -2.6487226486206055, + -0.9048900604248047, + 0.9936012029647827, + 4.685497283935547, + -2.5900046825408936, + 1.758232831954956, + 0.5298574566841125, + 4.246899604797363, + 1.5103189945220947, + 1.2600346803665161, + 0.39589643478393555, + 10.204031944274902, + -2.223814010620117, + 0.4685206413269043, + -1.3066037893295288, + -2.6169400215148926, + -1.5868353843688965, + -0.235521137714386, + -2.132845640182495, + 7.969540596008301, + -1.8010001182556152, + 3.760432004928589, + -0.8060438632965088, + 0.4661237597465515, + 6.5948262214660645, + -1.1848771572113037, + 3.7027623653411865, + 2.4692530632019043, + 0.5238943099975586, + 1.311395287513733, + -3.933582305908203, + 3.3759946823120117, + -2.3940200805664062, + 0.9339581727981567, + -0.7891006469726562, + 2.617804765701294, + -1.451280951499939, + -0.9805687069892883, + -1.2193490266799927, + 3.9288549423217773, + 0.5378901362419128, + 0.30165576934814453, + -4.099475860595703, + -0.6592632532119751, + 1.098618984222412, + -5.501584529876709, + 1.6958216428756714, + -3.956322193145752, + -0.6969739198684692, + 4.515561103820801, + -0.8653082847595215, + -10.614920616149902, + 1.5225894451141357, + -1.7231383323669434, + -1.9056053161621094, + -6.0274763107299805, + -0.5487111806869507, + -0.06643551588058472, + 1.6937997341156006, + -2.485933780670166, + -0.9943737983703613, + 7.6985626220703125, + 3.4915246963500977, + 2.2194533348083496, + 1.8988316059112549, + 0.4512098431587219, + 0.9007716178894043, + -3.3295059204101562, + -1.0266587734222412, + 2.171945571899414, + -1.5615837574005127, + 1.505224347114563, + 4.100130558013916, + 0.20615699887275696, + -3.7577736377716064, + -5.49620246887207, + 6.781554698944092, + -9.0088472366333, + 5.226067543029785, + 0.41328245401382446, + -2.438997268676758, + 2.089552640914917, + -3.5879013538360596, + -1.875929355621338, + -4.338134765625, + -5.821792125701904, + -0.5208067893981934, + -3.843022584915161, + -6.562283992767334, + -1.611605167388916, + -0.6695488691329956, + -6.059767723083496, + 0.8073403239250183, + -5.134639739990234, + 0.6961382031440735, + -4.374715328216553, + 3.3230466842651367, + -0.24692218005657196, + 0.2888966202735901, + 4.800408363342285, + 3.656552791595459, + -0.7118324041366577, + 1.0950257778167725, + 3.1647257804870605, + 0.7311339378356934, + -0.38004398345947266, + 1.7891178131103516, + -0.8838732242584229, + -2.968736410140991, + -0.05396115779876709, + 9.019842147827148, + 2.5995888710021973, + -3.3688442707061768, + 0.8764511942863464, + 2.777437210083008, + 3.466491460800171, + 1.7525520324707031, + 3.7861740589141846, + 2.763953447341919, + -0.5382325053215027, + -1.5631921291351318, + -10.446264266967773, + 3.0826385021209717, + -3.4421865940093994, + 2.722465991973877, + -5.421481609344482, + -2.982339382171631, + -4.824751377105713, + -11.085611343383789, + -0.09001195430755615, + 1.6673554182052612, + -0.727586030960083, + -0.7848713397979736, + 3.531782865524292, + -1.281715750694275, + -2.32837176322937, + 12.332481384277344, + 0.12751135230064392, + -8.119867324829102, + -3.058199882507324, + -1.9347078800201416, + 2.4532718658447266, + 5.8428568840026855, + -0.9281818866729736, + 1.0832936763763428, + -10.658777236938477, + -0.41623714566230774, + -3.707129955291748, + 2.5161221027374268, + 1.917640209197998, + 4.668403625488281, + 1.4179060459136963, + 2.9353103637695312, + 1.10193932056427, + -1.2085723876953125, + -1.1905900239944458, + -1.0704915523529053, + -7.101142406463623, + -2.5261902809143066, + -1.9372138977050781, + -10.068037033081055, + -3.3640573024749756, + -1.3610033988952637, + -0.01948109269142151, + -5.363552570343018, + -3.6566128730773926, + -3.0779335498809814, + -0.8960920572280884, + 4.294342517852783, + 2.599646806716919, + 2.4978926181793213, + -1.3754533529281616, + 1.01552414894104, + -0.42211902141571045, + -1.8735482692718506, + -4.427745819091797, + -4.111403942108154, + 6.569159030914307, + 3.179316282272339, + -7.693936824798584, + -2.077585220336914, + -0.23293325304985046, + 0.7729339599609375, + 3.5424423217773438, + 1.8616716861724854, + -2.7887518405914307, + -0.7384247183799744, + 1.7080657482147217, + -4.017368793487549, + 2.9211490154266357, + 2.4939358234405518, + 0.3213367462158203, + 8.572793960571289, + -2.315648317337036, + 0.04579085111618042, + 4.065453052520752, + 3.975836992263794, + 1.4266904592514038, + -1.6934115886688232, + 7.132797718048096, + -5.5011210441589355, + 3.4290006160736084, + 0.3153954744338989, + -2.9464097023010254, + -2.2569146156311035, + -0.4737894535064697, + -1.1255803108215332, + -2.074979782104492, + -2.7588353157043457, + -0.6241799592971802, + 1.7853801250457764, + -0.4235379099845886, + -5.986642837524414, + -5.175662994384766, + 0.45471829175949097, + 5.594918727874756, + 1.8472487926483154, + 0.32468530535697937, + -1.9440702199935913, + 1.3695565462112427, + -7.2139201164245605, + -1.6400210857391357, + -5.594650745391846, + 2.043776273727417, + 5.508370399475098, + -3.5754554271698, + 9.28261947631836, + -4.157330513000488, + 2.0745043754577637, + 1.2048916816711426, + 0.21444395184516907, + -2.379173994064331, + 7.865612506866455, + -0.8149449825286865, + 1.4916044473648071, + -1.5698070526123047, + -5.297951698303223, + -11.415119171142578, + 1.5136680603027344, + 8.264093399047852, + -0.7154920101165771, + 3.698394298553467, + 2.234086513519287, + 6.231124401092529, + 4.296380043029785, + -3.529920816421509, + -6.686883926391602, + 7.246255397796631, + 5.027398109436035, + -2.4164509773254395, + 0.1988813281059265, + -2.945011854171753, + -5.529292583465576, + -0.19236081838607788, + 1.3167784214019775, + -1.4019334316253662, + 0.7099413871765137, + -2.354886054992676, + 3.11031436920166, + -1.7802300453186035, + -1.6897417306900024, + -0.5067832469940186, + 2.0846383571624756, + -0.05597151815891266, + -1.1154192686080933, + -0.23357513546943665, + 1.7882643938064575, + 1.6517077684402466, + -0.6666344404220581, + -1.6441960334777832, + 17.71444320678711, + -1.784084439277649, + 5.540667533874512, + -21.584381103515625, + 3.0533881187438965, + -4.61732292175293, + -5.157029628753662, + 3.5771713256835938, + 4.747762680053711, + 0.6619426012039185, + 7.772204399108887, + 4.447906970977783, + -1.8046010732650757, + -10.120556831359863, + 0.6990286111831665, + 0.6846648454666138, + 3.053532123565674, + 2.3888297080993652, + -8.28474235534668, + -0.37555670738220215, + -5.880094051361084, + -1.8481926918029785, + -0.3929315209388733, + -3.821183204650879, + -0.0830153226852417, + -1.1288230419158936, + 0.746331512928009, + 0.9179171919822693, + -4.105065822601318, + -2.7096896171569824, + -1.976893663406372, + -0.9298072457313538, + -2.6806838512420654, + -0.36624062061309814, + -1.506040096282959, + -2.1492464542388916, + 1.9655570983886719, + 2.1591439247131348, + 1.897987723350525, + -2.3412699699401855, + 3.3851866722106934, + 1.4132916927337646, + -0.23670369386672974, + -2.247591018676758, + -0.8858033418655396, + 1.1402873992919922, + 5.957706451416016, + 3.5709638595581055, + -5.278194427490234, + 1.94801664352417, + -4.420205593109131, + 0.2488638013601303, + 5.052847862243652, + 0.052631378173828125, + 2.690850019454956, + -2.8013787269592285, + -0.8566851019859314, + 1.2266137599945068, + -10.680045127868652, + 3.900174617767334, + 1.4035162925720215, + 4.674298286437988, + -3.2945995330810547, + -0.49839723110198975, + 3.9517648220062256, + -4.23613977432251, + 3.0422346591949463, + 1.4404678344726562, + -2.874703884124756, + 3.2173125743865967, + 0.44319671392440796, + -1.6800405979156494, + 3.5513954162597656, + -2.0953457355499268, + -1.3465580940246582, + -0.1111842691898346, + -0.6804205775260925, + -4.046533107757568, + -1.2689850330352783, + 6.726816654205322, + 0.9466102123260498, + -4.50131368637085 + ] + }, + "10": { + "gender": "男性", + "describe": "好哥们", + "tensor": [ + 0.2811194658279419, + -4.260504722595215, + -11.525595664978027, + 3.213500738143921, + 5.438745498657227, + -0.32051557302474976, + -4.057587146759033, + -2.4949212074279785, + 3.0269038677215576, + 5.999027252197266, + 2.720191240310669, + -2.067113161087036, + 5.470494747161865, + -1.1046230792999268, + 2.3005902767181396, + -0.008136153221130371, + 7.319060802459717, + -2.9558234214782715, + 1.046998143196106, + 3.26865816116333, + 0.8410623073577881, + 3.407726764678955, + 2.8953607082366943, + -9.465195655822754, + 1.2644274234771729, + 1.1933801174163818, + 1.6489605903625488, + -13.47440242767334, + 3.215980052947998, + 4.103417873382568, + 0.4822523593902588, + -4.0318522453308105, + -3.3303558826446533, + -2.6164915561676025, + -3.126582384109497, + -2.3933229446411133, + 1.7883644104003906, + 0.9016242027282715, + 0.9454821348190308, + 0.534994900226593, + -2.5963563919067383, + 4.450195789337158, + -4.848094463348389, + 0.7657415270805359, + -3.076303720474243, + -2.00113844871521, + 1.6599326133728027, + -7.597681045532227, + 7.346929550170898, + -2.523236036300659, + -0.07258552312850952, + 6.251593112945557, + -0.30874860286712646, + -1.3480274677276611, + 3.0243747234344482, + 3.7819790840148926, + 2.5939579010009766, + 0.9731544256210327, + -2.8721399307250977, + 1.2967417240142822, + -1.5086743831634521, + -3.719040870666504, + -3.4516873359680176, + 0.5149345397949219, + 0.25256818532943726, + -2.479893207550049, + 0.745755672454834, + -3.4313511848449707, + 1.8828020095825195, + 1.0075054168701172, + -0.8676754236221313, + -2.9581921100616455, + 5.151967525482178, + -2.525606632232666, + 23.739099502563477, + -1.7350776195526123, + 2.1929683685302734, + -3.0194733142852783, + -1.6231926679611206, + 4.011571884155273, + 3.481407403945923, + -6.103612422943115, + 1.312864065170288, + 1.38602876663208, + 2.4602038860321045, + -1.1644127368927002, + 2.53214168548584, + 5.855342388153076, + -5.017119407653809, + -3.742788076400757, + -14.261499404907227, + 5.484519958496094, + 2.189213514328003, + 3.018754005432129, + 2.246293306350708, + -25.426931381225586, + 6.5717058181762695, + -0.015439808368682861, + 7.194815158843994, + -1.8022820949554443, + -3.3598005771636963, + 0.6146571636199951, + -4.08429479598999, + 4.126035690307617, + 0.7234865427017212, + 1.895195484161377, + -1.9303152561187744, + -1.3598954677581787, + 7.444007873535156, + -5.0137810707092285, + 2.2426397800445557, + -1.601710557937622, + -16.380611419677734, + -2.171384572982788, + 0.15280520915985107, + 0.706516683101654, + -2.9973835945129395, + 2.973625659942627, + -3.7943053245544434, + 2.0460081100463867, + 1.2156076431274414, + 0.11033014953136444, + -4.282098770141602, + 6.6168036460876465, + -0.5717741250991821, + 4.996930122375488, + -1.6748450994491577, + 0.21351149678230286, + -1.599847674369812, + 1.298377513885498, + 4.0955095291137695, + 2.051884174346924, + -3.2539875507354736, + -1.1003013849258423, + 5.807175636291504, + 2.066948890686035, + -8.026845932006836, + -0.06827032566070557, + -0.7479695081710815, + -4.890369892120361, + -0.7941462397575378, + 0.6875633597373962, + 1.963630199432373, + -1.7712116241455078, + -2.506234645843506, + -6.6972246170043945, + -5.380022048950195, + 1.2394895553588867, + 0.8367571830749512, + -1.6108442544937134, + 7.104543685913086, + -6.674565315246582, + 7.057587623596191, + 11.78801155090332, + -2.82184100151062, + 1.9652327299118042, + 0.5775630474090576, + -0.5226460099220276, + 0.5116062164306641, + -6.281144142150879, + 5.68871545791626, + -1.7241302728652954, + 0.4151817858219147, + 12.990690231323242, + -3.7472610473632812, + 0.49603021144866943, + -2.7535972595214844, + 0.10541418939828873, + 1.3536357879638672, + -1.0404891967773438, + 8.446651458740234, + 4.044147491455078, + -15.066751480102539, + 1.3946425914764404, + -0.948411762714386, + -2.7207062244415283, + 2.0416903495788574, + 1.8489031791687012, + 0.2907479703426361, + -4.079643249511719, + 1.5800877809524536, + 4.696136951446533, + -0.18853819370269775, + 2.203984498977661, + 1.7460205554962158, + -0.9568262696266174, + 0.35286474227905273, + 0.3419402837753296, + -1.3715174198150635, + 2.7142655849456787, + 0.974341869354248, + -1.5737711191177368, + -1.780644178390503, + -2.8503103256225586, + -2.334932565689087, + -5.252520561218262, + -3.5860273838043213, + -1.1260948181152344, + -0.9599809646606445, + 0.3109177052974701, + -1.986876368522644, + -2.9971039295196533, + -2.4591779708862305, + 6.488470554351807, + 4.855649471282959, + -2.283702850341797, + 2.2221333980560303, + 11.49647045135498, + 4.572959899902344, + 0.34236907958984375, + 3.121992826461792, + 1.8605551719665527, + -1.4619836807250977, + 0.8787611722946167, + -0.46607255935668945, + -2.4454710483551025, + -4.211363315582275, + -4.296296119689941, + 1.3848211765289307, + -1.6396503448486328, + 5.30741548538208, + -15.421799659729004, + 2.8069863319396973, + -2.051114082336426, + 2.175100088119507, + -0.13844841718673706, + -1.5152034759521484, + 0.5069296360015869, + 0.21992462873458862, + 5.279951095581055, + 4.702682971954346, + -2.3057899475097656, + -0.9023145437240601, + -5.547660827636719, + -1.529112696647644, + 1.1788403987884521, + 1.9905035495758057, + -0.17605912685394287, + -0.9609703421592712, + 2.121964454650879, + -7.099200248718262, + 6.220388412475586, + -9.894926071166992, + 1.612950086593628, + 2.361670970916748, + 3.280085563659668, + -1.9247881174087524, + 5.190412521362305, + 0.47541379928588867, + 3.4029197692871094, + 1.1621547937393188, + -1.2140554189682007, + 4.13758659362793, + 1.2099965810775757, + 1.705406665802002, + 2.425503730773926, + -0.14157390594482422, + 15.107009887695312, + 1.3808513879776, + 1.0359926223754883, + -1.547258734703064, + -1.4641543626785278, + -0.866218090057373, + 1.6073009967803955, + 0.43531090021133423, + 4.642467021942139, + -1.5121588706970215, + 8.131471633911133, + 0.6027340888977051, + -2.0742039680480957, + 2.869990587234497, + 7.071986675262451, + -5.620815753936768, + 5.131453514099121, + 2.8257217407226562, + -1.6351239681243896, + 0.9260380268096924, + 0.6491072177886963, + 1.7044873237609863, + -0.7091207504272461, + -0.5185422301292419, + -1.0142812728881836, + 5.919633865356445, + 0.7759646773338318, + -4.074293613433838, + 7.623128414154053, + -4.369475364685059, + 0.10588562488555908, + -3.5953094959259033, + -3.5728328227996826, + -5.807360649108887, + -0.8589638471603394, + 5.5254082679748535, + 0.32423141598701477, + 1.5803308486938477, + 4.762469291687012, + 0.44753238558769226, + -4.114871978759766, + 0.8026034832000732, + -3.4626541137695312, + 1.0846933126449585, + 1.9361071586608887, + 0.4626958966255188, + -0.33435752987861633, + -0.786544919013977, + 0.195562481880188, + 7.5469818115234375, + 1.2179378271102905, + 2.4491047859191895, + 1.9116268157958984, + 1.5575501918792725, + -0.9392746686935425, + 0.8979275226593018, + -5.328216075897217, + -0.5590791702270508, + -0.6020853519439697, + -3.072810173034668, + 5.614485263824463, + -1.886431336402893, + 1.4170422554016113, + 4.77101469039917, + 1.4145041704177856, + -2.189189910888672, + 1.0211772918701172, + 0.9844449758529663, + 17.168699264526367, + 7.182483673095703, + 4.86276388168335, + -4.155300140380859, + 1.9578837156295776, + -0.5749717950820923, + -9.166337966918945, + -5.099888324737549, + -15.37002182006836, + 3.986880302429199, + 2.6349196434020996, + 0.4908702075481415, + -8.243241310119629, + 4.644865036010742, + 2.4104723930358887, + 4.997550964355469, + -0.29310333728790283, + -0.47736382484436035, + 5.106790542602539, + -0.019475817680358887, + -12.875293731689453, + 2.176614284515381, + -2.039733409881592, + -4.466444969177246, + -3.0378241539001465, + 1.306692123413086, + 8.894769668579102, + 0.8066312074661255, + 1.9725617170333862, + -4.68856143951416, + -0.7891716957092285, + -1.1646665334701538, + 2.4516987800598145, + 4.774977207183838, + 3.4303135871887207, + -1.2452393770217896, + -7.658195495605469, + 3.4450511932373047, + 4.247135639190674, + 3.9886934757232666, + -11.827608108520508, + -2.945915460586548, + -4.481352806091309, + -2.524818181991577, + 5.506936073303223, + 3.335836410522461, + -2.0115556716918945, + -4.9628825187683105, + 2.59782075881958, + -1.6860910654067993, + 4.362577438354492, + -3.5661497116088867, + -1.7084583044052124, + -11.438407897949219, + 1.1489205360412598, + -0.8928340077400208, + 0.3635028004646301, + 0.9420228004455566, + 5.197059631347656, + 6.19035005569458, + 7.4934821128845215, + -1.0046002864837646, + -2.2925028800964355, + -0.9872593879699707, + 1.6598341464996338, + -0.5369383096694946, + -0.33883386850357056, + -1.5090113878250122, + -0.20310693979263306, + 8.420171737670898, + -0.34517359733581543, + -6.578321933746338, + 9.865548133850098, + -3.747276782989502, + -1.129660964012146, + 6.73406982421875, + -3.9520907402038574, + 2.777522087097168, + -4.15069580078125, + -2.1146936416625977, + 2.631439447402954, + -2.0288193225860596, + -5.197664260864258, + 8.929580688476562, + 7.410962104797363, + 2.2604708671569824, + -0.7776325941085815, + -8.07121753692627, + 1.7117881774902344, + 0.8199223279953003, + 9.679697036743164, + -1.9676494598388672, + -0.5844356417655945, + 0.39690491557121277, + 0.0665668249130249, + -0.4680348336696625, + -4.520016670227051, + 0.4066902697086334, + -1.262899398803711, + 0.4371950030326843, + -1.4274063110351562, + 0.50732421875, + 11.011234283447266, + 1.2455668449401855, + -1.6891534328460693, + 4.8659892082214355, + 1.9869511127471924, + -2.209024429321289, + 2.173640012741089, + -0.22401070594787598, + -1.8145438432693481, + 1.6863646507263184, + -5.448872089385986, + -2.9633781909942627, + 5.262754440307617, + 0.8980652093887329, + 1.7905492782592773, + 2.169009208679199, + 0.07279437780380249, + -0.6982406377792358, + -3.792287826538086, + 0.494800329208374, + 9.012323379516602, + 2.0549209117889404, + 0.9074702858924866, + -1.5698864459991455, + -2.8040945529937744, + 3.2969584465026855, + 0.8299505710601807, + -0.3576005697250366, + -0.2122337818145752, + 1.5997507572174072, + 4.103218078613281, + -10.177331924438477, + 1.120760440826416, + 4.8188652992248535, + -0.3869601786136627, + 3.7253077030181885, + -6.540853500366211, + -1.6907986402511597, + 0.019309043884277344, + -5.501755714416504, + 0.5207297205924988, + -3.9852259159088135, + 3.3754985332489014, + 2.645646333694458, + 0.5166308879852295, + 0.368685781955719, + -2.9952359199523926, + 7.027540683746338, + 0.6388153433799744, + 0.5722707509994507, + -2.3934571743011475, + 3.527599334716797, + 1.9282822608947754, + -3.075608491897583, + -1.1658034324645996, + -0.6879587173461914, + 5.291339874267578, + -5.6663641929626465, + -0.1579660028219223, + -1.8229576349258423, + -0.08326468616724014, + 20.051280975341797, + 4.592270851135254, + -2.4583280086517334, + -1.4086402654647827, + 12.450180053710938, + -24.580753326416016, + -3.386955738067627, + -3.785917282104492, + -0.055238381028175354, + -3.869234561920166, + -2.090881109237671, + -0.12640464305877686, + 0.02792525291442871, + -7.542417526245117, + 0.4281097650527954, + -0.6109199523925781, + -3.9829726219177246, + -5.494773864746094, + -2.4641971588134766, + 2.221721649169922, + 0.7619012594223022, + 3.6266345977783203, + -5.2625532150268555, + 0.8895149230957031, + 15.515301704406738, + -0.06711220741271973, + -0.21282565593719482, + -7.349074363708496, + -0.919396162033081, + 0.5207449793815613, + 6.948071479797363, + 6.266087532043457, + -6.744909286499023, + 8.389623641967773, + 3.3049092292785645, + 0.3497450351715088, + 0.26342272758483887, + 2.7072269916534424, + 4.834662914276123, + 0.8224913477897644, + -0.17731338739395142, + 0.2014913707971573, + -0.7225160598754883, + -0.3793830871582031, + 0.5874783992767334, + -0.03433161973953247, + 0.5175879001617432, + -0.9967550039291382, + -5.473174095153809, + -1.6964901685714722, + 2.2864949703216553, + 0.8133989572525024, + 0.11976256966590881, + 3.550483226776123, + 1.0040068626403809, + 0.11878371238708496, + -12.283620834350586, + -2.0900349617004395, + -3.4777092933654785, + 0.06252169609069824, + 2.0385799407958984, + 3.7874510288238525, + -3.099933624267578, + 4.540200710296631, + 7.735661506652832, + 0.4777657985687256, + -9.898584365844727, + -9.46218490600586, + 7.6074652671813965, + -1.255853533744812, + 0.8258294463157654, + -5.3216376304626465, + 5.195459842681885, + -10.996358871459961, + 1.7410335540771484, + 0.5397738218307495, + 1.585944414138794, + 13.824018478393555, + 0.6729166507720947, + -2.2495343685150146, + 0.444077730178833, + -6.301848411560059, + -4.921452045440674, + -1.179876685142517, + 0.5136357545852661, + -0.31579041481018066, + -7.382686138153076, + 8.25269889831543, + 5.2204389572143555, + -5.226436614990234, + 4.696152210235596, + -0.7675266265869141, + -1.5218327045440674, + 3.8114418983459473, + -2.1865017414093018, + -0.2651848793029785, + 2.651684522628784, + 2.0409741401672363, + 5.128543853759766, + -13.533368110656738, + -0.5085933208465576, + -0.3851156234741211, + 4.899447917938232, + -2.9024667739868164, + -1.7909810543060303, + 3.543229579925537, + -0.24032294750213623, + 2.2846248149871826, + -2.7137906551361084, + 2.737302780151367, + 0.8075487017631531, + 9.629729270935059, + -2.2379746437072754, + -1.7728320360183716, + 0.07638444006443024, + 5.887527942657471, + -5.257845401763916, + 1.4957486391067505, + 1.2172844409942627, + 1.7752090692520142, + 0.31332671642303467, + -2.729834794998169, + 0.12368404865264893, + -0.47305694222450256, + -3.360788583755493, + 1.7345365285873413, + 3.25189208984375, + 1.267296314239502, + -1.5915486812591553, + 3.794543504714966, + -0.14332282543182373, + 2.0631418228149414, + -1.6470398902893066, + -6.526426315307617, + -0.7964495420455933, + 3.574958324432373, + 0.7922051548957825, + -7.403329849243164, + -2.4653193950653076, + 0.813916802406311, + -0.598150372505188, + 9.238692283630371, + -1.7521296739578247, + 4.068923473358154, + 1.7556509971618652, + -0.9774426221847534, + -2.7398266792297363, + -6.913211822509766, + 3.606288433074951, + 1.3060340881347656, + 0.44322943687438965, + -2.8180761337280273, + 3.7437357902526855, + -0.8912860751152039, + -7.0343170166015625, + 3.9494028091430664, + 1.0868514776229858, + -14.132999420166016, + 0.25953638553619385, + 1.4744799137115479, + -2.6179051399230957, + -3.054898977279663, + 3.36286997795105, + -3.350922107696533, + 2.7605762481689453, + -1.9986863136291504, + 0.4547351598739624, + -16.695087432861328, + 1.4484546184539795, + 1.8286080360412598, + -2.7983460426330566, + 6.602762699127197, + 7.765816688537598, + -1.7389596700668335, + -3.8968422412872314, + 6.535704135894775, + -0.644694447517395, + -2.598748207092285, + 0.6369472146034241, + 7.527529716491699, + 10.569992065429688, + 0.12453891336917877, + -5.839982032775879, + 6.371968746185303, + 5.2180705070495605, + 1.2558369636535645, + 0.44309359788894653, + -2.9526431560516357, + -1.6897004842758179, + -2.180436134338379, + 1.5179152488708496, + 8.316160202026367, + 1.5144526958465576, + 1.3577274084091187, + -7.663830757141113, + 2.9347877502441406, + 1.1197335720062256, + 1.2709004878997803, + 16.80812644958496, + -4.110191345214844, + -1.9469046592712402, + -0.1046210527420044, + -4.5206475257873535, + -3.282367706298828, + -2.4004993438720703, + 3.5371341705322266, + 8.141777038574219, + -0.10418230295181274, + 5.913540840148926, + 1.7124371528625488, + -1.406929850578308, + 1.5665435791015625, + 1.6711385250091553, + 2.651927947998047, + 2.7506983280181885, + 3.811873435974121, + -9.959617614746094, + 3.2671728134155273, + 2.992889165878296, + -1.4384281635284424, + 0.2953617572784424, + 1.9936400651931763, + 3.958735466003418, + 2.2890944480895996, + -4.730627059936523, + 1.7792036533355713, + 3.099853754043579, + -1.1897404193878174, + 3.181065320968628, + -2.1650731563568115, + 0.43245869874954224, + -1.806044101715088, + -3.2569587230682373, + 1.7918659448623657, + 1.259196400642395, + -2.8975679874420166, + 0.04007154703140259, + -2.210777521133423, + -2.67435359954834, + -4.551236629486084, + 2.2462897300720215, + -0.7692012190818787, + -2.3024849891662598, + -3.061659812927246, + 2.2263598442077637, + 0.8310060501098633, + -0.9080072641372681, + -2.532808780670166, + -0.8215682506561279, + 1.0123319625854492, + 4.94938850402832, + 1.0049248933792114, + 0.07459640502929688, + 0.028274446725845337, + -3.7599072456359863, + 3.3077170848846436, + -18.727046966552734, + -6.9945244789123535, + -0.6361837983131409, + 0.8328267931938171, + -0.9267287254333496, + -1.496141791343689, + 0.8943349123001099, + 4.449467182159424, + -1.5591131448745728, + 0.15439577400684357, + 0.6185813546180725, + -1.9978502988815308, + 0.7330170273780823, + -4.321700096130371, + -0.13498659431934357, + 0.18087565898895264, + -0.2817400097846985, + 1.0804064273834229, + -1.318295955657959, + 8.452323913574219, + -4.1530680656433105, + 0.6853209137916565, + 0.061877310276031494, + -3.561995506286621 + ] + }, + "11": { + "gender": "女性", + "describe": "知书达理", + "tensor": [ + 3.0187177658081055, + -4.335357189178467, + -6.7351531982421875, + 5.0128068923950195, + -0.42771875858306885, + -1.024980902671814, + 5.372213363647461, + 0.37958824634552, + -3.3856430053710938, + -4.574080944061279, + 1.9894938468933105, + 2.5281622409820557, + -3.974104881286621, + 4.642560005187988, + -0.12915891408920288, + 2.3339109420776367, + 0.7839782238006592, + -0.3308190107345581, + 3.4251785278320312, + 0.277618944644928, + 18.05512237548828, + 0.9031683206558228, + -2.7769417762756348, + -13.524660110473633, + -0.9869840145111084, + 2.2790920734405518, + -6.3848395347595215, + 14.423501968383789, + -0.899212121963501, + 2.8786134719848633, + -8.461028099060059, + -0.6529167294502258, + -2.3674352169036865, + -1.297059178352356, + -2.9267935752868652, + -2.134064197540283, + 1.212240219116211, + -1.0795336961746216, + 4.797982692718506, + 0.23369577527046204, + -1.2807635068893433, + 3.2984588146209717, + 2.645940065383911, + 0.8208322525024414, + 9.043365478515625, + -2.7111945152282715, + 4.293968200683594, + 2.1262102127075195, + 0.5153746604919434, + -5.70759916305542, + -1.5585674047470093, + -0.8629202246665955, + 3.5399975776672363, + 0.7915657162666321, + 2.209294557571411, + 1.463404893875122, + 1.1754047870635986, + 0.309075266122818, + -1.3825150728225708, + 2.760812759399414, + 0.3062998056411743, + 2.3577523231506348, + 2.3586440086364746, + -7.7372260093688965, + 1.6053352355957031, + 2.6498568058013916, + 0.38798588514328003, + -3.7644524574279785, + 1.4853383302688599, + 5.5161309242248535, + 2.329521894454956, + 1.366523265838623, + 0.3923710584640503, + -2.3806638717651367, + 1.7234817743301392, + 0.15971481800079346, + 1.019765853881836, + -11.542438507080078, + -0.22441565990447998, + -1.429610013961792, + 3.1774067878723145, + 1.9135327339172363, + 2.531709671020508, + -0.916170597076416, + 0.5055115222930908, + 0.9337108135223389, + -0.4234546422958374, + -2.8572030067443848, + 0.613580048084259, + -4.030515670776367, + -10.464165687561035, + -2.4363279342651367, + -2.881044387817383, + 2.350064992904663, + 4.063582897186279, + -7.318005561828613, + 1.361863374710083, + 2.088202476501465, + 2.438854932785034, + -3.9612884521484375, + 4.575393199920654, + 0.1292957365512848, + -3.120722770690918, + -1.6946659088134766, + 0.398831844329834, + -0.6162224411964417, + -2.017840623855591, + -2.085381269454956, + 2.1310057640075684, + 2.4833035469055176, + 1.3339719772338867, + 4.592557907104492, + 0.38572120666503906, + 2.9307827949523926, + -0.852745532989502, + 5.583986759185791, + -0.7974828481674194, + 1.7684192657470703, + 3.2524757385253906, + -3.1903746128082275, + 0.5767742395401001, + 1.564987063407898, + 0.04521912336349487, + 3.302417039871216, + -3.923705577850342, + -1.4327936172485352, + 1.8184735774993896, + 2.383143901824951, + 1.2003304958343506, + -2.8752777576446533, + 1.873833179473877, + 3.76697039604187, + -1.650909662246704, + 1.5455243587493896, + -0.5352723598480225, + 5.538441181182861, + -8.666278839111328, + -6.53487491607666, + -24.893512725830078, + -0.9824280738830566, + 2.376530647277832, + 0.9538767337799072, + -5.66267728805542, + -1.1783161163330078, + 2.882560968399048, + -1.3116976022720337, + -1.8860416412353516, + -6.8077168464660645, + -0.17342495918273926, + -3.5361273288726807, + 4.495150089263916, + -2.8610410690307617, + -9.109375953674316, + 12.351572036743164, + 0.35655221343040466, + -1.2563713788986206, + -10.657404899597168, + 2.3108880519866943, + -3.3250555992126465, + -4.769124984741211, + 3.462388753890991, + -1.4017547369003296, + -5.635992050170898, + 7.965959548950195, + -2.1989359855651855, + -1.2359700202941895, + -3.155627727508545, + 2.2496867179870605, + 5.290241241455078, + 7.593930244445801, + -2.7197654247283936, + -1.7502479553222656, + 0.423930823802948, + 0.6318067312240601, + -0.8352169394493103, + 1.5936816930770874, + -0.5832692384719849, + 1.1890294551849365, + 0.8472999334335327, + -3.4012322425842285, + 1.2560131549835205, + 1.959761142730713, + -1.1130746603012085, + 6.77925443649292, + -0.10163354873657227, + 0.8406447172164917, + 0.19397687911987305, + -1.2027006149291992, + -2.6521787643432617, + 3.3638715744018555, + 1.6749281883239746, + -0.015602022409439087, + -5.925084114074707, + -2.716756820678711, + 3.1818785667419434, + -2.5051112174987793, + -3.7204320430755615, + 4.164139270782471, + 2.394116163253784, + 1.342717170715332, + 2.0139594078063965, + -0.6900080442428589, + -5.289239406585693, + 3.378523349761963, + 5.508522033691406, + -0.33939141035079956, + 2.669487714767456, + -1.3945751190185547, + -17.760786056518555, + -2.2399682998657227, + -0.7427076101303101, + -1.3119323253631592, + -1.0419554710388184, + 5.626030921936035, + -0.33051419258117676, + 0.2141786366701126, + -2.257948637008667, + 5.6037797927856445, + 1.417877435684204, + 4.72872257232666, + 1.2563588619232178, + 7.848712921142578, + 1.3016629219055176, + 9.768598556518555, + 0.7829858064651489, + -4.74894905090332, + -9.1715726852417, + 0.5632585287094116, + 2.2230050563812256, + 2.854416608810425, + -4.727741241455078, + 10.8070068359375, + 0.275867760181427, + -1.8816672563552856, + 2.8406665325164795, + 0.7166107892990112, + 7.023488998413086, + -0.6930434703826904, + 3.9978957176208496, + -4.284289360046387, + -4.061647415161133, + -5.434777736663818, + -6.32805061340332, + -1.3440189361572266, + 1.1224439144134521, + -0.5459673404693604, + -5.098938941955566, + -0.97049880027771, + 28.68256187438965, + 1.7583932876586914, + -4.798488140106201, + -0.8372319936752319, + -1.5532904863357544, + 3.4707133769989014, + -1.488938570022583, + 2.3180792331695557, + 2.792170763015747, + -9.221792221069336, + -0.20554502308368683, + -2.4218502044677734, + -1.071313500404358, + -4.472447395324707, + -0.7684295773506165, + -0.755988597869873, + -0.20789965987205505, + -2.7759130001068115, + 4.52454948425293, + 1.849421501159668, + 5.644893169403076, + -2.7006473541259766, + -0.37112540006637573, + 7.068183422088623, + -11.173286437988281, + 9.025443077087402, + 3.185615062713623, + -6.080294609069824, + 0.16934680938720703, + 2.3686928749084473, + -2.156801462173462, + -1.899604320526123, + 1.3841698169708252, + -2.148787021636963, + -5.033073425292969, + -5.207442283630371, + 5.1731085777282715, + -4.800178527832031, + -2.6021318435668945, + -0.0982985869050026, + -1.1939886808395386, + 2.9111104011535645, + -1.6413507461547852, + -1.1214773654937744, + 3.1031785011291504, + 2.803367853164673, + -3.1961517333984375, + 1.6032108068466187, + -2.7409448623657227, + -1.4152262210845947, + 1.5987212657928467, + -1.0815256834030151, + 3.1186599731445312, + 2.3518762588500977, + -1.6297141313552856, + 0.9585537910461426, + 2.451982021331787, + 0.5275311470031738, + 3.250821828842163, + -1.9912526607513428, + -1.328925371170044, + -1.1639310121536255, + -4.128623008728027, + 0.5986360907554626, + 3.7688193321228027, + -0.18028509616851807, + 1.131284236907959, + -0.6944288015365601, + 2.2267842292785645, + 3.530325412750244, + -1.3582106828689575, + -0.8135672807693481, + 1.7896678447723389, + -3.326237678527832, + -3.486171245574951, + -0.20533031225204468, + 1.5177597999572754, + -12.831291198730469, + -2.7693076133728027, + -4.143954753875732, + -1.0589890480041504, + 1.275001049041748, + 0.6266913414001465, + -11.735239028930664, + -1.343977689743042, + -10.676582336425781, + 2.5038421154022217, + 5.018097877502441, + 6.324689865112305, + 8.75509262084961, + 2.0161542892456055, + 2.0418481826782227, + 2.05499005317688, + 5.456871509552002, + 1.1015698909759521, + 1.159508228302002, + -1.1308770179748535, + -6.114699840545654, + -5.823543071746826, + -3.265357732772827, + 3.6714415550231934, + -3.214515209197998, + -2.1661839485168457, + 3.0291032791137695, + -2.7967631816864014, + 0.8092473745346069, + 1.188953161239624, + -0.36516261100769043, + 0.5591094493865967, + 2.068902015686035, + -7.001607418060303, + -6.074518203735352, + -0.9240811467170715, + 0.6720130443572998, + 1.278885006904602, + 3.579594135284424, + 1.6851791143417358, + -7.756271839141846, + 2.950113296508789, + -1.5769253969192505, + 1.392076015472412, + 2.968064785003662, + -0.18822228908538818, + -1.2457557916641235, + 3.9323267936706543, + -2.5511910915374756, + -1.585511565208435, + 2.5712647438049316, + -1.1534782648086548, + -2.302319288253784, + -7.320271968841553, + 1.478467345237732, + 8.662673950195312, + -1.0287566184997559, + 6.4054670333862305, + -4.501672267913818, + 2.793748617172241, + -11.436521530151367, + -4.914514541625977, + 11.502220153808594, + -3.0929970741271973, + -0.759335994720459, + 0.08347195386886597, + -4.077733516693115, + -1.876295566558838, + 7.006616592407227, + 5.591838836669922, + -2.6623616218566895, + 5.803290367126465, + 4.250213146209717, + -0.7776565551757812, + -2.7785274982452393, + 1.299055576324463, + -3.3242619037628174, + -5.405501365661621, + 1.3124717473983765, + 16.556049346923828, + 1.6308856010437012, + 2.9311461448669434, + -5.347675800323486, + 12.013327598571777, + 9.957825660705566, + 2.8829872608184814, + 1.4352813959121704, + 1.5259041786193848, + 1.0789459943771362, + -0.7072751522064209, + 7.1756134033203125, + -11.200605392456055, + -1.8040359020233154, + 1.2665274143218994, + 1.4061620235443115, + -2.2925968170166016, + 1.5667650699615479, + 1.9401534795761108, + 2.836897134780884, + -0.17405575513839722, + 1.7839128971099854, + 5.306862831115723, + -3.269883155822754, + -1.6894605159759521, + -1.799957275390625, + -8.746087074279785, + -0.24068176746368408, + -3.8090291023254395, + -2.0909650325775146, + -4.595886707305908, + 4.262589931488037, + -2.1978893280029297, + -0.21573197841644287, + -2.3622639179229736, + 0.3463229537010193, + 0.19563931226730347, + 0.3050558567047119, + 0.8381136655807495, + 4.355072021484375, + -1.0746104717254639, + 0.47294068336486816, + -6.832319259643555, + -4.196700096130371, + 4.233615398406982, + 2.456057071685791, + 3.2386951446533203, + -1.0044814348220825, + 1.1453943252563477, + -4.756392002105713, + 0.8948119878768921, + -3.711669445037842, + 2.4225268363952637, + 2.8595073223114014, + -6.524750709533691, + 2.705170154571533, + 5.593554496765137, + -1.9722716808319092, + 1.2677056789398193, + -0.4102654457092285, + 0.2761281728744507, + -0.8254919052124023, + -8.883234024047852, + 1.5101194381713867, + 0.9124374389648438, + 4.2517170906066895, + 0.8230118751525879, + -13.822746276855469, + -2.025336265563965, + -2.892616033554077, + 6.346018314361572, + -0.9736697673797607, + -3.5387656688690186, + 12.248956680297852, + 4.3875956535339355, + 0.13842356204986572, + -4.3499603271484375, + 1.5062413215637207, + -0.3228180408477783, + 4.4704437255859375, + 3.095088005065918, + 1.0728976726531982, + -5.735374450683594, + -0.16463808715343475, + 4.72271203994751, + 6.215648174285889, + -4.6222147941589355, + 2.5424740314483643, + 3.9974114894866943, + -1.8439196348190308, + -2.2425830364227295, + -2.820777177810669, + -0.5458141565322876, + -0.18430006504058838, + 0.007018674165010452, + 5.361209869384766, + -6.17786979675293, + -4.214770317077637, + -1.1722828149795532, + 3.435062885284424, + 4.9273881912231445, + -10.281972885131836, + 0.9238009452819824, + 0.4575769305229187, + -4.24800443649292, + -4.61840295791626, + -2.149674892425537, + 1.8751583099365234, + -6.003235816955566, + -6.3221306800842285, + -2.828845262527466, + -12.201448440551758, + -1.7078580856323242, + 3.7102935314178467, + 0.5699573755264282, + -0.913479208946228, + -6.161465167999268, + 1.314293384552002, + 0.03046894073486328, + 0.39575424790382385, + -0.7288773059844971, + -0.27397340536117554, + 5.7921552658081055, + -1.0731301307678223, + 5.081632137298584, + -0.3669382929801941, + 2.386389970779419, + 5.33449649810791, + 4.124396800994873, + 2.921257257461548, + -1.2267460823059082, + 0.5227874517440796, + 1.2416698932647705, + -39.39975357055664, + 6.5122761726379395, + -1.8826713562011719, + -3.4689788818359375, + -9.188766479492188, + -4.93120002746582, + -1.4069814682006836, + -20.3944091796875, + -5.691396713256836, + -7.350189208984375, + -3.1304264068603516, + 0.3820246160030365, + 6.615478992462158, + 3.381873846054077, + 1.669320821762085, + -2.142940044403076, + -0.6988993287086487, + 3.9512057304382324, + -5.572274208068848, + -2.3985514640808105, + -4.266574859619141, + 3.576333522796631, + 4.511541366577148, + 1.5780895948410034, + -7.226004600524902, + -1.6086417436599731, + 1.0584580898284912, + -0.34598803520202637, + 5.318131446838379, + 2.238070011138916, + 3.476290225982666, + -0.31199926137924194, + -1.5439307689666748, + 0.03226912021636963, + -5.34353494644165, + 2.66375732421875, + -5.028960227966309, + 1.0154826641082764, + 14.31757926940918, + -0.835580587387085, + 0.40150216221809387, + 1.6733193397521973, + -0.6390904784202576, + 0.44086459279060364, + -3.2916908264160156, + -1.8488879203796387, + -5.485452651977539, + -1.4493076801300049, + 3.9834418296813965, + 8.488863945007324, + 0.9216480255126953, + -0.43511831760406494, + -2.8694541454315186, + 3.5306601524353027, + -2.563279390335083, + -2.1372854709625244, + -1.8858275413513184, + 0.23430722951889038, + 3.3817527294158936, + 0.05243825912475586, + 0.03268834576010704, + 1.886608362197876, + 3.0544273853302, + 1.27895188331604, + -0.13590796291828156, + -0.09156613051891327, + -2.075922727584839, + 0.7905084490776062, + 3.9729228019714355, + -2.8976452350616455, + 2.0654635429382324, + -0.8026591539382935, + 3.898547649383545, + -15.150740623474121, + -3.271589994430542, + 1.2427797317504883, + 6.907337188720703, + 0.914962112903595, + 1.8410847187042236, + 1.3104416131973267, + 0.4795020818710327, + -2.6988871097564697, + 1.9273815155029297, + 5.099649906158447, + -0.20796489715576172, + -1.2990014553070068, + 7.290299892425537, + -3.661177158355713, + -3.4545154571533203, + 0.7464038133621216, + 1.529127597808838, + 3.866741895675659, + -7.628842353820801, + -2.6729822158813477, + 8.607937812805176, + 1.2993396520614624, + 3.13714337348938, + 2.4359116554260254, + -0.1782875657081604, + -3.7009291648864746, + -0.7318322658538818, + 0.47120141983032227, + 1.398268222808838, + -3.1347410678863525, + 3.1525840759277344, + 0.9515541791915894, + -1.7168940305709839, + 6.783037185668945, + -11.440279006958008, + -2.2906992435455322, + 4.894501686096191, + 13.99712085723877, + -1.3077971935272217, + 3.490772008895874, + -4.484321594238281, + 1.233520269393921, + -11.088835716247559, + 0.41420215368270874, + -11.301345825195312, + 3.619182586669922, + 2.98392915725708, + -3.410733222961426, + 4.05631160736084, + 13.979842185974121, + -4.670180320739746, + -7.989226818084717, + 9.275179862976074, + -1.378843069076538, + -2.8044705390930176, + -2.101111650466919, + -16.030967712402344, + 3.509920120239258, + -5.771618843078613, + 0.37520450353622437, + 5.289674282073975, + -0.7170727849006653, + -1.4643326997756958, + -1.8994724750518799, + 0.9082581996917725, + -0.22846627235412598, + 0.5767704248428345, + -7.411016941070557, + -0.18992263078689575, + 2.238833427429199, + -3.10526704788208, + 0.17242199182510376, + 5.800785064697266, + -1.6046578884124756, + 1.2433006763458252, + 3.618391275405884, + 0.6951291561126709, + 13.78544807434082, + -5.039181709289551, + 2.553065538406372, + -2.7899417877197266, + 3.4309115409851074, + 0.10255086421966553, + 13.800263404846191, + -0.5051194429397583, + 6.627203464508057, + 0.5318013429641724, + -4.037836074829102, + 14.16448974609375, + 0.6697123050689697, + 3.242236375808716, + 0.8863738775253296, + 1.748556137084961, + 1.2804970741271973, + -0.43109241127967834, + 3.677168607711792, + -4.491763114929199, + -0.6822149753570557, + -3.426085948944092, + 7.722332954406738, + -2.4054055213928223, + 0.43137991428375244, + 6.222236633300781, + -2.300105094909668, + -0.7707583904266357, + -0.9166820049285889, + -2.3376762866973877, + -3.001105785369873, + 8.18808364868164, + -3.216697931289673, + -1.9381434917449951, + 3.700897693634033, + -1.0047615766525269, + 1.800493836402893, + 0.39120620489120483, + -2.747572898864746, + 4.752078533172607, + 2.6827950477600098, + 0.6632356643676758, + -5.260893821716309, + -2.2392146587371826, + -6.862597465515137, + -1.4195091724395752, + -2.3312454223632812, + -1.4384963512420654, + 0.025870993733406067, + 3.06878924369812, + 5.915849208831787, + 0.033048391342163086, + -0.15275073051452637, + 0.48780375719070435, + -1.772928237915039, + 6.4617815017700195, + -6.3323822021484375, + -0.5305843353271484, + 0.7765846252441406, + 1.0013713836669922, + 0.2244165688753128, + 1.952925443649292, + -1.0236507654190063, + -1.843985676765442, + -4.070575714111328, + 1.194258689880371, + 3.092228412628174, + 2.7891345024108887, + 2.0974228382110596, + -2.8361318111419678, + 0.702399730682373, + -1.1687610149383545, + -2.483673095703125, + 1.3578130006790161, + -0.48537975549697876, + 4.185157775878906, + 0.7511957883834839, + -0.6113101243972778, + 6.3814473152160645, + 0.02171003818511963 + ] + }, + "12": { + "gender": "男性", + "describe": "班级话痨", + "tensor": [ + -1.381103277206421, + 1.6472011804580688, + -1.6378729343414307, + -0.25372314453125, + 2.300504207611084, + 2.1488962173461914, + -0.6379438638687134, + 1.003900408744812, + -2.4538822174072266, + 1.7355669736862183, + -2.8116323947906494, + 4.775881290435791, + 1.4371094703674316, + -0.6397114992141724, + -3.3662209510803223, + -0.6299111843109131, + 1.118880033493042, + -1.825326681137085, + 4.819347858428955, + -0.7423362135887146, + 15.113768577575684, + 1.5540084838867188, + 7.837532997131348, + -4.0405449867248535, + 0.5474399328231812, + -3.52386474609375, + -11.161117553710938, + 14.556123733520508, + 3.909827947616577, + 2.0422914028167725, + -0.1762346625328064, + 3.1459763050079346, + 2.009817361831665, + -0.02807602286338806, + -2.149198055267334, + -24.724464416503906, + -9.220976829528809, + -3.1158409118652344, + -3.3037831783294678, + -1.4847300052642822, + 1.0489311218261719, + -1.5779438018798828, + 2.098283529281616, + -2.665229558944702, + 11.001029968261719, + 2.7279856204986572, + -1.800452470779419, + -0.854947566986084, + -3.3404557704925537, + 1.6060950756072998, + -0.6750163435935974, + -5.159131050109863, + -0.05376249551773071, + 0.5674459338188171, + -0.09247106313705444, + 4.016246318817139, + 1.5870944261550903, + -0.8961019515991211, + -1.9663801193237305, + 5.5245161056518555, + -4.754247188568115, + -1.632368564605713, + 0.5749662518501282, + -1.3286789655685425, + -0.8198436498641968, + -0.8592014312744141, + 1.299135446548462, + 4.153705596923828, + 2.5714993476867676, + -1.7086808681488037, + -1.6363024711608887, + 1.7733495235443115, + 0.6843674778938293, + -3.3045969009399414, + -6.974406719207764, + 2.5369467735290527, + 2.1106626987457275, + -4.771285533905029, + 2.9706971645355225, + 0.11826932430267334, + 1.3470611572265625, + -5.556636333465576, + -0.3814418315887451, + 4.363605499267578, + 1.2246030569076538, + -3.9136428833007812, + 2.3991615772247314, + 0.9611636996269226, + 0.5585647821426392, + -4.592180252075195, + 5.802272796630859, + 2.6685659885406494, + 5.302556037902832, + -2.5630300045013428, + 4.2561211585998535, + -1.6367363929748535, + 3.73225736618042, + 1.0391497611999512, + 0.6777984499931335, + -1.8013453483581543, + 8.303884506225586, + -0.16878800094127655, + -2.7147440910339355, + 1.3256043195724487, + 2.1953859329223633, + -0.8545724153518677, + 3.232492208480835, + 6.116358757019043, + 7.023722171783447, + -3.4170589447021484, + 2.5634777545928955, + 1.0783424377441406, + -3.873445510864258, + -3.0899760723114014, + 3.398397445678711, + 5.709159851074219, + 0.2734348773956299, + 1.7770895957946777, + 1.3136333227157593, + -5.398042678833008, + -2.3025174140930176, + -1.2934964895248413, + 1.6959714889526367, + 8.764656066894531, + 8.089994430541992, + 2.5914840698242188, + -4.022997856140137, + -0.8809692859649658, + 1.3969933986663818, + -4.8477253913879395, + 3.1294267177581787, + 4.940852165222168, + 3.6398260593414307, + 0.920642614364624, + -8.357941627502441, + 4.654946327209473, + -16.12240219116211, + -2.6238198280334473, + -9.421167373657227, + -0.36603450775146484, + -3.14365553855896, + -0.5023990869522095, + -1.6676372289657593, + -0.5283496975898743, + 1.4885185956954956, + -6.255712985992432, + 0.9488133192062378, + -4.2049560546875, + 0.40972238779067993, + -2.0593650341033936, + 5.695958614349365, + 1.7160680294036865, + 2.508538246154785, + 6.951699733734131, + 3.334836483001709, + 1.6039155721664429, + 6.951011657714844, + -2.9125051498413086, + -7.733034610748291, + 0.11757826805114746, + -2.9916372299194336, + 2.9741110801696777, + 0.16139042377471924, + 1.2467992305755615, + 0.07222718000411987, + -0.5890591144561768, + 1.0131640434265137, + 0.29800713062286377, + 1.6621793508529663, + -6.285698890686035, + -4.7392258644104, + -12.228079795837402, + 4.733877658843994, + -3.644912004470825, + -3.2403910160064697, + 0.43349674344062805, + 3.934614896774292, + -1.6878962516784668, + 1.388797640800476, + -3.1684889793395996, + 0.3972827196121216, + -2.0393640995025635, + 2.5756685733795166, + 2.8820078372955322, + -5.572915077209473, + -1.2736353874206543, + 10.92755126953125, + 1.9120655059814453, + -1.0121073722839355, + -5.491581916809082, + 5.410955429077148, + 2.01133394241333, + 2.4065654277801514, + -3.093392848968506, + -4.339996337890625, + -5.400712966918945, + -5.524374008178711, + -3.019967555999756, + 6.651155471801758, + -4.177205562591553, + -3.884342670440674, + 6.073383331298828, + -3.020185947418213, + 2.517826795578003, + -4.160904884338379, + 0.3531208634376526, + 2.1667566299438477, + 16.220006942749023, + 4.188708782196045, + -2.6270391941070557, + 0.7784955501556396, + 1.7426581382751465, + -3.4758453369140625, + 2.9859566688537598, + -4.51285457611084, + 1.4606841802597046, + -1.5801538228988647, + -4.913451671600342, + 6.480744361877441, + 7.430534362792969, + -2.698636293411255, + -0.7765107154846191, + 1.5919651985168457, + -4.251584053039551, + 3.742962121963501, + -2.7088403701782227, + -4.128322601318359, + -0.8904715776443481, + -2.0792808532714844, + -1.9222259521484375, + -3.016380548477173, + -11.744847297668457, + -2.0646777153015137, + -5.392011642456055, + 1.0889651775360107, + -1.2097554206848145, + 5.90805721282959, + -0.6912961006164551, + -1.9561119079589844, + -3.247056722640991, + 3.522481918334961, + -5.014420986175537, + -4.417217254638672, + 0.7049972414970398, + 0.8695178031921387, + 0.2917570471763611, + -0.2446141242980957, + -1.1087441444396973, + 5.846534252166748, + 2.0046439170837402, + 7.018584251403809, + 1.7650158405303955, + 1.3943984508514404, + 4.076688766479492, + -7.047641754150391, + 0.6430951952934265, + -5.10742712020874, + -13.996337890625, + 0.23086029291152954, + -6.6138763427734375, + 0.558874785900116, + 1.9630693197250366, + 1.3392820358276367, + 3.7857768535614014, + -0.4460992217063904, + 2.522751569747925, + 3.8978400230407715, + 2.0403926372528076, + -4.0280680656433105, + 1.4155185222625732, + 2.2166216373443604, + 6.815171718597412, + -10.516357421875, + -0.04736590385437012, + -1.2669334411621094, + -3.4401776790618896, + 3.336432456970215, + 2.8484251499176025, + 1.648374080657959, + 1.5738511085510254, + 0.7930272817611694, + -0.037091851234436035, + 1.9731025695800781, + 0.5494801998138428, + 3.053772449493408, + -4.480010986328125, + -3.320248603820801, + 1.359479546546936, + -12.727360725402832, + -3.322899103164673, + -1.116102695465088, + -2.523613691329956, + -3.999021530151367, + 1.7039059400558472, + -5.362238883972168, + 6.440468788146973, + -0.24123847484588623, + 1.4641528129577637, + -4.117319583892822, + -2.7863752841949463, + 2.433842897415161, + -0.4519033432006836, + 1.0721399784088135, + -2.1003551483154297, + 2.2829349040985107, + 1.3170554637908936, + 17.16661262512207, + -2.1162686347961426, + 2.603817939758301, + -0.8800754547119141, + -5.230169773101807, + 2.7880194187164307, + 5.1048688888549805, + -5.329896450042725, + -1.0306037664413452, + 5.419824600219727, + 3.9068264961242676, + 1.8463327884674072, + 3.141373872756958, + -1.4245522022247314, + -0.735072135925293, + -5.011196136474609, + -0.6835345029830933, + -0.2521055340766907, + 1.846015214920044, + 4.562121868133545, + -1.6150920391082764, + -4.8485493659973145, + -2.9847893714904785, + 3.5633487701416016, + -3.498169183731079, + 9.495545387268066, + -4.5550642013549805, + 0.07676374912261963, + -0.4028339982032776, + 11.03297233581543, + -4.329550266265869, + -16.67626953125, + 1.8166848421096802, + -1.1893385648727417, + 3.6998291015625, + 3.0257816314697266, + 0.3188299536705017, + -4.1090264320373535, + 0.8769729137420654, + -21.615663528442383, + -3.0164005756378174, + 0.074988454580307, + 4.690029144287109, + 10.811641693115234, + 2.044837236404419, + 1.1122528314590454, + 2.9421427249908447, + -0.9854812622070312, + 0.8587658405303955, + -2.6557717323303223, + -3.0422754287719727, + 4.732326984405518, + -1.459282636642456, + 3.3654308319091797, + -0.23905420303344727, + -2.97977352142334, + -2.4057540893554688, + -1.0672404766082764, + 1.0042383670806885, + -0.10235786437988281, + -0.8796730041503906, + -3.687089443206787, + 0.6612299680709839, + 9.45109748840332, + -3.7544093132019043, + -0.6477639079093933, + -3.9211630821228027, + 4.744166851043701, + 1.426596999168396, + 1.8288437128067017, + -5.427153587341309, + -0.5897858738899231, + -5.725610256195068, + -0.4644652009010315, + 0.5037415027618408, + -1.8842520713806152, + 3.7238049507141113, + -15.913492202758789, + 5.582465171813965, + 1.6503015756607056, + -0.16227485239505768, + 3.097487688064575, + 3.2689032554626465, + -1.10257887840271, + 4.2536468505859375, + 0.2196827232837677, + -0.5602977275848389, + 3.453559637069702, + -0.8266534805297852, + 3.647582530975342, + -0.1297115683555603, + 1.0579736232757568, + 3.2811403274536133, + -3.4929115772247314, + 1.0451363325119019, + -7.0586090087890625, + -7.793750762939453, + -0.4860561490058899, + 6.403079986572266, + -4.081005096435547, + 6.405905723571777, + 0.6058162450790405, + 5.07711935043335, + -14.306201934814453, + -0.3692031502723694, + -2.681674003601074, + -5.353803634643555, + -0.1897432804107666, + -0.3389459252357483, + -2.7081732749938965, + -10.229301452636719, + 5.572935581207275, + -4.0139851570129395, + 4.912724494934082, + 1.2324144840240479, + 1.6651058197021484, + 0.4593813717365265, + -2.653132438659668, + -1.2577160596847534, + 1.773688554763794, + 4.290838241577148, + 10.025986671447754, + -0.5398951768875122, + 3.1248843669891357, + 0.20129835605621338, + 1.0777950286865234, + -1.6214454174041748, + -7.181728839874268, + -1.175560474395752, + -1.712165355682373, + 0.2767040729522705, + -8.0718355178833, + 2.1573214530944824, + -0.4893803894519806, + -3.120908498764038, + 1.6714297533035278, + 2.5104079246520996, + -0.5649998188018799, + -9.248221397399902, + -1.0451993942260742, + -7.868926048278809, + -3.737304210662842, + 0.6592649817466736, + 1.2480148077011108, + -1.0492931604385376, + 1.8222291469573975, + -2.968552589416504, + -4.948574542999268, + -1.909650206565857, + 1.6375336647033691, + 2.8167903423309326, + -3.110764503479004, + -2.281550407409668, + 1.2503340244293213, + 7.38547945022583, + 1.5560168027877808, + -2.1929638385772705, + 6.925246238708496, + 0.5810534954071045, + -0.8497737646102905, + 2.880009651184082, + 4.726633071899414, + 7.664470672607422, + 4.092508792877197, + 1.2888286113739014, + 2.981180429458618, + -1.7322827577590942, + 6.803493022918701, + -0.8918359279632568, + -2.1426427364349365, + -2.0355424880981445, + -3.2689309120178223, + -2.123929500579834, + 0.9488838911056519, + -0.8080683350563049, + 3.4291751384735107, + 5.84420108795166, + -1.979137897491455, + 0.6104163527488708, + -0.368630051612854, + 0.2653862237930298, + 2.0922627449035645, + 10.4806489944458, + 4.8504204750061035, + 0.6482694745063782, + 1.2987282276153564, + -2.3310680389404297, + 4.7243428230285645, + 4.413473129272461, + 5.116392612457275, + -0.5277657508850098, + 4.193506240844727, + -1.6830244064331055, + -1.4613211154937744, + -1.3738524913787842, + 1.385159969329834, + 1.1172516345977783, + 3.002704620361328, + -2.550916910171509, + -2.1680474281311035, + -3.4653167724609375, + -0.7706855535507202, + 4.8397111892700195, + -0.08578404784202576, + 0.04135291278362274, + -2.6192574501037598, + 0.8674821853637695, + -0.9036360383033752, + -4.6187424659729, + -0.9237766265869141, + 0.2198232263326645, + -2.294436454772949, + 1.6709307432174683, + -3.956740379333496, + -3.8637001514434814, + 5.63535737991333, + 4.369843482971191, + -0.9674966335296631, + 1.4255411624908447, + -3.6081995964050293, + 1.982834815979004, + -2.170712947845459, + -0.6016101837158203, + -0.7935411930084229, + 1.8819220066070557, + -2.476524829864502, + -6.623390197753906, + 1.7826212644577026, + 1.4906516075134277, + -0.38787710666656494, + 4.501125812530518, + -10.13479232788086, + 3.232372522354126, + 4.683743476867676, + 0.4618542790412903, + -5.005178928375244, + -1.6805064678192139, + -1.885979413986206, + -11.345280647277832, + -2.266706705093384, + -0.22234007716178894, + 0.7077353000640869, + -2.973508596420288, + 4.525555610656738, + -0.11485999822616577, + -2.196289539337158, + 1.8949944972991943, + -0.1456056833267212, + 1.719231128692627, + 1.8063218593597412, + 1.2645479440689087, + -0.43023234605789185, + -1.6531562805175781, + 3.501277208328247, + -1.6804916858673096, + -5.939063549041748, + -1.409195899963379, + 0.8580266237258911, + 2.8566396236419678, + 9.76298713684082, + -5.8358378410339355, + -0.759312629699707, + 0.15128862857818604, + 1.9750734567642212, + 5.753940105438232, + 0.4377277195453644, + 6.061811923980713, + -8.847587585449219, + 2.686215400695801, + 2.232820987701416, + -5.681520462036133, + -0.6606855392456055, + 4.310207843780518, + 2.078670024871826, + 1.9788520336151123, + -1.5493074655532837, + -4.637633800506592, + -6.912421703338623, + -1.1913539171218872, + 1.5495771169662476, + -1.2413239479064941, + 4.902052879333496, + 4.650295257568359, + 2.4236867427825928, + -1.8284064531326294, + 2.4536736011505127, + -5.826791286468506, + -0.060603201389312744, + -2.5779764652252197, + -3.9645419120788574, + 1.1053962707519531, + -0.2647816836833954, + 0.986197292804718, + 12.274568557739258, + 2.3076224327087402, + -0.27447542548179626, + -3.8145644664764404, + 1.5765998363494873, + -2.3364756107330322, + 2.5744833946228027, + 4.395844459533691, + 1.517756462097168, + 2.5918614864349365, + 0.6926932334899902, + -0.6004687547683716, + 0.9138636589050293, + 2.260018825531006, + 4.59797477722168, + 0.5756382942199707, + 0.24546962976455688, + 1.529158115386963, + 0.215772807598114, + -1.547921895980835, + -2.9703357219696045, + -0.5319173336029053, + -5.715917587280273, + -0.06609079986810684, + -0.47983938455581665, + -0.17870062589645386, + -1.0209732055664062, + 2.5347495079040527, + -2.8850739002227783, + -1.9110455513000488, + 6.42308235168457, + 0.9265373945236206, + 3.7561073303222656, + 1.5597929954528809, + 9.940394401550293, + -2.910407304763794, + -2.7461118698120117, + 4.234886646270752, + 0.6482394933700562, + -8.025228500366211, + -4.3128886222839355, + -0.9350241422653198, + 0.7527297735214233, + 5.895216464996338, + -0.8256193995475769, + -1.9580013751983643, + -4.816361427307129, + -3.6900477409362793, + 1.0701698064804077, + -1.5115165710449219, + -3.511784076690674, + -2.7246806621551514, + -1.2870614528656006, + 3.1231300830841064, + -0.22454833984375, + 0.2736588418483734, + -5.074733257293701, + -1.7402875423431396, + -4.393257141113281, + 1.284812569618225, + 5.178900718688965, + 9.856668472290039, + -0.477672278881073, + 1.3210444450378418, + 6.923086643218994, + -2.190018653869629, + -8.196492195129395, + -1.3918421268463135, + -9.108256340026855, + 1.0805563926696777, + -0.5465478897094727, + 2.0043745040893555, + -3.889084577560425, + -5.442048072814941, + -5.533323287963867, + 0.8941083550453186, + 2.7710485458374023, + 2.7887260913848877, + 0.3816753625869751, + -1.7990624904632568, + 3.0691277980804443, + 2.981781482696533, + -2.3807477951049805, + -10.45269775390625, + 1.0269263982772827, + -5.247468948364258, + 2.980142593383789, + 19.122455596923828, + 1.4250059127807617, + 8.698219299316406, + 5.5629730224609375, + 3.655461072921753, + -2.457479476928711, + -5.77496337890625, + -3.1278953552246094, + 9.124002456665039, + -3.1320362091064453, + 5.187254905700684, + -0.2911728620529175, + -3.3416035175323486, + 3.8755903244018555, + -2.4890904426574707, + 4.926595687866211, + -2.995089292526245, + 3.7130284309387207, + -2.690054178237915, + 5.358175754547119, + -10.434890747070312, + -0.21612247824668884, + -2.3439347743988037, + -3.1608362197875977, + 0.9997699856758118, + 3.2135653495788574, + -2.2435109615325928, + 1.1304185390472412, + -0.8119738101959229, + -0.8388270735740662, + -2.0768580436706543, + 1.5430076122283936, + -1.844212532043457, + 4.270237922668457, + 3.6660637855529785, + 0.8655283451080322, + 1.288583755493164, + 0.6430290937423706, + -2.5227160453796387, + -0.144814133644104, + 2.0920939445495605, + -4.138334274291992, + -2.4555654525756836, + -3.077261447906494, + -1.6852726936340332, + 3.708156108856201, + -4.319151401519775, + 2.5206525325775146, + -0.8457328081130981, + -1.5166716575622559, + 1.1003599166870117, + 3.1060056686401367, + -2.6708831787109375, + 3.306713581085205, + -0.4197266697883606, + 0.08764150738716125, + 0.3042670488357544, + 3.4140353202819824, + -1.4534955024719238, + -0.6722075939178467, + -4.972552299499512, + 4.7125444412231445, + -1.729709267616272, + 0.1375691294670105, + 0.22608670592308044, + -5.914595127105713, + -2.821653127670288, + 0.5966392755508423, + -0.06712988764047623, + 1.8689227104187012, + -1.7095344066619873, + -1.5437746047973633, + 3.319598913192749, + 2.0568583011627197, + -1.8815429210662842, + -2.0161290168762207, + 2.1941609382629395, + 2.5075738430023193, + -1.5327672958374023, + 0.5098558664321899, + 0.8112063407897949, + 2.820253372192383 + ] + }, + "13": { + "gender": "女性", + "describe": "歪果仁讲中文", + "tensor": [ + 5.774941444396973, + -5.933988094329834, + -19.256563186645508, + 2.1655170917510986, + 3.767704486846924, + 1.6554858684539795, + -21.02293586730957, + 0.8589993715286255, + 0.4244486689567566, + 14.10806941986084, + -1.2565739154815674, + -0.4081263542175293, + 1.0179744958877563, + -1.2561898231506348, + -0.9264177083969116, + -1.1545575857162476, + -7.741032600402832, + 0.10058414936065674, + 2.698868989944458, + -2.4909508228302, + 3.936603546142578, + -0.4193645119667053, + 4.896995544433594, + 8.591428756713867, + 0.9436275959014893, + -2.0439670085906982, + -11.538091659545898, + 3.1094722747802734, + 3.1122846603393555, + 4.387700080871582, + -11.37810230255127, + -4.0631208419799805, + -7.67246675491333, + 9.011669158935547, + 0.76943439245224, + -25.005624771118164, + -5.36826229095459, + -1.6725406646728516, + 2.7192745208740234, + -1.1562578678131104, + 1.059768557548523, + 4.615142822265625, + 6.996954441070557, + 0.7305986881256104, + -6.466427803039551, + 1.736006736755371, + 0.3699427843093872, + 1.3785357475280762, + 0.411562442779541, + 0.6179840564727783, + 0.5776501297950745, + -2.78291392326355, + 2.8923256397247314, + -5.077019691467285, + 1.0101704597473145, + 0.18393349647521973, + 1.352562665939331, + 1.1424992084503174, + 1.2315529584884644, + 3.488339900970459, + -0.303519606590271, + 0.1503458321094513, + 10.767633438110352, + 1.2258210182189941, + 0.08141803741455078, + -0.4682579040527344, + 0.6255457401275635, + 9.77688980102539, + 0.9738484621047974, + 4.665722370147705, + 2.7040226459503174, + 0.5903415679931641, + -3.2082066535949707, + 4.009143829345703, + -13.784036636352539, + -0.38479363918304443, + -4.748171329498291, + -2.2675094604492188, + 1.1375328302383423, + 4.605729103088379, + 3.2624497413635254, + 0.7466616630554199, + 0.589319109916687, + 1.7198970317840576, + 4.818778038024902, + -0.3316614329814911, + -5.824312686920166, + 3.3190410137176514, + 5.110676288604736, + -0.3771807551383972, + -2.3816161155700684, + -3.3786535263061523, + 2.0209896564483643, + -0.924774169921875, + 2.18359375, + -11.257342338562012, + 0.6659712791442871, + -2.9818012714385986, + 0.15257669985294342, + 3.743237018585205, + -4.057236194610596, + 3.39764142036438, + -1.3120231628417969, + -3.2556259632110596, + -1.3803305625915527, + 2.7421505451202393, + 1.9267938137054443, + -4.590316295623779, + 10.099462509155273, + -1.8460562229156494, + 1.1674269437789917, + -1.910240888595581, + -21.67080307006836, + -3.3053441047668457, + -2.011974334716797, + -2.5374844074249268, + 0.5165555477142334, + 0.10815751552581787, + 12.219396591186523, + -3.7414908409118652, + 0.6948560476303101, + 0.23422139883041382, + 1.9562766551971436, + -0.02828073501586914, + 1.0900282859802246, + 4.574860572814941, + 1.2093857526779175, + -3.2834720611572266, + -0.8386667966842651, + -0.867862343788147, + 3.0476441383361816, + 4.6722412109375, + 2.4064157009124756, + -0.7353888750076294, + 3.1995980739593506, + 2.6345460414886475, + -4.101358413696289, + -2.3260269165039062, + 10.61902141571045, + 1.3824756145477295, + 0.07761770486831665, + -2.335960865020752, + 0.9167560338973999, + 5.103396415710449, + -1.4535318613052368, + 1.276242971420288, + -4.224498271942139, + -10.7196626663208, + -1.7770634889602661, + 0.5570123195648193, + 0.3202834129333496, + -4.071437835693359, + 1.5364407300949097, + 2.3933827877044678, + 3.332411289215088, + 3.2065742015838623, + 19.613584518432617, + -0.9979338645935059, + 0.06692314147949219, + -4.323611259460449, + 1.1056536436080933, + 0.8575071096420288, + -1.0608997344970703, + 0.06383895874023438, + -3.651215076446533, + -0.527611255645752, + -0.9659940004348755, + 3.053088903427124, + -2.771671772003174, + -5.894748687744141, + 0.46325403451919556, + 2.3309743404388428, + 1.6626238822937012, + 0.07297837734222412, + -3.653627634048462, + -2.2806341648101807, + 1.659598469734192, + -7.193004608154297, + 2.859933614730835, + 0.16977369785308838, + -0.45034313201904297, + 1.040487289428711, + 3.3799872398376465, + -0.06710350513458252, + 6.14979887008667, + 2.0443356037139893, + -0.5034642219543457, + -0.014095962047576904, + 1.1960549354553223, + 3.5500190258026123, + -0.7192257642745972, + -1.3117003440856934, + 1.162321925163269, + -0.007922768592834473, + -0.523072361946106, + -17.207855224609375, + -7.823162078857422, + -0.6132768988609314, + -3.290013313293457, + -2.438256025314331, + 1.048959493637085, + -1.912617564201355, + -0.3457266688346863, + 4.878326892852783, + 10.288037300109863, + 0.26954445242881775, + 0.3170246481895447, + 6.943954944610596, + 2.35068941116333, + -0.5655561685562134, + 0.29813098907470703, + 2.2689576148986816, + -0.467549204826355, + 5.654573440551758, + -4.165726661682129, + -1.4156360626220703, + -0.5813226103782654, + 4.672659873962402, + 1.2415400743484497, + 4.569934844970703, + 0.8030510544776917, + -2.857362747192383, + -1.1034464836120605, + 3.647738456726074, + 3.0421910285949707, + -6.2038092613220215, + 3.96537446975708, + -2.9482991695404053, + -1.549912691116333, + 0.29597318172454834, + -5.904300212860107, + 1.8064045906066895, + 1.0619138479232788, + 1.7572853565216064, + 0.2211293876171112, + -2.093719482421875, + -1.3893272876739502, + -3.5066566467285156, + -4.307873725891113, + 2.0931308269500732, + 5.062103748321533, + 9.94530200958252, + -16.63007354736328, + 1.8742942810058594, + -1.3638136386871338, + 0.7742542028427124, + -1.1354739665985107, + 0.3884068727493286, + 2.1668641567230225, + 1.5592721700668335, + -1.5990233421325684, + -0.6570020318031311, + -0.4256061315536499, + -1.0240248441696167, + -7.511441707611084, + -1.264317274093628, + 2.3104987144470215, + 0.2115638256072998, + 5.575558662414551, + -0.8009939193725586, + 4.59879732131958, + 2.7284131050109863, + -1.471455693244934, + -1.8262228965759277, + 1.669329285621643, + -1.0984750986099243, + -1.9370641708374023, + 4.225533962249756, + -1.964372158050537, + 0.3155718445777893, + 3.8228652477264404, + 0.8925256133079529, + -1.8348493576049805, + 5.098485946655273, + -0.9310028553009033, + -7.885222434997559, + 6.235640525817871, + 3.7272417545318604, + -3.750157594680786, + 1.3354904651641846, + -2.344210386276245, + 0.9944398403167725, + 1.2703471183776855, + -0.02580522745847702, + 5.763407230377197, + 2.2417795658111572, + -4.805788993835449, + -2.8311049938201904, + -6.2518463134765625, + -4.341195106506348, + -0.3669980764389038, + 2.5442867279052734, + 7.282649993896484, + -4.145668029785156, + 4.118896007537842, + -1.5623993873596191, + 0.528317928314209, + -2.9202792644500732, + -2.2160091400146484, + 0.06001201272010803, + 2.693718433380127, + 4.275384426116943, + -0.18190085887908936, + 0.03819394111633301, + 0.0005591809749603271, + -2.493028163909912, + 7.564227104187012, + -2.915526866912842, + 3.991983413696289, + -0.5326855778694153, + -1.9472534656524658, + -0.3084869384765625, + -0.6465785503387451, + 1.1672487258911133, + 3.3113410472869873, + 3.7625339031219482, + -4.232380390167236, + 7.956140995025635, + 0.5940779447555542, + 0.018996834754943848, + -1.787581443786621, + 3.3879451751708984, + 2.405109405517578, + -0.7559695243835449, + 3.026017189025879, + 7.197314739227295, + -6.450169563293457, + -3.592937469482422, + -0.6029465198516846, + 5.196926593780518, + 0.9675405025482178, + 0.37676334381103516, + -3.939788341522217, + -4.678372383117676, + 1.8610577583312988, + 15.60148811340332, + 7.544435501098633, + 4.32912540435791, + -7.073690891265869, + -1.5449048280715942, + -2.2571377754211426, + 4.224358558654785, + 4.240804195404053, + -3.1526646614074707, + -1.0681207180023193, + 6.212803840637207, + -0.8346220254898071, + -3.14165997505188, + -0.5052285194396973, + -6.34282112121582, + -1.839015245437622, + 3.9114112854003906, + -2.300915002822876, + 1.3172765970230103, + 3.455887794494629, + -3.3408854007720947, + -6.141932964324951, + -0.8252944946289062, + -9.01498794555664, + 4.566729545593262, + -3.4830291271209717, + -2.2158706188201904, + -12.158866882324219, + 9.100112915039062, + -0.6466834545135498, + 0.8936805725097656, + -2.791292428970337, + 1.6891493797302246, + 2.6682353019714355, + 3.599846363067627, + -1.800520420074463, + 2.9225940704345703, + 0.43740415573120117, + -2.0643396377563477, + 0.6422274112701416, + -0.4880521297454834, + -1.6173131465911865, + -4.97019624710083, + -0.22253704071044922, + 0.4483276903629303, + -11.244114875793457, + 2.393064498901367, + -0.4992181062698364, + -5.304434299468994, + -2.1439831256866455, + -8.281394004821777, + 0.7350829243659973, + -4.225015640258789, + -5.018383979797363, + 4.035406112670898, + 0.7661048173904419, + -2.0158872604370117, + -4.551070690155029, + -2.042886972427368, + -1.252121925354004, + 1.3196074962615967, + 3.5299394130706787, + -1.902230978012085, + -6.274667739868164, + -3.2526345252990723, + -5.020789623260498, + -2.0447440147399902, + -6.6654229164123535, + -3.232572555541992, + -0.8639999628067017, + 0.2891767621040344, + -4.523351669311523, + -1.4646611213684082, + 19.055070877075195, + 5.311841011047363, + 1.5747225284576416, + -0.8617715835571289, + -7.279517650604248, + -1.007409930229187, + -1.0476250648498535, + 0.13504564762115479, + 1.8705651760101318, + -3.1932926177978516, + 3.33994197845459, + 1.7771990299224854, + 1.537318229675293, + 6.72212028503418, + 1.9495563507080078, + 6.3791117668151855, + 3.8643527030944824, + -4.029425144195557, + 2.579799175262451, + -3.0799942016601562, + -1.5953035354614258, + 1.2870973348617554, + -2.2802906036376953, + 1.615740180015564, + 1.3537278175354004, + -3.9949352741241455, + 0.7138686180114746, + -7.454409122467041, + 3.4602885246276855, + 1.8264124393463135, + 3.9114649295806885, + -4.012460708618164, + 2.012681484222412, + 0.842544674873352, + 4.3130340576171875, + 1.7753195762634277, + 0.40672481060028076, + -0.552821695804596, + 6.059595108032227, + 15.126845359802246, + 2.6703896522521973, + 0.6266542673110962, + -1.0418140888214111, + 4.191507339477539, + 1.8061633110046387, + -3.40466046333313, + -3.209613561630249, + 1.6792066097259521, + -2.115118980407715, + 1.0372998714447021, + -0.20641589164733887, + -2.3373069763183594, + 5.207644462585449, + 0.2218020260334015, + 6.3935370445251465, + -14.476949691772461, + -2.54896879196167, + -3.1087734699249268, + 2.186305522918701, + -8.618979454040527, + -5.027774810791016, + 10.085561752319336, + 2.3556761741638184, + 13.150611877441406, + 0.5745247602462769, + 4.964212894439697, + -3.440232753753662, + -3.2939374446868896, + -1.609094500541687, + -5.136519908905029, + -5.243703365325928, + 2.002434730529785, + -4.736039638519287, + 2.9196324348449707, + -0.10729652643203735, + -4.288667678833008, + -3.321523666381836, + -0.9669722318649292, + -2.035313367843628, + -0.15101563930511475, + 2.600752115249634, + -4.626378059387207, + 4.342830657958984, + 1.9365360736846924, + -0.06541299819946289, + -15.11831283569336, + -5.628812313079834, + 0.4573243260383606, + -0.6469465494155884, + -2.007617473602295, + -2.524244546890259, + -1.3134723901748657, + 0.03769299387931824, + 3.348083019256592, + 0.3170957565307617, + 1.4981790781021118, + -7.806140899658203, + -0.16268587112426758, + -1.4372191429138184, + 3.138178586959839, + 0.2748234272003174, + -5.493190765380859, + 1.6686073541641235, + 1.0926538705825806, + 12.2603120803833, + 3.1554341316223145, + 1.114333152770996, + -2.530106782913208, + -0.2445252239704132, + -0.22182881832122803, + -2.250293731689453, + 0.03703847527503967, + 0.06593084335327148, + 0.42028284072875977, + -3.256840705871582, + -0.9192712306976318, + 0.6854782104492188, + -5.510132789611816, + -3.503333330154419, + -1.0332084894180298, + -2.716616630554199, + 0.2531473636627197, + 0.20798683166503906, + 3.1227529048919678, + 2.264322280883789, + 2.390246868133545, + 1.630387783050537, + -2.639859199523926, + -1.2947338819503784, + 6.411829948425293, + -1.7182502746582031, + -2.529351234436035, + -2.4252326488494873, + -3.035357713699341, + -2.5281691551208496, + 1.386730432510376, + -9.371940612792969, + -0.9961775541305542, + 1.3613935708999634, + -0.2062300741672516, + 2.8009653091430664, + 5.843138217926025, + 1.7272825241088867, + -0.4553353786468506, + 11.495977401733398, + -3.440138101577759, + -0.6413681507110596, + -4.477844715118408, + -1.755725622177124, + -0.5421583652496338, + 4.529663562774658, + 1.8580200672149658, + 1.9222912788391113, + -2.3063673973083496, + 2.832854747772217, + 7.197266578674316, + 1.6884554624557495, + -13.796112060546875, + -2.3680174350738525, + 1.2418019771575928, + 3.598456382751465, + 3.033353328704834, + 1.6248180866241455, + 8.077418327331543, + 2.1857738494873047, + -11.481755256652832, + -2.143674373626709, + -6.755883693695068, + 4.245874881744385, + 0.21548029780387878, + -0.020664900541305542, + 0.6577590107917786, + -1.9461884498596191, + 1.7063989639282227, + -5.4093780517578125, + -0.956076979637146, + -2.34609317779541, + -0.38025951385498047, + -2.990947723388672, + -4.999658584594727, + 0.3091294765472412, + 5.577479839324951, + -4.433632850646973, + -0.04737961292266846, + -5.630600929260254, + 0.45914527773857117, + -1.2210378646850586, + -2.319638729095459, + 0.3979214131832123, + 2.042130470275879, + -1.2721803188323975, + 7.01055908203125, + 1.4940963983535767, + -4.222352027893066, + 2.224318027496338, + 4.610024452209473, + -1.0519245862960815, + 2.1421899795532227, + 0.747147798538208, + 3.575922966003418, + -7.8057403564453125, + -3.1057498455047607, + -17.855802536010742, + -1.2074055671691895, + 2.1453776359558105, + 0.22012418508529663, + -0.8289541006088257, + 5.759433269500732, + -2.3865818977355957, + 3.5628371238708496, + 1.0203150510787964, + -2.559554100036621, + -5.160012722015381, + 1.5860800743103027, + -0.5459715127944946, + 1.5034055709838867, + 0.2636675536632538, + -0.41147178411483765, + -2.6586766242980957, + -2.6115972995758057, + 4.608137607574463, + -0.1679673194885254, + -3.525259256362915, + 5.240054607391357, + -0.8367233276367188, + -4.015307426452637, + 2.35092830657959, + 6.023219585418701, + 0.5364922881126404, + -0.44153910875320435, + -4.484475135803223, + 1.466462254524231, + 2.305605888366699, + 1.760291337966919, + 3.6033287048339844, + -4.781507968902588, + 1.7897011041641235, + -3.303884267807007, + 0.06746417284011841, + -1.542947769165039, + -9.438464164733887, + -4.432661056518555, + -2.199495792388916, + 0.7509838342666626, + 1.8184614181518555, + -4.7220458984375, + 0.36376097798347473, + -19.288742065429688, + 4.033706188201904, + -1.8901052474975586, + -1.753482460975647, + 2.3288183212280273, + 8.646299362182617, + 2.8274128437042236, + 0.6372472047805786, + -7.41349983215332, + -1.1144870519638062, + -1.0893422365188599, + -1.3058243989944458, + 7.476247310638428, + 4.730380058288574, + -0.7345397472381592, + -1.0522010326385498, + 2.8613710403442383, + 1.0489768981933594, + 2.1198008060455322, + 1.0238142013549805, + -3.690854787826538, + -0.26442453265190125, + -0.9376798272132874, + 5.025399684906006, + 0.5643958449363708, + 0.6107367277145386, + 3.566843271255493, + 11.182327270507812, + 3.8644697666168213, + 0.26167476177215576, + 1.1900349855422974, + 11.462324142456055, + 1.7577741146087646, + 5.005368232727051, + 1.152646780014038, + -1.8364300727844238, + 3.397003173828125, + -3.314332962036133, + 1.277125597000122, + 10.787311553955078, + -0.005273938179016113, + 5.03736686706543, + -4.976653575897217, + -0.16094955801963806, + -3.525984048843384, + -0.5488508343696594, + -2.7635560035705566, + -7.152383327484131, + 0.2845867872238159, + -3.0543527603149414, + 1.7103667259216309, + -0.2931334376335144, + -0.900661826133728, + -3.3990530967712402, + -3.2950353622436523, + -1.4599180221557617, + 2.098220109939575, + 3.9562158584594727, + 0.43805429339408875, + 4.315936088562012, + 0.24735546112060547, + 0.5068653225898743, + 2.4968619346618652, + 1.4111566543579102, + 2.9880828857421875, + -7.184202671051025, + 2.503000259399414, + 1.061354398727417, + 4.994894981384277, + -0.32782304286956787, + -0.6610206365585327, + -2.6348299980163574, + -5.546573638916016, + -3.0079426765441895, + 2.282862901687622, + -4.422153472900391, + 0.2274399995803833, + -1.7147338390350342, + -1.2446684837341309, + -0.4274187684059143, + -4.172305583953857, + 5.752416610717773, + 0.2285923957824707, + 9.874853134155273, + 4.508388042449951, + -4.913191318511963, + 4.1162261962890625, + -2.0678086280822754, + 5.0746660232543945, + -3.485529899597168, + -1.3465195894241333, + -6.883791446685791, + 1.3359663486480713, + 1.1716582775115967, + -1.5416892766952515, + 6.829224586486816, + -4.756085395812988, + -0.048672109842300415, + 3.668231248855591, + -1.3884999752044678, + -1.1231000423431396, + -1.0135637521743774, + -1.3345454931259155, + -1.5875600576400757, + 4.783236503601074, + -0.03311756253242493, + 2.3491761684417725, + 0.6898781061172485, + -7.411823272705078, + 0.49459683895111084, + -0.06558430194854736, + -0.4290439188480377, + -2.3066246509552 + ] + }, + "14": { + "gender": "女性", + "describe": "大虎妞", + "tensor": [ + 2.5541954040527344, + -0.2982415556907654, + -10.494059562683105, + 1.8009048700332642, + -2.002514600753784, + 0.10801675915718079, + 22.182411193847656, + -0.2297396957874298, + 0.2710271179676056, + 17.50595474243164, + 3.4161901473999023, + 3.6869888305664062, + -1.2640836238861084, + 3.1765005588531494, + -0.6700278520584106, + 4.110601425170898, + -2.2685546875, + 0.7449674606323242, + 4.032618045806885, + 0.211453378200531, + 7.795346736907959, + -5.732149600982666, + 2.245548963546753, + 5.45706844329834, + -0.5254039764404297, + -2.1252057552337646, + -6.476208686828613, + -12.131633758544922, + 4.322159767150879, + 3.701148271560669, + 4.728670120239258, + -5.074281215667725, + -1.0921894311904907, + 8.371404647827148, + 0.15467417240142822, + 1.3730833530426025, + 1.729459524154663, + -1.8930937051773071, + 4.076948642730713, + -0.33100414276123047, + -1.9049955606460571, + -1.48941969871521, + -3.040310859680176, + 1.890952229499817, + -4.9188456535339355, + -2.2299540042877197, + 1.9417502880096436, + 6.117886543273926, + 1.2013435363769531, + -2.800095558166504, + 3.100844383239746, + -0.10044392943382263, + -3.0712950229644775, + -3.5111141204833984, + 1.9860353469848633, + 0.38739967346191406, + -0.7183399200439453, + 2.0361948013305664, + -0.6991431713104248, + 1.6136881113052368, + -0.048643290996551514, + 0.06368492543697357, + 3.742777109146118, + -2.2706289291381836, + 1.1242796182632446, + 0.6878077387809753, + 0.9370205402374268, + 11.539295196533203, + 0.02692556381225586, + 7.4111456871032715, + 0.03061768412590027, + 3.21730637550354, + -2.8701937198638916, + 4.327090740203857, + -5.443606853485107, + 0.8667832016944885, + 4.1458282470703125, + -9.541816711425781, + 2.0276262760162354, + -4.026159286499023, + 0.7910894155502319, + 1.5734069347381592, + 3.149632453918457, + 2.420339345932007, + 8.260101318359375, + -1.9082016944885254, + 5.992103099822998, + 0.2490231990814209, + -2.43058705329895, + -4.996762275695801, + 9.583154678344727, + -1.386307716369629, + 2.916219472885132, + 5.060912132263184, + 2.7554421424865723, + -16.509750366210938, + 1.087381362915039, + -3.812859058380127, + 2.1281049251556396, + 3.6843550205230713, + -1.6502314805984497, + 4.838505268096924, + 2.825631856918335, + 1.768028736114502, + -0.5079720616340637, + 0.2316388487815857, + -3.4175920486450195, + -1.100799322128296, + 10.81615924835205, + -1.1432790756225586, + -1.9590742588043213, + 9.055377006530762, + 1.2951347827911377, + -2.3398306369781494, + 2.37896728515625, + 3.4589760303497314, + 0.5081532001495361, + 0.8796700835227966, + 5.520959377288818, + 1.224291205406189, + 3.084195137023926, + -1.853538990020752, + 0.0934402346611023, + 2.2089498043060303, + -10.89398193359375, + -6.835949420928955, + 1.7559702396392822, + -0.11757969856262207, + 3.365232467651367, + 0.7390475869178772, + -4.74581241607666, + -2.447059392929077, + 0.9442411065101624, + -3.753596305847168, + 9.955866813659668, + 0.245078444480896, + -0.5578649044036865, + -3.2456345558166504, + 5.95565128326416, + 0.3765350580215454, + -5.234731674194336, + 3.347076654434204, + 0.3856625556945801, + -3.480771541595459, + 0.5606577396392822, + -0.2021733522415161, + -0.2819133400917053, + 2.1370162963867188, + 0.2517249882221222, + 2.1516311168670654, + -0.4749971628189087, + -7.515542507171631, + 1.6057127714157104, + -1.3199121952056885, + -2.5995750427246094, + -3.1328442096710205, + -6.779902458190918, + 3.1556029319763184, + -4.448557376861572, + -2.357954263687134, + 4.849639415740967, + 1.4369088411331177, + -1.90706467628479, + -2.314420700073242, + 1.135583519935608, + 4.378975868225098, + -0.9804091453552246, + 2.429957628250122, + 6.003342151641846, + -1.9065359830856323, + 6.247337341308594, + 4.365786552429199, + -2.9194467067718506, + -0.8989644646644592, + 2.096708297729492, + -0.5692818760871887, + 2.3240132331848145, + -1.491989254951477, + -2.9991183280944824, + 2.696338415145874, + 1.5678956508636475, + 5.497916221618652, + 0.9913014769554138, + 4.147985935211182, + -0.2438865303993225, + 0.2475210428237915, + 2.477992057800293, + 0.7648031711578369, + 1.67177152633667, + -0.3557755947113037, + 5.734281063079834, + -5.127849102020264, + -1.6574314832687378, + 0.5364912748336792, + -3.969447612762451, + -7.801767826080322, + -1.5434801578521729, + -0.2847745418548584, + -5.367509365081787, + 0.5317766666412354, + 1.9924817085266113, + -0.2868340313434601, + 4.767473220825195, + 3.354051351547241, + -4.105670928955078, + -0.8240338563919067, + -0.5314806699752808, + 11.882760047912598, + -5.5241780281066895, + 0.11169931292533875, + 1.4188010692596436, + -2.5169689655303955, + 0.10808789730072021, + 5.887876510620117, + -2.769382953643799, + -0.464219868183136, + -3.648941993713379, + -31.497013092041016, + -8.223796844482422, + 8.724030494689941, + -2.2509820461273193, + -7.190566539764404, + 6.248317241668701, + 2.5897679328918457, + 3.15238094329834, + -4.283623695373535, + 1.124361515045166, + 3.4247374534606934, + -1.4074087142944336, + -0.26879608631134033, + 1.007868766784668, + 3.7500743865966797, + 1.5642555952072144, + -2.2212021350860596, + -0.9348369836807251, + 5.305647373199463, + 5.500332832336426, + 4.05610990524292, + -3.960897922515869, + -0.8691346049308777, + 4.140627384185791, + -1.2487313747406006, + -2.991835594177246, + 3.46783709526062, + -0.23689568042755127, + 2.3167226314544678, + -3.8173012733459473, + -3.8148159980773926, + -14.604427337646484, + 0.2187584936618805, + -3.9314374923706055, + 1.4239546060562134, + 3.472226142883301, + 5.15045166015625, + -8.065040588378906, + 1.8608328104019165, + -0.384557843208313, + -16.268220901489258, + 0.38134828209877014, + -2.6184191703796387, + 5.935673713684082, + -2.289656162261963, + 2.3030624389648438, + -0.030956268310546875, + 2.123417854309082, + 5.048519611358643, + 2.1800479888916016, + -0.8483026027679443, + 7.504286289215088, + 3.3025214672088623, + 1.8177058696746826, + 9.302786827087402, + 3.1334362030029297, + 4.649054527282715, + 0.12209859490394592, + 1.8367300033569336, + 4.7295989990234375, + -1.3298715353012085, + -1.2465757131576538, + 3.1137986183166504, + -8.45750904083252, + -2.9233686923980713, + -1.4966527223587036, + -1.6665438413619995, + -4.60553503036499, + -1.8076362609863281, + 1.9320626258850098, + -1.5703526735305786, + 3.5391459465026855, + -5.431931018829346, + -0.3997883200645447, + 4.789367198944092, + -0.03547096252441406, + 1.1814734935760498, + -4.185258865356445, + 15.584218978881836, + -0.5999586582183838, + 9.921655654907227, + -1.0493414402008057, + -0.049232542514801025, + -3.957533359527588, + -3.8513379096984863, + 1.2710753679275513, + -0.09808337688446045, + 2.8744022846221924, + 1.2795321941375732, + 8.630266189575195, + -3.189734697341919, + -0.6402544975280762, + 2.7899208068847656, + 3.0511374473571777, + -0.09926760196685791, + 2.112398862838745, + -1.5838979482650757, + 1.292414665222168, + -0.34675633907318115, + -1.0316725969314575, + -2.100797176361084, + -0.9620345234870911, + 0.7440695762634277, + 5.5473761558532715, + 0.7408174872398376, + -0.3730108439922333, + -1.9837043285369873, + 5.790091514587402, + 3.4194893836975098, + 8.70315170288086, + -3.0630836486816406, + -4.834521770477295, + 0.5280416011810303, + -0.1702445149421692, + 4.809307098388672, + 1.8478405475616455, + -4.0537519454956055, + -1.7213701009750366, + 1.674009084701538, + -6.750082015991211, + -8.472458839416504, + 1.8293757438659668, + 1.3578450679779053, + -1.3101109266281128, + 3.585005044937134, + 5.201840877532959, + 2.015848398208618, + 0.7305768132209778, + -15.320630073547363, + 0.3132082223892212, + -0.07367698848247528, + 4.944454669952393, + 4.1359944343566895, + -6.630460262298584, + 4.172674655914307, + 2.0625782012939453, + 1.1428958177566528, + 5.205079078674316, + 1.2371845245361328, + -3.4658243656158447, + -0.5891565084457397, + -1.5110352039337158, + 9.539640426635742, + -0.8679068684577942, + -1.4591255187988281, + 7.898573398590088, + -0.044965147972106934, + -2.679023265838623, + -6.552670955657959, + -1.860433578491211, + -0.24490034580230713, + 0.36505547165870667, + 9.70211410522461, + 1.6905817985534668, + 1.0682189464569092, + -2.995021104812622, + 9.014083862304688, + -0.5436437129974365, + -2.4464991092681885, + 2.7313296794891357, + -3.449343204498291, + -15.629256248474121, + -0.989554762840271, + -5.030069828033447, + -5.883260726928711, + 0.37637966871261597, + -19.071182250976562, + -4.112317085266113, + 2.4329328536987305, + 4.259784698486328, + 4.600482940673828, + -0.19819587469100952, + 1.1013239622116089, + -4.116311073303223, + 2.363093376159668, + 4.657883644104004, + -3.1887285709381104, + 3.130023956298828, + 0.6001869440078735, + -2.1818840503692627, + 0.0679730474948883, + -7.608424186706543, + -0.8975819945335388, + 1.9095011949539185, + -0.7178501486778259, + -6.380711555480957, + -4.5265889167785645, + 6.6571125984191895, + 0.7933111190795898, + -0.740721583366394, + 1.8730381727218628, + 16.547515869140625, + -15.587571144104004, + 0.16868841648101807, + 1.4152870178222656, + -1.3523149490356445, + -0.11002957820892334, + 0.6833108067512512, + 1.0614148378372192, + -18.452516555786133, + -2.2060163021087646, + 3.0458805561065674, + -2.1729743480682373, + 0.3530082702636719, + 1.2011414766311646, + -1.9131054878234863, + 5.177824974060059, + -0.3506569564342499, + 2.890540838241577, + 1.6722311973571777, + 6.470251560211182, + 1.9684637784957886, + -0.328849196434021, + -4.416632652282715, + -2.408937454223633, + -5.989131927490234, + -1.9847049713134766, + -4.651228427886963, + 2.9116296768188477, + 2.9028191566467285, + -5.353341579437256, + -0.760813295841217, + -2.3387398719787598, + 6.5114617347717285, + 1.740646481513977, + -2.4434096813201904, + 1.2665966749191284, + -2.668205738067627, + -5.071689605712891, + 6.91916561126709, + 3.4851698875427246, + -1.3522475957870483, + 1.8845930099487305, + -0.6634575128555298, + -0.3741188645362854, + -4.069231033325195, + 0.9886666536331177, + 1.0036859512329102, + 3.576617956161499, + -0.08583506941795349, + 1.0988945960998535, + 1.4851789474487305, + -0.1506211757659912, + 2.1566989421844482, + 2.4138545989990234, + -3.687592029571533, + -6.565712928771973, + 2.7547426223754883, + 3.7990243434906006, + 0.350396990776062, + 17.622207641601562, + 1.1170916557312012, + 7.599947929382324, + -6.316850185394287, + -2.995807647705078, + -1.379778265953064, + 4.552847862243652, + -1.7696833610534668, + -3.5914597511291504, + 3.419722080230713, + -1.5589863061904907, + -3.3810696601867676, + -1.4260790348052979, + -3.7143502235412598, + 4.982322692871094, + 2.901763916015625, + 0.7372590899467468, + 0.5698054432868958, + 1.5865070819854736, + -0.45492488145828247, + -0.6636077165603638, + 5.0850982666015625, + -2.2704007625579834, + 4.056613922119141, + -1.6747524738311768, + 9.598709106445312, + -4.464825630187988, + 10.358051300048828, + -1.6026432514190674, + -4.568300724029541, + 2.030712366104126, + 0.8919424414634705, + 5.268514156341553, + 2.374988317489624, + -5.751959323883057, + -3.2526803016662598, + 4.027504920959473, + -10.28302001953125, + -10.527429580688477, + 3.072654962539673, + 1.143155813217163, + 1.5615313053131104, + 1.1546581983566284, + 2.6378233432769775, + 4.017608642578125, + 6.269507884979248, + -6.16285514831543, + 6.318004131317139, + -4.982776641845703, + 3.9720308780670166, + -1.2113478183746338, + -0.1481492519378662, + -1.8633859157562256, + -7.628405570983887, + 0.34202367067337036, + -4.987730503082275, + -1.093518614768982, + 0.3732837438583374, + 0.24278169870376587, + 6.308016300201416, + -3.073837995529175, + -2.4786596298217773, + -0.1677071899175644, + -0.9484988451004028, + 1.2659344673156738, + -0.9484710693359375, + -1.3174676895141602, + -4.824235916137695, + -1.1447951793670654, + -6.068058967590332, + -30.63189125061035, + 0.6694946885108948, + 5.165315628051758, + -1.2605472803115845, + -1.4690765142440796, + -6.161174297332764, + -4.850064754486084, + 6.238532066345215, + -2.322141408920288, + -8.432244300842285, + -2.6083357334136963, + 5.581073760986328, + 0.6233496069908142, + -0.6770237684249878, + 3.931847333908081, + 5.4275102615356445, + 1.081923484802246, + 5.827393531799316, + -2.271998167037964, + 6.976219654083252, + 3.1741952896118164, + 0.43702632188796997, + 0.057622551918029785, + -2.900203227996826, + -10.847853660583496, + -4.162168502807617, + -1.359398365020752, + 2.1841578483581543, + 21.031360626220703, + -0.045501261949539185, + -2.523499011993408, + 2.6828396320343018, + 4.2002153396606445, + -0.6612751483917236, + -1.6939923763275146, + 0.9676803350448608, + -8.375871658325195, + -2.2165651321411133, + 4.886870384216309, + 0.2859468460083008, + 4.285432815551758, + -3.1797988414764404, + -1.4755396842956543, + 3.2146072387695312, + -2.046506881713867, + -1.3970867395401, + -3.3141908645629883, + 2.5910301208496094, + 4.968852996826172, + 0.9542499780654907, + -5.449437141418457, + 1.6855140924453735, + -0.3065512180328369, + -5.398796081542969, + 0.8067853450775146, + 5.074371814727783, + 5.495952129364014, + -1.0786845684051514, + 4.1652679443359375, + 3.299213409423828, + -1.6439272165298462, + -0.3824160099029541, + 10.617740631103516, + -2.0474345684051514, + -0.0609736293554306, + 0.9470580816268921, + -0.7158956527709961, + -0.22287636995315552, + 4.701199054718018, + 5.949426651000977, + 0.6390824913978577, + 0.4890937805175781, + -4.098109245300293, + 0.8051022291183472, + -0.026620090007781982, + 3.3945279121398926, + 3.0150949954986572, + 0.6648269891738892, + 9.990493774414062, + -3.841578960418701, + -1.888291835784912, + -0.5336890816688538, + 1.629732370376587, + 0.25303545594215393, + -3.3976619243621826, + 3.0600452423095703, + 3.1419126987457275, + 0.7039257884025574, + 0.8195817470550537, + 3.0482139587402344, + -0.2523818016052246, + -8.983189582824707, + -3.1934821605682373, + -1.463963508605957, + 0.2549694776535034, + 2.2681427001953125, + 0.48924100399017334, + -1.4986416101455688, + -0.7725698947906494, + 2.180171251296997, + 2.0593018531799316, + 2.2499866485595703, + 0.94089674949646, + 0.8049057722091675, + -0.9161863327026367, + -4.284096717834473, + 0.3812171220779419, + -0.7513836622238159, + -0.10054874420166016, + 2.6847517490386963, + -0.157146155834198, + 12.197715759277344, + 0.9216930866241455, + -2.0428125858306885, + 3.4124884605407715, + 6.53879976272583, + -7.995197296142578, + 1.4793946743011475, + -0.19973313808441162, + -8.110280990600586, + 2.2331290245056152, + -0.24707596004009247, + 0.4132179617881775, + 15.826140403747559, + -1.4490039348602295, + -2.0650546550750732, + -3.774017333984375, + -1.3023258447647095, + -8.481269836425781, + -7.104468822479248, + 1.6366302967071533, + -6.5726823806762695, + -0.7917773127555847, + 5.7761077880859375, + 1.5769140720367432, + -3.69674015045166, + 2.146653413772583, + -1.503021001815796, + -1.6938215494155884, + -1.2021687030792236, + -1.84315025806427, + -1.1718065738677979, + -3.3240747451782227, + -1.9759711027145386, + 0.4799584150314331, + -1.7266807556152344, + 3.3183577060699463, + 6.840608596801758, + -0.14928928017616272, + 15.271350860595703, + -0.3719661235809326, + 7.913984298706055, + 2.874846935272217, + 4.708921909332275, + -2.4185738563537598, + 4.122334957122803, + 4.300172328948975, + -0.09695589542388916, + 0.3494865894317627, + 3.2769031524658203, + 10.163187980651855, + -0.43954169750213623, + -11.076126098632812, + 3.690871000289917, + 6.388485908508301, + 3.147738456726074, + 3.3539984226226807, + -9.05850887298584, + 1.2628620862960815, + -1.229651689529419, + 1.5072811841964722, + 0.6993664503097534, + 4.0021772384643555, + 5.674922466278076, + -2.52256178855896, + 3.1011404991149902, + 1.8929235935211182, + -3.6129534244537354, + 0.9790321588516235, + 0.8206962943077087, + -4.016190052032471, + -0.9263534545898438, + 2.0793063640594482, + 0.32772308588027954, + 2.91525936126709, + 3.9633238315582275, + 3.070279121398926, + 0.8759605884552002, + -0.36350172758102417, + -2.8872687816619873, + -3.367525100708008, + -3.552750587463379, + -1.3095296621322632, + 4.264669895172119, + 2.4119224548339844, + -4.946272373199463, + -3.7033252716064453, + -4.382147312164307, + 1.6448127031326294, + -2.483006477355957, + -3.2914607524871826, + 5.583786964416504, + 4.981980800628662, + 1.0669441223144531, + -3.9961466789245605, + 1.895193338394165, + 3.5528805255889893, + -6.761307239532471, + -1.55772864818573, + 1.857675552368164, + 1.970557689666748, + 0.7632340788841248, + -0.700322151184082, + 4.114203453063965, + -2.7883665561676025, + -1.8104767799377441, + -1.6546885967254639, + 2.5244340896606445, + -2.086153030395508, + -3.845763683319092, + 3.920107364654541, + -0.5910462141036987, + -0.018185853958129883, + -0.007104009389877319, + 0.7912766933441162, + 1.3878896236419678, + -8.097827911376953, + -0.23066434264183044, + 1.1329326629638672, + -0.4146403968334198, + -0.463433176279068 + ] + }, + "15": { + "gender": "女性", + "describe": "嗲嗲的很酥麻", + "tensor": [ + 4.4142351150512695, + -2.3851895332336426, + -10.8416166305542, + 3.5228450298309326, + 3.0914554595947266, + 1.1079380512237549, + 3.5797972679138184, + -2.735168218612671, + -1.0529558658599854, + -14.390199661254883, + 0.882117509841919, + -4.445459365844727, + -3.7600162029266357, + -0.017426297068595886, + 0.24811556935310364, + 0.6525154709815979, + 0.1448834240436554, + -2.1742072105407715, + -5.794432640075684, + 3.812824249267578, + 3.1541802883148193, + -4.28098201751709, + 2.7619500160217285, + -24.227947235107422, + 2.615236759185791, + 1.0207829475402832, + 1.600569248199463, + -3.4511666297912598, + -1.8529894351959229, + -2.075204849243164, + 0.9808109998703003, + 3.879178047180176, + -2.039877414703369, + -1.1387327909469604, + 0.7494847774505615, + 18.893085479736328, + -0.10399496555328369, + 0.1301342248916626, + -0.7148258686065674, + 2.209434747695923, + 0.4915395677089691, + -0.24989700317382812, + 4.818612098693848, + -5.284585952758789, + 8.396018981933594, + 1.887114405632019, + -1.9007983207702637, + 12.090739250183105, + -0.2382490038871765, + 2.986684560775757, + -1.3832004070281982, + -3.5939788818359375, + 4.740513801574707, + 2.7217905521392822, + -3.3983983993530273, + -3.5485668182373047, + 2.1493983268737793, + 1.1646956205368042, + 4.454893112182617, + 0.8286128640174866, + 1.2142822742462158, + 1.2088251113891602, + -5.76019287109375, + -2.993384838104248, + -3.097745180130005, + 0.6947593092918396, + 1.5446956157684326, + 9.482625961303711, + -0.6712956428527832, + 1.0081942081451416, + 1.8929078578948975, + -6.710574150085449, + -3.2995200157165527, + -0.8180351853370667, + 14.511874198913574, + 1.9007697105407715, + -6.978642463684082, + 2.443349838256836, + 2.9823362827301025, + -1.6998724937438965, + -0.10130107402801514, + 0.5459957122802734, + 1.476804256439209, + -0.45698750019073486, + 3.6511881351470947, + -1.4564038515090942, + -4.255712985992432, + 2.8068630695343018, + 3.2598161697387695, + -5.2323808670043945, + 3.187222480773926, + -3.3733763694763184, + 3.0286600589752197, + 1.6272761821746826, + -2.1543211936950684, + -6.025578498840332, + 2.2319447994232178, + -4.3784050941467285, + 3.118678092956543, + 0.4389873743057251, + 3.0461626052856445, + 2.4193079471588135, + 0.17668074369430542, + -4.4172234535217285, + -4.963380813598633, + 2.8844573497772217, + 5.496026992797852, + -8.88947868347168, + 8.169811248779297, + -0.2585112452507019, + -1.8137012720108032, + 0.8013074398040771, + -15.326742172241211, + -2.060748338699341, + -3.342682123184204, + -1.1858144998550415, + 0.318660706281662, + -0.896870493888855, + -0.06696212291717529, + 1.8180360794067383, + 0.16635042428970337, + -2.237948179244995, + -0.4007475972175598, + -3.822765350341797, + 4.884644031524658, + 8.91176700592041, + 0.4998781681060791, + 3.0971436500549316, + -2.256584882736206, + 5.556972503662109, + -3.3230199813842773, + -4.489850997924805, + 0.18571428954601288, + 0.5424193739891052, + -6.437771797180176, + 7.27823543548584, + -5.3514556884765625, + -4.070774078369141, + -7.4506707191467285, + -0.2670096158981323, + 2.2676165103912354, + -0.503581166267395, + 0.5729755163192749, + -0.5520864725112915, + 6.075637340545654, + -10.12055778503418, + 5.728796482086182, + 8.39089584350586, + 4.8911895751953125, + -1.1015815734863281, + -2.6767311096191406, + -2.50374174118042, + -0.9592565298080444, + -6.384458065032959, + 0.5059446096420288, + 2.475282669067383, + -9.640507698059082, + -1.642816185951233, + 1.9180848598480225, + 0.3457540273666382, + 5.6156110763549805, + -0.2834372818470001, + 1.7629350423812866, + -7.656056880950928, + 5.062864780426025, + 3.5658013820648193, + 0.965337872505188, + -4.186692237854004, + 6.912638187408447, + -0.7570534944534302, + 0.6273858547210693, + 6.980299472808838, + -8.991910934448242, + -2.4263710975646973, + 4.909841537475586, + -0.6152727603912354, + -2.622062921524048, + -1.157749056816101, + 3.6941914558410645, + -1.237282395362854, + 0.7741113901138306, + 0.8357031345367432, + 0.6536909341812134, + 6.64940071105957, + -1.9680404663085938, + -1.1624341011047363, + -38.7601203918457, + 2.873598337173462, + -2.852555990219116, + 4.877265930175781, + 1.8698302507400513, + -2.969517707824707, + 1.8235578536987305, + -3.066225290298462, + 0.056246042251586914, + -16.563488006591797, + 0.5808703899383545, + 0.5693579912185669, + 5.863933086395264, + -2.961287260055542, + -3.9476351737976074, + 6.098880767822266, + -1.397495150566101, + 2.0453314781188965, + 1.4545376300811768, + -0.9671288728713989, + -4.2682576179504395, + 5.442987442016602, + 8.273055076599121, + 0.7442095875740051, + 5.49833869934082, + -1.4896076917648315, + -2.193436622619629, + 2.6411240100860596, + -3.7811942100524902, + 0.31854766607284546, + 2.559926986694336, + 4.844216346740723, + -1.944850206375122, + 12.0680570602417, + 1.5790364742279053, + -1.242099404335022, + 2.04067063331604, + 5.875997543334961, + -0.31746768951416016, + -3.742624044418335, + -2.127267837524414, + 2.285045862197876, + -0.19193989038467407, + 2.4175145626068115, + 1.0929796695709229, + -2.4441452026367188, + -0.4109112620353699, + -0.8416870832443237, + -0.7174627780914307, + 1.8529150485992432, + 2.8946709632873535, + -2.9874496459960938, + -1.5464270114898682, + -1.389119029045105, + -4.631846904754639, + 0.5304594039916992, + -13.173319816589355, + 0.8757578134536743, + 4.207010746002197, + -0.5001908540725708, + -2.4164462089538574, + 1.7254106998443604, + 1.9760842323303223, + -1.8629395961761475, + -1.9075751304626465, + 0.022457152605056763, + -5.397947788238525, + -0.5714366436004639, + -16.72414207458496, + 2.631218433380127, + -2.6114134788513184, + 16.337812423706055, + -3.314671516418457, + -2.936100959777832, + 0.9179829359054565, + -2.784557342529297, + 2.207735300064087, + -3.1602232456207275, + -0.1351698338985443, + 2.2782249450683594, + -1.6389254331588745, + 1.5648120641708374, + 3.79783296585083, + 1.8779667615890503, + 0.27390000224113464, + 2.6143760681152344, + -2.1699795722961426, + 0.9513947367668152, + 0.32209113240242004, + -6.611087322235107, + -2.83074951171875, + -0.07713858783245087, + -1.1169720888137817, + 0.6633740067481995, + -8.645051956176758, + -2.1201066970825195, + -4.905261039733887, + -1.4079184532165527, + -7.684540748596191, + -6.523468971252441, + -1.4698486328125, + 3.0495052337646484, + -13.56766414642334, + -2.304302453994751, + 1.0669910907745361, + 3.6716697216033936, + 0.07201659679412842, + 2.493238925933838, + 8.11153507232666, + 2.028933048248291, + 2.1035103797912598, + 3.0412840843200684, + -3.0904905796051025, + -1.1586127281188965, + 1.7946090698242188, + -0.8613869547843933, + 0.5192190408706665, + -3.973107099533081, + -1.3458462953567505, + 0.6987948417663574, + -0.6761360168457031, + 0.6806408166885376, + -2.488227367401123, + 3.935713529586792, + -4.663032531738281, + -1.0622526407241821, + 0.7507680654525757, + 7.943752288818359, + -3.167468309402466, + 2.6387500762939453, + 7.035915374755859, + -1.3917148113250732, + 0.33832842111587524, + 0.4809997081756592, + -1.8385889530181885, + -4.418939113616943, + -2.0079824924468994, + -1.459897756576538, + -1.4233181476593018, + 6.125476837158203, + -0.025959372520446777, + -5.936448097229004, + -0.48713740706443787, + 2.2398111820220947, + -1.6555901765823364, + 3.539287567138672, + -0.4203660488128662, + -6.5011372566223145, + -2.3020620346069336, + 6.508790493011475, + 7.966662883758545, + -13.533110618591309, + 4.603523254394531, + -0.39722874760627747, + 2.390015125274658, + 2.8903589248657227, + 2.002701997756958, + -1.2445688247680664, + 2.3565311431884766, + -6.370194435119629, + 2.270313024520874, + -0.012637585401535034, + -2.1842942237854004, + -7.254783630371094, + -0.662895917892456, + 9.586502075195312, + 0.19361382722854614, + -2.2801342010498047, + -3.0858261585235596, + 3.9757232666015625, + -2.9952497482299805, + -3.6361546516418457, + -1.122570276260376, + 3.4793548583984375, + -0.7081272602081299, + -5.732592582702637, + -2.844082832336426, + 2.1382312774658203, + 1.169687271118164, + -10.74006462097168, + 0.3447607159614563, + 0.8001160621643066, + 5.611845016479492, + -1.5221357345581055, + 1.6986651420593262, + 0.7755598425865173, + 0.6696529984474182, + -1.9334734678268433, + -20.31473731994629, + 0.6863251328468323, + 1.0654211044311523, + 4.3649773597717285, + 12.162120819091797, + -0.6828840970993042, + 2.4705371856689453, + 4.280757904052734, + -3.442739486694336, + -12.364229202270508, + 3.3201425075531006, + 9.164916038513184, + -2.3412089347839355, + 0.508364200592041, + -2.3315091133117676, + -6.990838527679443, + 0.8690404891967773, + -1.2162476778030396, + 4.696269512176514, + -0.10932540893554688, + -2.3011105060577393, + 3.3244588375091553, + -2.35064959526062, + 8.578514099121094, + -4.935577392578125, + -0.815240740776062, + 0.10772374272346497, + 0.6636499166488647, + 2.8598947525024414, + -0.8951615691184998, + 4.8141584396362305, + 0.14627310633659363, + 7.528323650360107, + 0.5241419076919556, + -1.3234291076660156, + -2.158459424972534, + 0.6228289604187012, + 0.8722554445266724, + -0.02567124366760254, + 1.691556692123413, + -2.788891315460205, + 2.7436423301696777, + 2.0434257984161377, + 5.890836715698242, + 1.4714274406433105, + -1.1459245681762695, + 2.5577034950256348, + -3.9574146270751953, + -0.08066496253013611, + -1.4405120611190796, + -2.548326253890991, + 5.031373500823975, + 5.197989463806152, + 14.15798282623291, + -0.2578166723251343, + -0.5569255352020264, + -2.6492507457733154, + -5.170639991760254, + 3.3955750465393066, + 1.8440155982971191, + -2.9946675300598145, + 3.5858147144317627, + 1.784048318862915, + 3.8959081172943115, + -3.382218360900879, + 0.42629122734069824, + 0.7070115804672241, + -0.4003966450691223, + -1.0323388576507568, + -0.586143970489502, + -2.1352319717407227, + -2.2844603061676025, + 2.5277230739593506, + 2.9723472595214844, + -2.952007532119751, + 3.401097059249878, + -0.1311262845993042, + 0.4724266827106476, + -2.715630531311035, + -1.1174662113189697, + 3.932766914367676, + 2.824129819869995, + 1.4658411741256714, + 3.757927417755127, + 1.399888515472412, + 1.7705612182617188, + 6.506312370300293, + 2.890662908554077, + 0.14498552680015564, + -7.767025470733643, + 2.021001100540161, + -1.1733393669128418, + 7.288499355316162, + 3.70202898979187, + -3.848949670791626, + -1.7296600341796875, + -0.32448309659957886, + -6.026453971862793, + -1.7442368268966675, + 4.347851753234863, + -2.197155475616455, + -0.41331416368484497, + 3.9977688789367676, + -6.798488140106201, + 0.6887105703353882, + -3.461355447769165, + 2.3742659091949463, + -0.28378307819366455, + 3.063598394393921, + -5.197371959686279, + 0.6363924145698547, + 0.7730651497840881, + -1.4426484107971191, + 3.4456915855407715, + 9.03909969329834, + -7.110550403594971, + -6.950046539306641, + -0.9181596636772156, + -5.603244781494141, + 5.0413994789123535, + 14.884621620178223, + -1.1048706769943237, + -0.1806875467300415, + 1.4698561429977417, + 3.031510829925537, + 1.2217789888381958, + 2.5295166969299316, + -6.761490345001221, + 5.294469833374023, + -2.3387985229492188, + -23.5598087310791, + -9.6868896484375, + 0.8111697435379028, + 8.927854537963867, + -0.6794430613517761, + 1.6044671535491943, + 1.6060152053833008, + -0.6023163795471191, + 12.409417152404785, + -1.4796921014785767, + -2.5561764240264893, + -2.162531614303589, + 1.2841535806655884, + -3.1145730018615723, + 3.406881809234619, + 3.882723569869995, + -5.379748344421387, + 0.3700486421585083, + 0.45967864990234375, + -3.145598888397217, + -1.0225214958190918, + -2.1602072715759277, + 7.061436653137207, + 2.1667215824127197, + -5.795407295227051, + -1.4068453311920166, + -1.3907747268676758, + -0.21571040153503418, + 0.6028237342834473, + 1.1743550300598145, + -4.678369998931885, + 1.7346856594085693, + -2.3923590183258057, + -13.727860450744629, + -0.8515558242797852, + -3.6470024585723877, + 1.6641513109207153, + 9.932380676269531, + -6.041316509246826, + 0.7203760147094727, + -32.2430534362793, + 1.9975255727767944, + -6.377703666687012, + -1.821683645248413, + -1.525449514389038, + 1.7291597127914429, + 2.9566354751586914, + 0.7306318283081055, + -7.829110145568848, + -1.7266793251037598, + -2.772693157196045, + 2.165217876434326, + 1.2584341764450073, + -8.266365051269531, + 4.766721248626709, + 3.971583843231201, + -2.4293863773345947, + -6.133997917175293, + -1.2879962921142578, + 5.794472694396973, + 3.0327327251434326, + 20.59187889099121, + -2.878427267074585, + 0.01703721284866333, + 0.8907265663146973, + -3.5805563926696777, + -2.573538064956665, + -2.278750419616699, + 0.23739036917686462, + 1.4482002258300781, + -2.959247589111328, + 4.518747329711914, + 2.5596072673797607, + 2.0511977672576904, + -2.264033794403076, + -0.7271091341972351, + 0.5380365252494812, + -1.9991966485977173, + 3.504007339477539, + 4.123330593109131, + 2.3993375301361084, + 0.6444106101989746, + 4.655572414398193, + 2.5063815116882324, + -5.052480220794678, + -0.8385111093521118, + -1.761345624923706, + 2.4586257934570312, + 1.5315604209899902, + 1.6740200519561768, + 3.479151487350464, + 0.35653156042099, + 0.4898509979248047, + -3.8234691619873047, + -0.0861828476190567, + 6.453426361083984, + 0.30349844694137573, + 0.834326982498169, + 2.287689447402954, + -0.24042057991027832, + 5.773061275482178, + -2.926968812942505, + 5.944918632507324, + -2.575105667114258, + 0.23503363132476807, + -1.260326623916626, + -10.532816886901855, + -1.4203197956085205, + 5.594252586364746, + -1.0920724868774414, + -0.006636589765548706, + -1.6466336250305176, + 2.888108253479004, + -1.162348747253418, + -3.2453463077545166, + -2.025785207748413, + 0.8766545057296753, + -4.411574840545654, + -1.0526249408721924, + -4.588558673858643, + 4.214813232421875, + -0.2957555651664734, + -1.1538238525390625, + -3.3231239318847656, + -5.125960350036621, + 0.026952028274536133, + -3.277026653289795, + -1.1951258182525635, + 0.18760836124420166, + 5.52140474319458, + -3.3757758140563965, + 3.317321300506592, + 0.3333947956562042, + 5.7732062339782715, + 5.032064437866211, + 2.9334700107574463, + -0.1977001428604126, + -0.2270936369895935, + -6.3574934005737305, + -5.307421684265137, + 0.8050601482391357, + -4.487936973571777, + -0.6829103827476501, + 4.192888259887695, + 10.834010124206543, + -3.5229239463806152, + 2.8682053089141846, + -1.6226067543029785, + 5.549056053161621, + -7.092060565948486, + -0.25522732734680176, + 3.4758007526397705, + -2.349072217941284, + 4.184322357177734, + -4.050490856170654, + 6.823083400726318, + -0.3314781188964844, + -0.6213838458061218, + 1.2693126201629639, + 9.322765350341797, + -4.559946537017822, + -3.4058053493499756, + -1.5870041847229004, + -2.1857171058654785, + 7.643179893493652, + 2.006896734237671, + 1.9106242656707764, + 3.622211217880249, + -2.1445910930633545, + -1.4166452884674072, + 0.11204367876052856, + 2.8513717651367188, + -2.103510856628418, + 0.5563571453094482, + 1.9029386043548584, + 0.4906793236732483, + -3.1541905403137207, + -0.1764645129442215, + 2.877437114715576, + 3.039240837097168, + -0.025094956159591675, + 1.6727087497711182, + 10.900245666503906, + 1.7071919441223145, + -0.13898563385009766, + 6.019878387451172, + -0.17405402660369873, + -1.5617485046386719, + -1.8090790510177612, + -8.66650390625, + 14.370426177978516, + 1.169956088066101, + 0.10576581954956055, + 2.4941985607147217, + -0.42221057415008545, + -8.543769836425781, + 0.5878537893295288, + 1.1593745946884155, + -1.6210318803787231, + -7.311860084533691, + -5.2047905921936035, + -1.5170177221298218, + 7.4372100830078125, + 0.871078372001648, + -0.43020445108413696, + 2.232818126678467, + 7.592032432556152, + 1.3722459077835083, + 0.8862171769142151, + 1.6733914613723755, + -2.826997995376587, + -5.1735382080078125, + -0.7489039897918701, + -6.489133834838867, + -1.9744873046875, + 3.459784984588623, + 7.324899673461914, + 0.4783990979194641, + 1.607980728149414, + 1.9836883544921875, + -3.1096911430358887, + 2.797642469406128, + -0.6468809843063354, + 0.7625942230224609, + -2.7721710205078125, + 1.4764111042022705, + 3.173875331878662, + 2.647000789642334, + -2.949225425720215, + -2.7628278732299805, + -5.11652135848999, + 0.9972484111785889, + 2.947641611099243, + -4.641908168792725, + 8.066097259521484, + 0.5859683752059937, + 1.107069969177246, + -1.9299349784851074, + -2.3776488304138184, + -1.4148576259613037, + -18.331613540649414, + -5.022231101989746, + -1.7056338787078857, + -4.507030010223389, + -2.6470649242401123, + -1.6677590608596802, + 2.0648281574249268, + 3.037065267562866, + -2.6267802715301514, + -3.563668727874756, + 2.0245094299316406, + -4.812487602233887, + -2.215022563934326, + 2.290679454803467, + 4.198124885559082, + 2.967362642288208, + 0.8775196075439453, + 2.5072662830352783, + 0.8357670307159424, + 2.5941405296325684, + -1.7556663751602173, + 1.6480902433395386, + 1.526468276977539, + -1.9352216720581055 + ] + }, + "16": { + "gender": "女性", + "describe": "音色有韵味带磁性", + "tensor": [ + 1.0313661098480225, + 0.4881023168563843, + -8.955402374267578, + 4.929328441619873, + 4.498178482055664, + 0.8049086332321167, + -23.90656089782715, + -2.0245800018310547, + -2.9887945652008057, + -3.1936357021331787, + -1.4004230499267578, + 7.017931938171387, + -1.443975567817688, + -0.9773397445678711, + -4.026995658874512, + -2.2891435623168945, + -2.344266414642334, + -1.0853346586227417, + -7.040502548217773, + 0.38411134481430054, + -14.87674331665039, + 4.7732696533203125, + 2.679158926010132, + 1.2971649169921875, + 2.009765148162842, + 1.1539695262908936, + 0.02280139923095703, + -19.523548126220703, + 0.2741625905036926, + 0.7630403637886047, + 0.48661503195762634, + -4.389566421508789, + -0.2080487608909607, + -0.03787499666213989, + -6.439548969268799, + -8.688619613647461, + 4.22324800491333, + -3.458270311355591, + 1.0957504510879517, + 0.9709347486495972, + -0.11914978921413422, + -0.5154002904891968, + -4.67045783996582, + 2.975006341934204, + -10.81292724609375, + 0.2912590801715851, + 2.5671067237854004, + 4.364161491394043, + -4.361008167266846, + 2.50051212310791, + 2.107257843017578, + 3.584770679473877, + -0.7446427345275879, + 1.0595990419387817, + -1.6991918087005615, + 1.8289377689361572, + -2.2693729400634766, + 3.405892848968506, + -4.996262550354004, + 0.5489590764045715, + -4.654511451721191, + 0.6293291449546814, + 9.922037124633789, + -1.0657857656478882, + 1.8592050075531006, + 2.2753796577453613, + 0.4598258137702942, + -6.547091960906982, + 5.40826416015625, + 3.422750234603882, + 3.245227098464966, + -1.2913589477539062, + 2.7821788787841797, + -0.9780994653701782, + -0.7298045754432678, + 0.36497944593429565, + -1.070174217224121, + -6.709440231323242, + 1.4765934944152832, + 0.9804799556732178, + 8.167686462402344, + -0.3542243242263794, + 1.5908565521240234, + 2.815474510192871, + 1.9940837621688843, + -0.12585730850696564, + 9.308938980102539, + 1.0424706935882568, + -1.5947107076644897, + 7.782597541809082, + 8.81249713897705, + -0.4123656749725342, + 0.1580413579940796, + -1.7932027578353882, + -2.7868776321411133, + -4.62091064453125, + -1.4817713499069214, + -0.10700088739395142, + -0.970095157623291, + 0.9650598764419556, + 3.0359699726104736, + 1.8559772968292236, + 9.710501670837402, + -3.444234848022461, + 0.08994841575622559, + 1.195457935333252, + 1.4421443939208984, + -3.9187991619110107, + 9.33701229095459, + -2.2199037075042725, + 2.246640920639038, + 1.9144923686981201, + 3.0912692546844482, + 3.0408291816711426, + -2.68550968170166, + -0.11270575225353241, + 2.4797706604003906, + 2.9057137966156006, + -2.1646246910095215, + -0.06527304649353027, + 1.6953849792480469, + 1.188732624053955, + -1.5697147846221924, + 2.867645502090454, + 1.0079113245010376, + -2.8809378147125244, + 2.3825438022613525, + -6.85782527923584, + 1.499218225479126, + 4.518800735473633, + 2.4060778617858887, + 6.106622695922852, + -1.9253911972045898, + 1.857580304145813, + -7.233932971954346, + 0.9888126850128174, + -2.966200828552246, + -4.8414626121521, + -2.008436441421509, + -1.7815337181091309, + 2.327678680419922, + -0.5386159420013428, + -2.8928306102752686, + -1.4204961061477661, + -2.0583863258361816, + -4.419816970825195, + 6.0765700340271, + 0.8810608386993408, + -1.2097874879837036, + 0.5586178302764893, + 0.8451331257820129, + -1.060953140258789, + 2.9366226196289062, + 6.838926315307617, + 4.533647060394287, + -2.5271401405334473, + -19.144309997558594, + -2.1889147758483887, + 2.582362651824951, + 3.005012273788452, + -1.80466628074646, + -2.0256896018981934, + -3.381403923034668, + 2.3462562561035156, + 0.9480535984039307, + 3.8056201934814453, + -1.3746869564056396, + 0.3167133033275604, + 5.130002975463867, + 2.9012107849121094, + 1.0655412673950195, + -0.4749859571456909, + -5.6433916091918945, + -1.6714997291564941, + -1.4027793407440186, + -0.10988329350948334, + 0.5739378333091736, + 3.4689791202545166, + 0.00730074942111969, + -2.0739779472351074, + 2.734483480453491, + -2.393376111984253, + 6.127412796020508, + -0.1736224889755249, + -0.3485107719898224, + 0.7926520109176636, + -25.296859741210938, + 0.32938331365585327, + -1.2934153079986572, + 1.5441477298736572, + 1.1937588453292847, + 2.6641151905059814, + -3.1329710483551025, + -3.7120237350463867, + -1.7226314544677734, + -4.9861016273498535, + -2.4886937141418457, + 4.140935897827148, + 0.2571907341480255, + -0.6275782585144043, + -6.987635612487793, + -4.0718994140625, + 2.0492093563079834, + 7.158689975738525, + 1.9545493125915527, + 1.8562277555465698, + -0.6203924417495728, + 9.343113899230957, + 5.714081764221191, + 0.6083208918571472, + -2.3733389377593994, + 0.7321560382843018, + 5.604880332946777, + -5.267708778381348, + 0.3424185514450073, + -1.3385155200958252, + 2.1980478763580322, + 9.735007286071777, + -2.9518795013427734, + 14.730626106262207, + -6.22785758972168, + -4.6984944343566895, + 1.2812684774398804, + 11.919656753540039, + 5.1199421882629395, + 1.2823891639709473, + -1.7804279327392578, + -0.054360389709472656, + -1.9104299545288086, + -0.6220358610153198, + -5.557053565979004, + -5.783202648162842, + 0.4993157982826233, + -5.202847480773926, + -1.9539082050323486, + 0.7249444723129272, + 4.151544570922852, + 3.2507457733154297, + -3.283381223678589, + -0.9284674525260925, + -4.256157875061035, + -8.479114532470703, + 1.27335786819458, + 1.325345754623413, + 0.656424343585968, + 3.271380662918091, + -0.31879258155822754, + 3.291172742843628, + -4.3871259689331055, + -1.0987757444381714, + -6.6230597496032715, + -2.5853705406188965, + -0.17572198808193207, + 4.039120674133301, + -12.919933319091797, + -1.0985329151153564, + 0.29001742601394653, + -1.7487939596176147, + 1.0321483612060547, + -2.782947063446045, + 0.9038613438606262, + -1.477537751197815, + -0.19667094945907593, + 2.348057270050049, + 1.2549232244491577, + 4.337681770324707, + 6.586465835571289, + 6.445478439331055, + 4.0485711097717285, + 1.2459101676940918, + -1.9324042797088623, + -2.8068723678588867, + -2.344118118286133, + -0.17586958408355713, + 0.16561582684516907, + 1.098524570465088, + 9.227458953857422, + 1.8184099197387695, + 3.901676654815674, + -0.6438503265380859, + 0.30103522539138794, + 0.6235367059707642, + -0.829189121723175, + 0.7061182260513306, + 0.054023683071136475, + 1.29213547706604, + -3.4061477184295654, + 1.3591350317001343, + -3.2116763591766357, + 3.3041000366210938, + -1.7520978450775146, + -1.5194876194000244, + -3.4903550148010254, + 5.085602760314941, + -7.843494415283203, + -0.09592843055725098, + 0.8296912908554077, + -1.3625060319900513, + -3.721398115158081, + -1.1398816108703613, + 0.8870204091072083, + 1.1072136163711548, + -0.5070958733558655, + 0.039087116718292236, + -1.602071762084961, + -0.24568557739257812, + 12.415796279907227, + 3.7249951362609863, + 0.35037147998809814, + -3.1987571716308594, + -3.5320680141448975, + 3.27040958404541, + 4.184755325317383, + 2.070697784423828, + 1.3747972249984741, + 4.248358249664307, + 6.953545093536377, + 1.66428804397583, + -4.220638275146484, + -0.5870287418365479, + 2.075197219848633, + -1.486149787902832, + -0.9199656844139099, + 2.792607545852661, + 0.7607632875442505, + 27.094318389892578, + 1.410179615020752, + 4.516904830932617, + 0.6614240407943726, + -1.3595552444458008, + -3.1202449798583984, + 14.023927688598633, + -0.6357117295265198, + -9.83694076538086, + -4.336084365844727, + 1.8942328691482544, + 19.098581314086914, + 2.0400502681732178, + 8.756696701049805, + -6.058450698852539, + 0.7631499767303467, + 0.594036340713501, + -5.030391693115234, + -1.1879504919052124, + 1.1697916984558105, + -8.867578506469727, + 2.452643871307373, + -0.4971422553062439, + -2.717700242996216, + -6.684548377990723, + -0.8450127840042114, + 4.438233375549316, + -4.270399570465088, + -1.6670023202896118, + -0.7437307238578796, + -4.790193557739258, + 0.6459158658981323, + -5.193575859069824, + 1.2320473194122314, + -2.6762218475341797, + -9.456537246704102, + -4.284492492675781, + -6.738664627075195, + 2.4636611938476562, + 2.1311535835266113, + 5.664492607116699, + -1.5255029201507568, + -1.8875975608825684, + 0.5986505150794983, + -0.4889516830444336, + 4.683279037475586, + -0.080097496509552, + -0.19207903742790222, + 0.7109676599502563, + 8.426185607910156, + 3.7172722816467285, + 2.0059614181518555, + -3.286463975906372, + -0.4943385124206543, + -0.4504249095916748, + -26.0143985748291, + -2.3270084857940674, + -2.5128207206726074, + 3.3750247955322266, + -0.8636777400970459, + -4.228139400482178, + -0.1400749683380127, + 6.801032543182373, + 2.3379034996032715, + 8.31283950805664, + 0.08165913820266724, + 0.5364529490470886, + 0.9075720906257629, + 1.6777886152267456, + -1.020545482635498, + -3.925534725189209, + 0.7964955568313599, + -1.263840913772583, + -3.895371913909912, + 1.6070499420166016, + -0.8865048885345459, + 0.6784999370574951, + -5.168190956115723, + 3.036651372909546, + -4.977161407470703, + 0.7695892453193665, + 9.269221305847168, + 4.224390029907227, + 7.682980060577393, + -8.193763732910156, + 3.4135890007019043, + -0.6958595514297485, + -14.991947174072266, + -1.2110772132873535, + -3.957103729248047, + -1.9374040365219116, + -5.377238750457764, + 1.3298194408416748, + -0.694798469543457, + -5.600644111633301, + -1.8792215585708618, + -3.9870362281799316, + -0.2696332335472107, + 0.07845082879066467, + -1.6680208444595337, + -5.716972827911377, + 4.411923408508301, + 13.466879844665527, + -1.0390644073486328, + -0.4240608215332031, + 1.0356045961380005, + 0.5040900707244873, + -1.7293065786361694, + -4.229046821594238, + -4.420719146728516, + -9.43222427368164, + -2.301551342010498, + -0.14753955602645874, + -2.366013288497925, + -0.9166783094406128, + -0.24886596202850342, + 0.20512010157108307, + -1.3280580043792725, + 0.4690481722354889, + 2.7564151287078857, + -1.8484015464782715, + 14.226648330688477, + 1.3828859329223633, + -3.694037914276123, + 1.7919292449951172, + 0.5358704328536987, + 4.1259236335754395, + -2.2466249465942383, + -3.2811148166656494, + -0.09745445847511292, + 4.646389007568359, + 1.9004888534545898, + 2.3731794357299805, + -3.6698226928710938, + -1.4629930257797241, + 0.9390556812286377, + 2.671931743621826, + -0.7304587364196777, + -4.670904636383057, + 1.4825692176818848, + 0.8093278408050537, + 2.3417928218841553, + -8.640292167663574, + 2.3838417530059814, + 2.7324349880218506, + -1.8226704597473145, + 8.155447006225586, + -4.411906719207764, + 2.7560510635375977, + 1.6139450073242188, + 3.616245746612549, + -0.07279428839683533, + -8.24647331237793, + 4.35830020904541, + 3.1307718753814697, + 0.6871546506881714, + -1.960003137588501, + -5.392592430114746, + 2.455526351928711, + 3.0438544750213623, + -3.274507522583008, + -1.092688798904419, + -0.5854065418243408, + 8.0319242477417, + -3.740124225616455, + -4.458125114440918, + -3.8677544593811035, + -5.998527526855469, + 1.1326959133148193, + 9.950955390930176, + 2.9327361583709717, + 4.435378551483154, + -1.1976776123046875, + 1.0700910091400146, + 2.967604160308838, + -1.1516594886779785, + -0.7758165597915649, + -0.2655603289604187, + 2.046049118041992, + 17.724061965942383, + 1.2162103652954102, + 0.989008903503418, + 0.7596273422241211, + -2.2855923175811768, + 1.9886380434036255, + 1.0597968101501465, + 0.8992586731910706, + 10.689592361450195, + 1.7478222846984863, + -8.795811653137207, + -3.9213449954986572, + 1.436586856842041, + 0.4855530858039856, + -2.834796905517578, + -4.762223243713379, + 2.8902554512023926, + -1.5296974182128906, + 4.357376575469971, + 0.6360861659049988, + -0.1555042564868927, + 3.8798694610595703, + -0.006041049957275391, + 4.637681484222412, + -4.213545799255371, + -4.326529026031494, + -3.1134109497070312, + 1.757127046585083, + -6.784841537475586, + -0.053333163261413574, + 0.8988937139511108, + 1.0970776081085205, + 1.2175053358078003, + -4.993804931640625, + -0.17022091150283813, + -14.20959758758545, + 3.8700766563415527, + -1.2381948232650757, + -7.423176288604736, + -2.226982831954956, + 6.878412246704102, + 2.2983906269073486, + -4.141151428222656, + -1.3452959060668945, + 1.7388180494308472, + 0.9481496810913086, + 0.866022527217865, + -0.6013071537017822, + 2.8664627075195312, + 4.6382832527160645, + -8.98764419555664, + 4.678203105926514, + 3.0933995246887207, + -3.661243438720703, + -3.4547696113586426, + 3.176928758621216, + 1.9392577409744263, + -16.547080993652344, + -1.6262202262878418, + -1.744734764099121, + 0.17774266004562378, + 2.305236577987671, + -1.1372344493865967, + 2.701404571533203, + 0.0004901885986328125, + -0.8126511573791504, + 3.6795742511749268, + 6.79481315612793, + 2.4985790252685547, + -3.6418843269348145, + 2.0111567974090576, + 1.548071026802063, + 7.627658367156982, + -1.5394208431243896, + 1.315798044204712, + -2.4249067306518555, + 2.784151077270508, + -1.4663677215576172, + 0.47517532110214233, + -6.412243843078613, + -1.1101170778274536, + 6.334772109985352, + 1.206190824508667, + -2.9758834838867188, + 7.603448867797852, + -2.4857254028320312, + -4.037711143493652, + -0.10717317461967468, + 0.43925681710243225, + 2.350010633468628, + 0.7678477764129639, + -4.254556655883789, + 6.81555700302124, + -5.592281341552734, + 0.8037052154541016, + 16.320457458496094, + 1.3196663856506348, + 1.931147575378418, + 2.128833532333374, + -2.398275375366211, + 2.0829286575317383, + -3.26420259475708, + 6.2932209968566895, + -1.008715033531189, + -2.4472756385803223, + -6.802544116973877, + -12.31408977508545, + 2.2409276962280273, + -2.528719186782837, + 4.2268195152282715, + -0.08111017942428589, + -0.43412089347839355, + 6.417567729949951, + -6.844339370727539, + 2.972177267074585, + 2.309190273284912, + 1.4890844821929932, + -3.120217800140381, + 1.1632583141326904, + -3.1086857318878174, + 0.6372954845428467, + -3.151857614517212, + 2.2438764572143555, + 2.502053737640381, + 4.0480828285217285, + -6.134810447692871, + -0.3852810561656952, + 22.82663917541504, + -2.985304117202759, + -0.8144016265869141, + 0.5432231426239014, + 2.052313804626465, + -2.2973673343658447, + -2.4535324573516846, + -1.3410680294036865, + -4.237100124359131, + -2.492330312728882, + 0.8809309005737305, + -3.6292152404785156, + -6.616368770599365, + -0.09832489490509033, + -8.306230545043945, + -2.093050003051758, + -0.5945271849632263, + 25.378128051757812, + -2.604717969894409, + 3.5044713020324707, + -6.83209228515625, + -0.2717054486274719, + -4.829407691955566, + -1.6836313009262085, + -3.6586976051330566, + 0.04478412866592407, + -3.672994375228882, + 2.405813694000244, + 4.08394193649292, + -0.4279751777648926, + -3.5792129039764404, + 1.7823939323425293, + 1.3994348049163818, + -3.879688024520874, + -4.651828765869141, + -1.9001531600952148, + -19.96468162536621, + 3.588810443878174, + 1.388667106628418, + -1.581600308418274, + -5.617453575134277, + -2.7100303173065186, + 1.7973098754882812, + -0.5278496742248535, + -0.031251490116119385, + 1.357077717781067, + 0.419400155544281, + -2.88913631439209, + 5.004108428955078, + -0.3444441258907318, + -0.021844998002052307, + 7.061783313751221, + -2.911775588989258, + 0.8202493190765381, + -1.9861457347869873, + 6.98296594619751, + 5.0346999168396, + 6.77271032333374, + -1.558310866355896, + 1.9411307573318481, + -0.7125086784362793, + 3.7715091705322266, + 3.18233585357666, + 5.593321800231934, + 4.150822639465332, + 0.4831981658935547, + -1.197074294090271, + 0.7889457941055298, + -7.578668594360352, + -3.8967533111572266, + -1.9967823028564453, + 0.7011622190475464, + 2.045827627182007, + -5.9871907234191895, + -1.9654417037963867, + 11.06952953338623, + 0.3745192885398865, + -0.5838360786437988, + 3.123439311981201, + 1.383737325668335, + 2.170851230621338, + 2.641939401626587, + 1.1031432151794434, + -1.4886374473571777, + 2.73344087600708, + 2.4926016330718994, + -1.4630191326141357, + 3.918593406677246, + -3.2454237937927246, + 1.450376033782959, + 0.8402872085571289, + -3.549666404724121, + 0.7211410403251648, + 2.5878303050994873, + -1.1392619609832764, + 2.932162284851074, + 1.3181397914886475, + -1.5476813316345215, + 0.06901019811630249, + -3.0106348991394043, + -0.7469472885131836, + -4.790612697601318, + -1.6712119579315186, + -4.577736854553223, + -2.143052339553833, + -2.7271928787231445, + 0.8321266770362854, + -0.137162446975708, + 0.0366898775100708, + 3.9401657581329346, + -1.1843208074569702, + 0.15003079175949097, + 3.9167251586914062, + -11.713781356811523, + 0.5662223100662231, + -8.421284675598145, + -5.333168029785156, + -2.5930168628692627, + 0.07753109931945801, + 5.666184425354004, + 0.3493874967098236, + 2.6506974697113037, + -0.15791505575180054, + 1.526587724685669, + 1.2354867458343506, + -0.08295991271734238, + -4.823824882507324, + -4.448771953582764, + -3.950089454650879, + -0.3224230408668518, + 0.5626018643379211, + 0.8545541763305664, + 1.1615984439849854, + -2.141657590866089, + -3.62507963180542, + -7.9637770652771, + -4.94901704788208 + ] + }, + "17": { + "gender": "男性", + "describe": "做事很着急的领导", + "tensor": [ + -1.3586127758026123, + 6.546947956085205, + -1.8094046115875244, + 1.9292634725570679, + 0.1339225172996521, + -2.5506649017333984, + -2.9229631423950195, + -1.9140591621398926, + 0.3456094563007355, + -1.6687768697738647, + 2.992579698562622, + -1.2596577405929565, + 4.492734432220459, + -2.6172609329223633, + -2.298593282699585, + 0.2999752163887024, + 0.03380759060382843, + -4.720758438110352, + 4.142595291137695, + -0.972163200378418, + 4.0663909912109375, + 3.4100747108459473, + 1.4211394786834717, + 15.490262031555176, + -4.50620174407959, + 2.0171990394592285, + -12.307703971862793, + -16.410707473754883, + 1.2328171730041504, + 1.7542612552642822, + 10.766837120056152, + 3.4433376789093018, + -1.2219531536102295, + 2.1457669734954834, + -0.8980816602706909, + -8.920147895812988, + -1.1261521577835083, + -5.423086643218994, + -9.922389030456543, + -3.3931431770324707, + -1.130517840385437, + -1.2212674617767334, + 3.350808620452881, + -0.54228675365448, + -18.792734146118164, + -5.386458396911621, + 2.232064962387085, + 9.640290260314941, + -3.5898194313049316, + -1.7737853527069092, + -0.9428150653839111, + -1.4966493844985962, + -5.664628028869629, + 1.5034828186035156, + 2.768826723098755, + 7.40777063369751, + -0.2481483519077301, + 0.483269602060318, + -2.1277287006378174, + 2.398224353790283, + -1.0214366912841797, + 1.4305176734924316, + -0.8177788257598877, + -3.6374082565307617, + 2.892206907272339, + -0.38668155670166016, + 1.5056871175765991, + 8.541065216064453, + 0.25870630145072937, + 1.6474148035049438, + 5.403033256530762, + -0.28233805298805237, + -3.9897172451019287, + 0.1371423602104187, + 6.43699836730957, + -0.09151163697242737, + -0.6748573780059814, + -5.608603000640869, + 1.647058129310608, + -4.498290538787842, + 6.92068338394165, + -6.9558424949646, + 0.676181972026825, + 2.2556347846984863, + 0.9123876094818115, + -2.394414186477661, + 7.797669887542725, + 3.0742979049682617, + -2.739499568939209, + -4.474001884460449, + 13.831565856933594, + 3.200721263885498, + -0.9803619384765625, + 0.09586254507303238, + 3.9582200050354004, + -9.796732902526855, + 2.0431320667266846, + 2.0721583366394043, + -2.145864486694336, + -3.198148488998413, + 1.6440417766571045, + -0.2007576823234558, + -0.5023233890533447, + 0.923267662525177, + 1.3613560199737549, + -1.9278414249420166, + -0.5644499063491821, + 2.2481813430786133, + -0.014568805694580078, + 4.133111000061035, + 1.781834602355957, + 1.0493495464324951, + -12.769438743591309, + -2.364320755004883, + 3.2740721702575684, + 3.6467151641845703, + 4.722724914550781, + -5.238434314727783, + -0.2795901298522949, + 2.669809341430664, + 1.5426959991455078, + 0.1423185169696808, + 1.3859765529632568, + 0.3820784091949463, + 1.239140510559082, + 1.243202567100525, + -5.010551929473877, + 0.019786983728408813, + -4.042882919311523, + -2.6324656009674072, + -0.2097300887107849, + -1.513495922088623, + -1.088233470916748, + -3.0692460536956787, + 7.835820198059082, + 0.2812768220901489, + -7.913754940032959, + 2.255448579788208, + 25.98659896850586, + -2.23066782951355, + -2.4268853664398193, + -4.164870262145996, + 2.708664655685425, + -0.2658792734146118, + -0.582586407661438, + 7.284202575683594, + 1.253087043762207, + -4.135876655578613, + 7.081740379333496, + -0.009565949440002441, + -5.259950637817383, + 1.1009571552276611, + 0.3711925446987152, + -5.107980728149414, + -1.8708479404449463, + -0.9694553017616272, + 6.129934310913086, + 0.28510522842407227, + -4.765826225280762, + -6.349089622497559, + 1.48260498046875, + 0.13887712359428406, + 1.4893180131912231, + 4.31027889251709, + 5.458370685577393, + 2.346731662750244, + -1.1336143016815186, + -4.491231918334961, + 2.831571578979492, + -6.40875244140625, + 2.648465633392334, + 6.650712490081787, + -3.348283529281616, + 1.0458317995071411, + 2.8755595684051514, + -3.1879730224609375, + -3.089862108230591, + -0.3634515404701233, + 0.7468718886375427, + 5.005453109741211, + 3.2793915271759033, + -1.354640007019043, + -3.4359142780303955, + 3.8766300678253174, + -2.3639960289001465, + -0.5121729373931885, + 2.511232376098633, + 3.546619415283203, + -0.9020189046859741, + -0.3949890732765198, + 5.350035667419434, + 0.2077620029449463, + 3.3951292037963867, + -2.3868353366851807, + -4.223249435424805, + -11.455530166625977, + 1.1338605880737305, + -2.845578908920288, + -4.093885898590088, + 3.3318710327148438, + -5.188673973083496, + 1.2295000553131104, + 1.8471072912216187, + -6.562402725219727, + -2.014336347579956, + 1.1122146844863892, + -0.645346999168396, + 8.064413070678711, + 1.04073166847229, + -0.9242519736289978, + -0.5688291192054749, + 1.8569321632385254, + 0.8183078765869141, + 1.3724875450134277, + -0.09163188934326172, + 0.2985628843307495, + 2.2548623085021973, + -4.822350978851318, + -8.92586612701416, + 6.854887008666992, + -0.16042684018611908, + 11.092207908630371, + 2.397190570831299, + 0.15023374557495117, + -3.6301751136779785, + -0.37200525403022766, + -2.7398576736450195, + 2.986445903778076, + 1.7223842144012451, + -4.176677227020264, + -0.41570258140563965, + 1.7301561832427979, + 1.1997978687286377, + -4.5248942375183105, + 4.862605094909668, + 0.3756634294986725, + 3.132235527038574, + 2.3351104259490967, + 4.633374214172363, + -9.434893608093262, + -0.17586329579353333, + 6.206233501434326, + -6.08216667175293, + -4.2317585945129395, + -1.1686556339263916, + 0.034497976303100586, + -4.501936912536621, + 6.536630153656006, + -23.6715145111084, + 0.33232590556144714, + 3.456516981124878, + 2.2649712562561035, + -1.555196762084961, + -2.9519147872924805, + -4.186945915222168, + -3.1680846214294434, + -1.3886756896972656, + -7.751415729522705, + -3.5436463356018066, + 4.767765998840332, + 1.8144804239273071, + -3.7468576431274414, + -0.9841566681861877, + -0.6277549266815186, + 0.5748774409294128, + -3.911813259124756, + -1.3806380033493042, + 12.924223899841309, + 1.1919883489608765, + -0.03791427984833717, + -1.3192975521087646, + -1.8441107273101807, + -3.230381965637207, + 4.045217514038086, + 1.6909162998199463, + 1.020235538482666, + -2.786695957183838, + 1.6612108945846558, + 5.287017822265625, + 0.015863269567489624, + -2.3464837074279785, + -1.911327600479126, + -0.2753722071647644, + 5.4224700927734375, + -11.690454483032227, + 1.246219277381897, + -1.0240371227264404, + -0.2284165769815445, + -0.0027687549591064453, + 1.1081993579864502, + 6.549792289733887, + 2.141413688659668, + -0.06963396072387695, + 0.933786928653717, + -0.26226699352264404, + -0.5879991054534912, + -1.3996281623840332, + -6.220777988433838, + -2.3095180988311768, + -2.41434383392334, + 2.749016284942627, + 0.4537585377693176, + -4.172087669372559, + -1.7490407228469849, + -3.2532615661621094, + 2.320946455001831, + 15.380033493041992, + -2.236724615097046, + 6.495781898498535, + -1.165615439414978, + 1.2040653228759766, + -0.15964257717132568, + 4.655986785888672, + 1.6348192691802979, + 1.981310248374939, + -6.962894916534424, + 1.9613230228424072, + -1.4819037914276123, + 3.3474624156951904, + 1.0386223793029785, + -0.6737642288208008, + -1.9264461994171143, + 2.2957708835601807, + 1.6655945777893066, + 3.675429105758667, + 5.533381462097168, + 0.12300634384155273, + 4.453665256500244, + 0.9144761562347412, + 3.8137736320495605, + -1.484148621559143, + -4.43476676940918, + -5.300761699676514, + -10.669052124023438, + -4.694103240966797, + 8.071842193603516, + -2.8201801776885986, + 9.170735359191895, + 3.1886236667633057, + -0.33974403142929077, + -1.1208007335662842, + -2.9185502529144287, + 4.843726634979248, + 0.5230507254600525, + -0.9800597429275513, + 20.719884872436523, + -1.2171634435653687, + -5.3977370262146, + -1.2953031063079834, + 10.758907318115234, + 3.9302711486816406, + -1.9987478256225586, + 7.377894401550293, + 3.111210346221924, + -0.751230776309967, + 2.649364709854126, + -0.9777515530586243, + 5.947036266326904, + 1.0159138441085815, + 5.562700271606445, + 1.144556999206543, + -6.00253963470459, + 1.6949080228805542, + 2.1537625789642334, + -0.2250666618347168, + 3.603250503540039, + 3.144063949584961, + -0.13226866722106934, + 3.6342806816101074, + 1.850243330001831, + 7.555083751678467, + 0.6520172357559204, + 3.3618221282958984, + -1.6004564762115479, + -8.581846237182617, + -0.7229512929916382, + -3.463642120361328, + -3.501786708831787, + 0.9874610900878906, + 3.6191468238830566, + -9.642499923706055, + -1.5693418979644775, + 4.962273597717285, + -3.910869598388672, + 0.9930940270423889, + 1.5966284275054932, + 0.40213072299957275, + 1.695098638534546, + 0.2997477054595947, + -2.0846211910247803, + 2.1815061569213867, + 1.4338009357452393, + 4.875462055206299, + -0.6536977291107178, + 1.0684891939163208, + -2.8042609691619873, + 1.8522363901138306, + -2.6046881675720215, + -0.07674992084503174, + -0.27781105041503906, + 0.5181246995925903, + -3.4063045978546143, + -1.7947121858596802, + -1.1849076747894287, + -0.19296634197235107, + -3.149181842803955, + 0.8567805290222168, + -0.35180598497390747, + 10.497855186462402, + -4.771317481994629, + -0.0803266167640686, + 0.9957515001296997, + -2.0077128410339355, + 4.722391128540039, + -2.3060243129730225, + -3.0905163288116455, + -4.230443000793457, + 3.610956907272339, + 4.404534339904785, + 6.599162578582764, + -3.67036509513855, + 3.366492986679077, + 4.5074076652526855, + -2.580195665359497, + -0.5286219120025635, + -3.4472122192382812, + 1.2280569076538086, + 4.852838516235352, + 3.340379476547241, + 3.688227891921997, + 1.8207350969314575, + -1.3845211267471313, + 3.6085524559020996, + -0.32588881254196167, + -4.5059638023376465, + 6.99837589263916, + -0.5213010311126709, + 4.3514604568481445, + 0.053891621530056, + -3.4511559009552, + 1.4289345741271973, + 1.681075930595398, + 1.72275710105896, + 2.6699376106262207, + -0.10407310724258423, + -1.6003952026367188, + 6.719550132751465, + 3.534245252609253, + 1.8932163715362549, + 1.1764378547668457, + -4.2615861892700195, + -0.04884970188140869, + -2.365504264831543, + 0.466066837310791, + 0.03400982916355133, + 2.4853947162628174, + 0.95416259765625, + -0.5661587715148926, + -7.539999008178711, + -7.435425758361816, + -1.7376537322998047, + 0.9418849945068359, + -0.5645544528961182, + -9.093633651733398, + -2.5042266845703125, + 3.6300253868103027, + 3.2146682739257812, + 0.7396154403686523, + 2.4524755477905273, + 6.890074253082275, + -3.0215892791748047, + -4.926884174346924, + 0.6351553201675415, + 3.717524290084839, + -1.3999311923980713, + 1.9846495389938354, + 0.20662246644496918, + 5.757473468780518, + -3.550926685333252, + 9.20040512084961, + 5.8506574630737305, + 5.592097282409668, + -1.7830297946929932, + 0.6141205430030823, + 1.2894566059112549, + -3.1713714599609375, + -1.5410889387130737, + -1.4547697305679321, + 3.9605350494384766, + 4.6987738609313965, + -3.4729955196380615, + -3.115356683731079, + 10.430679321289062, + -25.11516571044922, + -5.331728458404541, + -0.4392712116241455, + 1.7313423156738281, + 1.4716525077819824, + -4.185464859008789, + 2.0422921180725098, + -0.48056796193122864, + 1.4326905012130737, + -3.26281476020813, + 0.6022465825080872, + -6.878800392150879, + -11.508444786071777, + 0.8117073774337769, + 1.378675937652588, + 2.1831061840057373, + -2.6446940898895264, + -3.504173517227173, + -0.8695191144943237, + 25.502933502197266, + 2.8835246562957764, + 5.560789108276367, + 0.036832332611083984, + 1.8528752326965332, + 0.7036138772964478, + 2.872274875640869, + 4.944514751434326, + -5.779014587402344, + 2.7740328311920166, + -1.7428908348083496, + 7.498391628265381, + 1.2680453062057495, + -1.9831767082214355, + 1.8902359008789062, + -2.4317619800567627, + -3.3767855167388916, + 0.9051733613014221, + 4.0216264724731445, + -0.7416577339172363, + -6.3011088371276855, + 0.6249964237213135, + 0.9392184019088745, + 2.079679012298584, + 1.8451497554779053, + 17.09099578857422, + -3.4532365798950195, + -4.619755744934082, + -2.442399263381958, + -1.00413978099823, + -2.826051712036133, + -1.0246953964233398, + 11.31231689453125, + -1.3857346773147583, + 7.026304244995117, + 0.7653341293334961, + 3.9143338203430176, + 1.2941948175430298, + -2.487896680831909, + 7.020701885223389, + 3.116870880126953, + -0.36583954095840454, + -6.014817237854004, + 3.000857353210449, + 2.9610157012939453, + -4.563522815704346, + 2.7968740463256836, + -1.192240595817566, + -2.7109644412994385, + -7.326347351074219, + 1.7415215969085693, + -0.6762416362762451, + -1.7528629302978516, + 3.377225875854492, + -0.5319571495056152, + 4.156964302062988, + 3.3417928218841553, + 2.6976373195648193, + 4.1362152099609375, + 2.9643516540527344, + -1.255894422531128, + 2.510514736175537, + 1.072990894317627, + -32.79591751098633, + -13.123854637145996, + 0.7289853692054749, + -2.473264455795288, + -4.8749895095825195, + -0.027242809534072876, + 0.8604000806808472, + -2.1069283485412598, + -4.044508934020996, + -1.2448420524597168, + 0.2393256425857544, + 3.0162336826324463, + -7.6779985427856445, + 9.267274856567383, + -0.6267848014831543, + -1.4445122480392456, + -0.36250731348991394, + 4.445341110229492, + -1.0692570209503174, + 2.313488483428955, + 2.6897380352020264, + 1.1218924522399902, + 1.804094672203064, + 1.5709569454193115, + 4.7980570793151855, + 1.3842740058898926, + -0.5772421360015869, + -0.5647956728935242, + 3.404989242553711, + -2.4715185165405273, + -0.7424007654190063, + -3.6297364234924316, + -3.977263927459717, + 1.6676619052886963, + 4.937249183654785, + -13.089069366455078, + 2.7869489192962646, + 3.2793681621551514, + -2.107851028442383, + -1.4471651315689087, + -2.695711612701416, + 1.243119716644287, + 3.7027337551116943, + -1.478249430656433, + -1.4840034246444702, + -1.818922758102417, + -3.1315884590148926, + -0.7970576286315918, + 1.442502498626709, + 3.733335494995117, + -6.631142616271973, + -2.733531951904297, + -0.7828039526939392, + -1.0530061721801758, + -9.842646598815918, + -6.661226272583008, + 9.870783805847168, + 0.6034114360809326, + 4.231991767883301, + -2.4394381046295166, + 0.6343908309936523, + 1.8037959337234497, + -2.919785261154175, + -14.703208923339844, + 5.214827060699463, + -1.0638089179992676, + 3.9187636375427246, + 8.041071891784668, + -2.6482794284820557, + 0.6394252777099609, + -4.078967571258545, + 0.5637580156326294, + -2.8878376483917236, + 20.86604881286621, + 0.38869941234588623, + -1.1554564237594604, + -1.8627045154571533, + -0.43862664699554443, + -10.181025505065918, + 3.3472349643707275, + 13.283432960510254, + 2.6841673851013184, + 2.259610176086426, + -3.891103982925415, + 2.349587917327881, + 22.950010299682617, + -0.3437117636203766, + -5.010685920715332, + -0.7426861524581909, + 0.8506225347518921, + -4.678180694580078, + 0.6614858508110046, + -0.891321063041687, + 0.6760926246643066, + 2.359489679336548, + 1.6386674642562866, + 1.9631109237670898, + -7.327896595001221, + 0.9281344413757324, + 2.0558054447174072, + 0.4154564142227173, + 0.3133186995983124, + -1.4714341163635254, + -1.5286978483200073, + 3.499088764190674, + -3.18131422996521, + -2.337348461151123, + 4.9518046379089355, + -0.08342814445495605, + 0.5741714239120483, + -1.0468175411224365, + 6.602545738220215, + 0.6483675241470337, + 9.208518981933594, + 3.355301856994629, + 4.333498001098633, + -3.72678279876709, + 0.5504930019378662, + -1.7226977348327637, + -12.044668197631836, + 3.298771858215332, + 1.2836112976074219, + -1.109765887260437, + -1.8311455249786377, + -5.8459367752075195, + -1.8510169982910156, + -0.40447497367858887, + 2.9273130893707275, + 5.9063310623168945, + -6.655228614807129, + 2.35087251663208, + -1.2937006950378418, + -0.8611136674880981, + 1.7160347700119019, + -4.196369171142578, + 2.1126694679260254, + -3.965470790863037, + -0.47456973791122437, + -1.9602420330047607, + -2.983074188232422, + 0.49538207054138184, + -1.1057802438735962, + 4.811859607696533, + -3.5855534076690674, + 5.837584972381592, + 0.9536257982254028, + 2.109151601791382, + 5.939639091491699, + 0.39656203985214233, + -1.5131499767303467, + -0.5625344514846802, + -1.3949341773986816, + -3.65065598487854, + -4.9228315353393555, + 0.6994975805282593, + -3.671246290206909, + 2.7070248126983643, + 1.5448999404907227, + -3.9431731700897217, + -1.4774212837219238, + -2.9539711475372314, + -0.5612866878509521, + 0.37777847051620483, + 5.803613185882568, + 2.3944101333618164, + 0.26811251044273376, + -0.6251184344291687, + -2.2428441047668457, + -2.1642932891845703, + -10.865229606628418, + 0.9082705974578857, + -2.3468620777130127, + -5.137474536895752, + 0.4934360980987549, + -1.1537013053894043, + -0.533930778503418, + -5.1486077308654785, + 2.009201765060425, + -3.3178977966308594, + -0.8928617238998413, + -1.647335171699524, + -4.239560127258301, + -0.23960284888744354, + 3.752216339111328, + 5.608954906463623, + -1.8837395906448364, + -0.0960288792848587, + -1.2073591947555542, + -10.45191764831543, + -0.733478307723999, + 4.41482400894165, + -4.269535064697266, + -6.386007308959961 + ] + }, + "18": { + "gender": "男性", + "describe": "有磁性的男播音", + "tensor": [ + 8.631275177001953, + 0.331787645816803, + 0.31109416484832764, + -0.22482430934906006, + -0.5857614278793335, + 4.405304908752441, + -1.0911362171173096, + -2.5814368724823, + 5.090867042541504, + 7.9551520347595215, + 3.604414463043213, + 0.38459324836730957, + 2.9072728157043457, + 1.6626179218292236, + 2.9755380153656006, + 2.593423366546631, + 2.4223053455352783, + -1.6526895761489868, + 2.3719370365142822, + 0.4629952907562256, + 14.030988693237305, + -1.926908254623413, + -2.877984046936035, + 17.9407958984375, + -0.988716185092926, + 1.0004284381866455, + -35.73658752441406, + 19.931884765625, + 1.837834358215332, + -0.7056455612182617, + -3.030207395553589, + -0.3717181086540222, + -2.1544039249420166, + 2.364759922027588, + 3.620894432067871, + -3.9301533699035645, + 2.928927421569824, + -4.868648529052734, + -5.581777095794678, + 2.784245252609253, + 3.1507747173309326, + 2.4599714279174805, + 5.1797661781311035, + 7.794262886047363, + 5.64671516418457, + 6.096701145172119, + 0.5102590918540955, + 0.7998618483543396, + -2.599790573120117, + -4.119709014892578, + -2.549715757369995, + -3.0745737552642822, + 3.195749044418335, + -1.256195306777954, + -0.38299185037612915, + 5.872913837432861, + 2.29929780960083, + 1.8216824531555176, + -3.2781639099121094, + -0.45715469121932983, + -2.612119197845459, + 0.06793835759162903, + 2.0068984031677246, + 2.353382110595703, + 1.1588451862335205, + 0.014945149421691895, + -0.687301754951477, + -0.521359920501709, + 5.8725385665893555, + 1.027492642402649, + 2.143342971801758, + -4.262556076049805, + -0.8820537328720093, + 1.7441083192825317, + 1.1195374727249146, + 0.0012177228927612305, + -0.48722290992736816, + -1.6696937084197998, + 1.3079628944396973, + 1.1395636796951294, + 4.918097496032715, + -5.379852771759033, + 2.5039215087890625, + -0.8579158782958984, + 4.1655378341674805, + 4.108450889587402, + 4.943643569946289, + 1.0600266456604004, + 2.4795901775360107, + 1.0920178890228271, + 30.624544143676758, + -4.590081214904785, + 2.941880702972412, + 1.4894957542419434, + 0.9129881858825684, + -15.654703140258789, + 2.6296937465667725, + -1.4582552909851074, + 2.6277408599853516, + -0.2569933831691742, + -1.8996928930282593, + 2.0164525508880615, + 2.4395699501037598, + 0.4881690740585327, + -3.2193422317504883, + -0.7757246494293213, + -2.015756130218506, + 1.2674095630645752, + 2.538724899291992, + 2.554225444793701, + 2.5632400512695312, + -5.561756134033203, + 21.516590118408203, + 1.4138258695602417, + 0.4212966561317444, + 1.0666537284851074, + -0.35321784019470215, + -0.6399369239807129, + 2.9746899604797363, + -4.380823135375977, + -0.5960521697998047, + 1.2709335088729858, + 1.049135684967041, + -1.948822021484375, + 3.136004686355591, + 3.5558271408081055, + -5.331039905548096, + 4.431979179382324, + 3.7720718383789062, + 2.0484325885772705, + 4.973607540130615, + 4.617129325866699, + 0.7690715193748474, + 0.13394945859909058, + -4.719574451446533, + 3.4678218364715576, + 0.7719936370849609, + -1.090910792350769, + 10.1336669921875, + -1.3337681293487549, + 4.637160301208496, + -2.4731760025024414, + -0.6618341207504272, + -0.3919201195240021, + -1.1747934818267822, + -9.311457633972168, + -0.5548913478851318, + -3.929994583129883, + -2.3234312534332275, + 1.827418565750122, + 2.929002285003662, + -1.5113685131072998, + -0.7577080726623535, + -3.8395395278930664, + 1.9833157062530518, + -1.9835258722305298, + -2.051694393157959, + -2.156489133834839, + -3.604734420776367, + -2.1954917907714844, + 0.46527165174484253, + -2.5760934352874756, + -1.5981290340423584, + -0.9355176687240601, + -1.9270663261413574, + -0.5547547340393066, + 0.8980878591537476, + -0.9373959302902222, + 4.345102310180664, + -8.884745597839355, + 0.27799540758132935, + -7.752120018005371, + 9.71609878540039, + -0.9859880208969116, + 2.7242941856384277, + -0.07567005604505539, + 1.294891595840454, + 1.8461357355117798, + 0.38066333532333374, + -1.949066400527954, + -4.896547317504883, + 5.010476112365723, + -0.913516640663147, + -2.8587398529052734, + -3.276264190673828, + -3.53855037689209, + -4.3238301277160645, + -0.6194336414337158, + -0.36630237102508545, + -5.05218505859375, + 0.0038664638996124268, + -2.5229454040527344, + 5.307399272918701, + -2.6459755897521973, + -3.5999631881713867, + -9.028242111206055, + -5.331273078918457, + -4.6765594482421875, + 1.6072548627853394, + 1.4391629695892334, + 3.9298877716064453, + -5.448945999145508, + -0.35508233308792114, + -7.566622734069824, + -1.7402653694152832, + -2.3744161128997803, + 1.475629210472107, + 8.038625717163086, + -1.2670122385025024, + -0.8923788070678711, + 1.3434746265411377, + -4.311079025268555, + 2.5532333850860596, + 4.169198989868164, + -1.4967819452285767, + 1.3906636238098145, + -1.5518776178359985, + 12.051834106445312, + 1.4982726573944092, + 14.023521423339844, + -3.6689860820770264, + -5.658522129058838, + 1.5482925176620483, + 15.238390922546387, + 4.900928497314453, + -3.875316619873047, + 1.030076026916504, + 3.0322837829589844, + 0.4664194583892822, + 1.4561994075775146, + 1.2609844207763672, + -7.234016418457031, + 2.1998507976531982, + 1.586017370223999, + 1.9692950248718262, + 0.5806790590286255, + 4.589534759521484, + -2.548305034637451, + -1.0453698635101318, + -2.5346832275390625, + -1.3376027345657349, + -0.8378663063049316, + -3.3169097900390625, + 0.49388182163238525, + -1.4387946128845215, + 1.8463032245635986, + -6.743870735168457, + 5.015515327453613, + 28.73972511291504, + 2.5538949966430664, + -0.5891551971435547, + 0.11040639877319336, + -1.6806584596633911, + 4.252745628356934, + -5.391016006469727, + 3.9016823768615723, + 2.6318840980529785, + -2.932738780975342, + -0.5789740085601807, + -1.5415141582489014, + -1.2709354162216187, + 1.0789997577667236, + -0.689666748046875, + 1.5832931995391846, + -0.6488595008850098, + -0.3965376615524292, + -2.478971481323242, + -1.2763609886169434, + -3.2434558868408203, + 1.327807068824768, + -0.4508829116821289, + 2.4253268241882324, + -6.806841850280762, + 3.5297179222106934, + 0.34785938262939453, + -3.988116979598999, + 0.05921328067779541, + -1.4004080295562744, + -3.915125846862793, + 0.6729986667633057, + -2.155778169631958, + -3.264685869216919, + -4.02541446685791, + 2.679506778717041, + 0.8863720297813416, + -4.580661296844482, + -4.356241226196289, + -1.9511741399765015, + -4.814652442932129, + -0.5732609033584595, + -1.8423463106155396, + 3.3635034561157227, + 3.7920806407928467, + 4.604672908782959, + -0.5032044649124146, + 9.109066009521484, + 2.2062253952026367, + 6.204395771026611, + 3.4886531829833984, + 1.9497504234313965, + 2.9888665676116943, + -2.514033079147339, + -1.223433494567871, + -4.334791660308838, + -0.5716997385025024, + -2.6510910987854004, + 4.993796348571777, + 5.051662445068359, + -0.1742039918899536, + -0.7004814743995667, + 4.11821174621582, + 2.4336400032043457, + 3.42021107673645, + -3.910444498062134, + -1.2571619749069214, + 0.45658716559410095, + 4.140246391296387, + 1.2001709938049316, + 0.26052325963974, + 1.8173161745071411, + 2.138608932495117, + -1.8129541873931885, + 0.6285011172294617, + 2.1118202209472656, + 0.6789864301681519, + 10.990926742553711, + 2.0787835121154785, + 5.906105995178223, + -0.4958513379096985, + 4.5183587074279785, + 2.752817392349243, + -16.59375762939453, + 0.11862263083457947, + -15.130435943603516, + 1.4126569032669067, + 7.507604122161865, + -3.1299407482147217, + -16.39828872680664, + 0.2386297732591629, + 1.1592636108398438, + 1.634887933731079, + 0.11811238527297974, + -0.30474549531936646, + 2.3901162147521973, + -2.82482647895813, + 19.031505584716797, + -3.4500510692596436, + -1.896491289138794, + -8.682819366455078, + -12.384428024291992, + -1.4144634008407593, + 5.804117202758789, + 0.11427938938140869, + 6.207097053527832, + -1.4299354553222656, + -4.855881690979004, + 2.498783826828003, + 3.627619981765747, + -3.7767081260681152, + 3.1852664947509766, + -0.0828700065612793, + 3.0999021530151367, + 2.1003875732421875, + -0.960939884185791, + 5.069138526916504, + -15.386333465576172, + 1.2443509101867676, + -3.2731666564941406, + -2.6834702491760254, + 0.4339020252227783, + 5.686503887176514, + -0.35220831632614136, + 2.1819305419921875, + -6.02978515625, + 5.354431629180908, + 3.19507098197937, + 4.14724588394165, + -1.4277198314666748, + -19.205198287963867, + -2.924443244934082, + -13.086183547973633, + 4.672416687011719, + 3.5942490100860596, + 9.518712997436523, + -4.068821907043457, + -0.45124679803848267, + 4.415398597717285, + 5.4248809814453125, + -2.5554685592651367, + -3.313828468322754, + -1.984097957611084, + -4.962835788726807, + -2.549584150314331, + 3.87524151802063, + 6.0973076820373535, + 1.0628888607025146, + 3.2320046424865723, + 4.834455966949463, + -7.429717540740967, + 2.6597249507904053, + 2.6904962062835693, + -2.0823678970336914, + -3.374441146850586, + 3.6888484954833984, + -1.6806855201721191, + -0.3958420157432556, + 4.425394535064697, + 2.7704050540924072, + 2.859090805053711, + -25.679433822631836, + -0.7061699032783508, + 2.4385886192321777, + -3.9028472900390625, + 2.426170825958252, + -3.3854963779449463, + 8.573277473449707, + 1.3430795669555664, + 4.072475433349609, + 1.3016319274902344, + 0.06132006645202637, + -0.8008955121040344, + 2.525753974914551, + 0.903329074382782, + -0.7679599523544312, + 0.28390681743621826, + -1.6527965068817139, + -1.0055079460144043, + 0.5655546188354492, + 1.1657884120941162, + -1.2818660736083984, + 7.5647478103637695, + -2.2459230422973633, + 1.1657865047454834, + 8.691092491149902, + -5.886178970336914, + 10.618453025817871, + -2.9143552780151367, + -1.3241965770721436, + 1.250503659248352, + 0.5874177813529968, + -1.1273936033248901, + -1.5318397283554077, + 3.8015286922454834, + 0.6384061574935913, + -6.719407081604004, + 0.0989258885383606, + 1.229083776473999, + 4.708902359008789, + 1.663771629333496, + -3.8224005699157715, + -1.7973322868347168, + 2.1038641929626465, + -6.380090236663818, + -0.3558608889579773, + -0.4511573016643524, + -1.6836297512054443, + 0.2749885320663452, + 0.3989444375038147, + -3.976766586303711, + 0.856658935546875, + 0.6602635383605957, + 3.226691722869873, + -4.29534387588501, + 10.036986351013184, + -0.12914761900901794, + 4.025060653686523, + -17.0200252532959, + 7.0871195793151855, + -7.989058017730713, + 8.339179992675781, + -0.10683560371398926, + 5.902125358581543, + -1.4799883365631104, + -0.7892431020736694, + -2.5155487060546875, + -4.135960102081299, + -0.2559691071510315, + -2.4347527027130127, + 1.8946149349212646, + -4.435950756072998, + -2.5598106384277344, + -2.6359353065490723, + 2.572969436645508, + -0.6339890956878662, + 2.05580735206604, + -1.267978549003601, + -4.1976704597473145, + -1.543115258216858, + 8.894871711730957, + -8.254682540893555, + -2.197930335998535, + 2.3906285762786865, + 5.334284782409668, + 4.620835781097412, + -5.687647819519043, + 2.556218385696411, + 3.7243452072143555, + 0.0830041766166687, + -2.0047495365142822, + -1.7188270092010498, + -2.929978847503662, + -0.7916457653045654, + 1.7211790084838867, + -3.7952585220336914, + -7.931150436401367, + -0.5156922340393066, + -0.3600277304649353, + 3.9762494564056396, + 0.7905990481376648, + -8.808449745178223, + 0.07701745629310608, + 3.0462911128997803, + -0.6080653667449951, + -1.4978829622268677, + 4.555945873260498, + -12.214438438415527, + 0.44756019115448, + 2.0892863273620605, + -1.410525918006897, + -0.5027168393135071, + -4.298683166503906, + -0.12701880931854248, + -5.221797943115234, + 1.0657720565795898, + 5.420337677001953, + -0.4711279273033142, + 2.966273069381714, + 2.807795524597168, + -1.1538712978363037, + -3.1946444511413574, + 0.1948099136352539, + 5.628173351287842, + -9.27330207824707, + -0.4154883623123169, + -0.49381688237190247, + -2.2581303119659424, + 2.9513418674468994, + 15.218711853027344, + 0.4130820631980896, + 0.12473094463348389, + -5.891918659210205, + 2.4757742881774902, + -2.2655060291290283, + -3.8012661933898926, + -7.260376453399658, + -1.670907974243164, + -16.192073822021484, + -0.43875327706336975, + 3.826425075531006, + 3.144756555557251, + -0.23279809951782227, + -3.2897963523864746, + 11.274969100952148, + -6.639510154724121, + 4.495151996612549, + 0.15621322393417358, + 5.484403610229492, + -4.819725513458252, + 1.2261803150177002, + 3.3835999965667725, + -1.9315898418426514, + -0.6350679397583008, + -0.7574260830879211, + -3.7702784538269043, + -1.0456280708312988, + 15.118523597717285, + -1.1731772422790527, + 0.4233233332633972, + 1.2090654373168945, + -1.4303021430969238, + 0.7671418190002441, + 4.349674224853516, + -1.0664303302764893, + -3.618978977203369, + 1.2367448806762695, + -10.815239906311035, + 11.703975677490234, + 2.539149284362793, + 3.102473258972168, + -2.734694004058838, + 1.8909648656845093, + 2.7197089195251465, + -1.6804735660552979, + -0.5533710718154907, + -1.5642528533935547, + 5.903102874755859, + -1.1673554182052612, + -5.1166276931762695, + 0.6110812425613403, + 2.2824578285217285, + -2.7626469135284424, + 0.9508601427078247, + 3.5586965084075928, + -0.12367117404937744, + -0.4001736640930176, + 5.671291351318359, + 4.437142848968506, + -2.5414462089538574, + -2.1953845024108887, + 5.068900108337402, + 4.063479423522949, + -0.1386427879333496, + -0.5780292749404907, + 4.259278297424316, + 1.6124145984649658, + 0.6182560920715332, + -3.053331136703491, + 0.6345046162605286, + -1.7463202476501465, + 0.4395134449005127, + -8.71725082397461, + 3.1504619121551514, + 1.2559747695922852, + -1.6980926990509033, + -0.43151235580444336, + 1.0617821216583252, + -1.6835837364196777, + 0.9813911318778992, + -1.9165552854537964, + -0.7559893131256104, + -2.3604328632354736, + -3.498232126235962, + -4.300906181335449, + 1.166956901550293, + -2.0536582469940186, + 3.090909242630005, + 1.3889331817626953, + -0.9012193083763123, + 5.252308368682861, + -0.8765506744384766, + -1.4908183813095093, + 9.58566951751709, + -5.5833659172058105, + -2.1577444076538086, + -3.171616792678833, + -0.630127489566803, + -4.521445274353027, + -3.6127657890319824, + -3.919498920440674, + 4.446491718292236, + 5.197294235229492, + 2.6294422149658203, + 3.2033426761627197, + -1.8901327848434448, + 1.8731660842895508, + 3.5641326904296875, + -0.10187016427516937, + -1.2991228103637695, + 19.7968807220459, + -4.922657012939453, + -1.9707183837890625, + 5.771823883056641, + -0.07279187440872192, + -14.548442840576172, + 0.9800993800163269, + -4.002936840057373, + -2.0758261680603027, + 1.0673402547836304, + -3.5103728771209717, + -1.239464521408081, + -5.286755561828613, + 3.3578195571899414, + -6.245713233947754, + -1.2567451000213623, + -1.5108366012573242, + -1.5314112901687622, + 0.6151918172836304, + 5.387776851654053, + 7.382077693939209, + -2.5668561458587646, + -0.5695186257362366, + 3.057934522628784, + -6.270700931549072, + 0.47312843799591064, + 0.6224609613418579, + 1.497360110282898, + -3.688016176223755, + 1.6431363821029663, + 1.7474584579467773, + -3.394441604614258, + 1.2662299871444702, + 2.3395626544952393, + 8.753860473632812, + 2.8411827087402344, + -2.1793112754821777, + 0.01945684850215912, + -8.4386568069458, + -1.189378023147583, + 8.20163631439209, + -9.177839279174805, + 0.6977380514144897, + 3.2760162353515625, + 0.03538203239440918, + -1.4897205829620361, + 9.941935539245605, + 4.087536334991455, + 5.034986972808838, + 5.1694111824035645, + 2.8476974964141846, + -5.155529022216797, + -0.7307531833648682, + 6.468167781829834, + -2.6532766819000244, + 1.6873779296875, + -1.5899105072021484, + 0.21576595306396484, + -0.9984270334243774, + 0.7283650040626526, + 0.7984086871147156, + -2.3235785961151123, + -2.7376742362976074, + 0.6787086725234985, + 2.0938720703125, + -1.8057944774627686, + -4.416624069213867, + -1.7619750499725342, + 0.38259246945381165, + -0.17553368210792542, + 3.855266571044922, + 1.1404016017913818, + -0.11741045117378235, + -1.7090442180633545, + 8.473688125610352, + 1.6176477670669556, + 3.105196237564087, + 4.925692081451416, + -6.75146484375, + -2.2789664268493652, + -1.0401307344436646, + -0.3227887749671936, + -0.7184536457061768, + -2.5861380100250244, + -6.77108097076416, + -0.9393109083175659, + -0.39306342601776123, + -3.1385645866394043, + 2.0806641578674316, + -1.88883376121521, + 8.854233741760254, + 5.579824924468994, + -1.1407908201217651, + 4.107006072998047, + -3.7867071628570557, + -0.1179959774017334, + -5.418328285217285, + -1.3426578044891357, + 3.0466198921203613, + -2.335017442703247, + -0.835970401763916, + -1.7652192115783691, + 0.6922775506973267, + 0.5709173083305359, + 0.4794331192970276, + 1.0392143726348877, + -0.610375165939331, + -4.329453468322754, + -3.838927984237671, + 0.7760144472122192, + -5.45327091217041, + 5.598249912261963, + 0.7584110498428345, + -2.3367631435394287, + -1.2565882205963135, + 5.84578800201416, + -3.5701420307159424, + 1.1652419567108154, + 1.9242119789123535, + 3.902557373046875 + ] + }, + "19": { + "gender": "男性", + "describe": "文弱书生", + "tensor": [ + -0.08837080001831055, + 4.22911262512207, + -0.8524118661880493, + -2.3952367305755615, + -0.3673710823059082, + 0.6966902017593384, + 6.219968795776367, + -2.6413285732269287, + -3.463618755340576, + 5.583745956420898, + 4.381370544433594, + -0.726271390914917, + -1.3702088594436646, + 0.2328459918498993, + -7.172049522399902, + -0.028754591941833496, + -1.2347403764724731, + -0.9628316760063171, + 1.2247685194015503, + 1.5896891355514526, + 12.726058006286621, + -2.834977149963379, + 4.539828300476074, + 7.046329975128174, + 0.6765999794006348, + 1.0453495979309082, + -10.495339393615723, + -1.7003893852233887, + 1.6994175910949707, + 1.7241146564483643, + 4.617978096008301, + -1.2326161861419678, + -4.56854248046875, + -4.080472469329834, + -1.0675936937332153, + -2.6511311531066895, + 4.017246246337891, + -2.712770462036133, + 3.6135640144348145, + 1.499414086341858, + 2.940297842025757, + -1.1271615028381348, + -2.155393123626709, + -3.2680721282958984, + 10.786874771118164, + 1.6468255519866943, + 0.6207181811332703, + -8.156014442443848, + 2.628110647201538, + -2.351945400238037, + 0.21173641085624695, + -5.4598822593688965, + 6.330790042877197, + -0.036631643772125244, + -1.637871503829956, + 7.914501190185547, + -0.04462161660194397, + 1.1461973190307617, + 1.0136394500732422, + -1.8218803405761719, + -1.6803572177886963, + -3.28261399269104, + 6.655867576599121, + -3.424074411392212, + 0.7601587772369385, + 2.3052597045898438, + 1.3608248233795166, + 23.99746322631836, + 0.2174186408519745, + 2.8656387329101562, + 0.5697489976882935, + 0.8428508043289185, + 2.6053481101989746, + -0.05608997493982315, + 12.056877136230469, + -1.2778034210205078, + 3.3307862281799316, + -11.048940658569336, + -5.998741626739502, + -0.6434063911437988, + -2.537804365158081, + -3.1847171783447266, + 1.902168869972229, + 3.3850066661834717, + 5.898575782775879, + -0.8691998720169067, + 2.4978673458099365, + 2.0742831230163574, + -2.281597852706909, + 2.8917503356933594, + 3.1405892372131348, + 1.9059120416641235, + 0.05871689319610596, + -0.779582142829895, + 13.572674751281738, + -7.169344902038574, + 2.337803602218628, + -0.6437904834747314, + -1.3436763286590576, + 2.503634214401245, + -1.7450721263885498, + -1.0341404676437378, + 12.263471603393555, + -0.06830497086048126, + 0.6831220388412476, + 1.9648990631103516, + -1.3429896831512451, + -1.6276612281799316, + 2.200395107269287, + 4.131319999694824, + -2.886995792388916, + 16.714462280273438, + 9.24968433380127, + -1.439500093460083, + -0.10378286242485046, + 3.109551191329956, + -2.7329177856445312, + -1.1203999519348145, + 2.6622438430786133, + -4.1782073974609375, + -0.6215695142745972, + 0.9593312740325928, + -3.5381240844726562, + 4.255289077758789, + 1.4053466320037842, + -3.0948991775512695, + -0.3981361389160156, + 3.0809061527252197, + -0.49374642968177795, + -1.3225370645523071, + 0.676817774772644, + 4.928402900695801, + 1.5351618528366089, + 0.32629430294036865, + 2.976128578186035, + 3.6979176998138428, + 1.4215607643127441, + 4.251803398132324, + -27.579612731933594, + -5.904256820678711, + -2.4986917972564697, + 0.19212892651557922, + -7.240586757659912, + 3.026628017425537, + 3.836635112762451, + 3.2635393142700195, + 1.3270646333694458, + -7.172845363616943, + -3.9896059036254883, + -6.892728328704834, + -4.578982830047607, + 1.7007122039794922, + -1.759334921836853, + -11.979629516601562, + -4.626034736633301, + 0.36979275941848755, + 5.367621421813965, + 3.468679428100586, + -3.87406587600708, + 0.7067465782165527, + 1.696237564086914, + -2.282400369644165, + -0.9989475011825562, + -11.714776039123535, + -3.413839817047119, + 5.791357040405273, + -0.2982769012451172, + 1.044324278831482, + 8.506908416748047, + -8.386517524719238, + 4.94346809387207, + 5.747888088226318, + -10.01666259765625, + -0.7425251603126526, + -0.7192347049713135, + 3.0065717697143555, + -0.22311097383499146, + 1.321466088294983, + 1.6072425842285156, + 4.007988929748535, + 2.391084909439087, + -0.4197736978530884, + 5.316268444061279, + 7.9973320960998535, + -3.6996383666992188, + 4.304728031158447, + 28.95245361328125, + -0.9609187841415405, + 2.6169230937957764, + 3.1635828018188477, + -1.6423910856246948, + 1.9205653667449951, + -3.855656862258911, + 1.6641011238098145, + 5.264684200286865, + -4.150609493255615, + 1.7134337425231934, + -3.5993075370788574, + -4.985912799835205, + 4.5986714363098145, + -2.816709041595459, + -3.3852007389068604, + 0.39849308133125305, + -2.2531161308288574, + -1.4946181774139404, + 0.3477643132209778, + 0.22042988240718842, + 9.978515625, + -3.6394448280334473, + 1.9378454685211182, + 1.2740654945373535, + -2.164574146270752, + -6.3308305740356445, + -5.132461071014404, + 1.4251489639282227, + -0.277157723903656, + 2.0536563396453857, + 0.32224059104919434, + 1.4547789096832275, + 20.832931518554688, + -7.187668800354004, + -10.578356742858887, + -0.31614506244659424, + 1.3629069328308105, + 4.172041893005371, + -6.94828987121582, + -2.5363638401031494, + -1.9982898235321045, + -0.36668860912323, + 4.1751909255981445, + -1.5733542442321777, + 10.024563789367676, + -1.5926164388656616, + -2.7019028663635254, + -3.660233974456787, + -5.200865745544434, + -1.5257792472839355, + 1.6731019020080566, + 6.09126091003418, + 1.6230056285858154, + 0.39561009407043457, + -2.2244372367858887, + -5.332064628601074, + -0.8937318921089172, + 2.0360052585601807, + -2.1657638549804688, + -3.048356533050537, + 1.3541247844696045, + 3.4427947998046875, + -2.471301555633545, + -2.0915329456329346, + -2.918947219848633, + 1.5725600719451904, + 2.2343697547912598, + -0.6067374348640442, + -0.7839381694793701, + 2.4165468215942383, + -9.965715408325195, + -4.114459991455078, + -2.8980395793914795, + -1.2179666757583618, + 1.4375247955322266, + -1.532178282737732, + 0.8572590947151184, + 1.5496985912322998, + 0.9473288059234619, + -2.0660266876220703, + 10.15719985961914, + 7.797728538513184, + -0.7022014260292053, + 3.607447385787964, + 1.7942835092544556, + 4.784870147705078, + 4.781111717224121, + 1.2480618953704834, + -3.371306896209717, + 7.7640862464904785, + -1.4748073816299438, + -5.963681697845459, + -2.2467150688171387, + 1.7058789730072021, + -1.4301536083221436, + 3.466291904449463, + -2.0674021244049072, + 4.181344032287598, + -0.8152797818183899, + 0.4631713628768921, + -0.10779368132352829, + -7.531331539154053, + -0.17767131328582764, + -0.043588779866695404, + 2.4187498092651367, + -0.9992983341217041, + 3.852485179901123, + -3.845457077026367, + 2.173762083053589, + -1.1549211740493774, + -6.957440376281738, + -0.13136261701583862, + -1.1478633880615234, + 3.0959157943725586, + 0.8804394006729126, + -1.1840587854385376, + 3.9679741859436035, + 1.7382676601409912, + -3.4536945819854736, + 4.627516269683838, + 0.6371328830718994, + -2.8467531204223633, + 0.2223464995622635, + 4.810550689697266, + -2.497018337249756, + 2.4417059421539307, + 1.598515272140503, + 1.723438024520874, + 5.392899036407471, + 1.900592565536499, + 1.2479207515716553, + 4.4832329750061035, + 0.8923213481903076, + 1.478883981704712, + -1.4832265377044678, + -0.2943228483200073, + 0.5916275978088379, + 0.16789215803146362, + 12.020537376403809, + 5.849200248718262, + -15.646574020385742, + 0.6982344388961792, + 0.7632191777229309, + -1.6491895914077759, + -19.140451431274414, + -4.621514797210693, + -1.2952635288238525, + -4.000679016113281, + 4.696732521057129, + 2.3974928855895996, + -9.74878215789795, + -2.4442951679229736, + -0.24481451511383057, + 0.026607751846313477, + 1.3738677501678467, + 5.384866237640381, + 4.492037773132324, + 1.894787311553955, + -2.305699586868286, + -0.7397105693817139, + -1.9346450567245483, + 0.3719192147254944, + -3.2495594024658203, + -0.795499324798584, + 5.946727275848389, + 3.205784559249878, + 0.7256205081939697, + -3.072148561477661, + -0.491173654794693, + 0.6813629865646362, + -0.1244966983795166, + 2.186033010482788, + 0.6711649298667908, + -0.6017636656761169, + -0.20003008842468262, + -2.8111839294433594, + -0.3215005397796631, + -2.832754135131836, + -4.6112542152404785, + 2.2903223037719727, + -1.1747410297393799, + -1.8066715002059937, + 6.339362144470215, + -1.2041757106781006, + -2.950697660446167, + 0.377124547958374, + -2.7634170055389404, + -6.426777362823486, + -1.8473432064056396, + 2.4877755641937256, + -2.2075319290161133, + -12.015815734863281, + 2.5432608127593994, + 12.359371185302734, + -2.828545331954956, + -4.740703105926514, + 6.715027809143066, + -2.6200108528137207, + 0.974521815776825, + 2.652766466140747, + -3.857794761657715, + -6.6472954750061035, + 4.4971771240234375, + 0.2450118064880371, + -2.61240816116333, + 1.761840581893921, + 3.0236940383911133, + 8.283529281616211, + 4.514266490936279, + -0.5321707725524902, + -0.7436621785163879, + 4.217845439910889, + -3.402881622314453, + -0.5834509134292603, + -2.4292311668395996, + -3.802029609680176, + 1.1859943866729736, + 2.9347031116485596, + 0.5376740097999573, + 1.5520739555358887, + 2.327040195465088, + -1.8518857955932617, + -5.099016189575195, + 1.210162878036499, + 2.3432488441467285, + -1.8841534852981567, + -2.256446361541748, + -1.6170883178710938, + 2.1345207691192627, + 9.692888259887695, + 4.9070048332214355, + -0.07515710592269897, + 4.802481651306152, + -1.9307345151901245, + 0.8170053362846375, + -0.19599825143814087, + 1.2400883436203003, + 0.7158763408660889, + -1.5668182373046875, + 2.073760986328125, + 8.468924522399902, + -2.5078208446502686, + -0.7658565044403076, + -1.5605055093765259, + -1.6836802959442139, + 5.151935577392578, + 2.1552987098693848, + -8.175868034362793, + -0.6463751792907715, + -3.2585909366607666, + 1.335138201713562, + 3.665086507797241, + 4.282098293304443, + 4.491922855377197, + -0.44822824001312256, + 2.089561939239502, + 0.5739403367042542, + -1.9794046878814697, + 1.2697575092315674, + 0.04409933090209961, + 1.8853507041931152, + 0.7237191796302795, + 1.1202152967453003, + -3.0174684524536133, + -1.459180474281311, + -0.15261578559875488, + 0.826005220413208, + -0.2541237473487854, + 4.411502838134766, + -0.8151229619979858, + 0.6070472002029419, + -3.782956600189209, + -4.812122821807861, + 5.937448501586914, + -1.3778908252716064, + 3.1417291164398193, + -8.127114295959473, + -3.394127130508423, + 5.626847743988037, + 17.244670867919922, + -9.458842277526855, + 6.2154154777526855, + 8.067989349365234, + -0.19556117057800293, + 0.9439098834991455, + 3.168877601623535, + -2.7790346145629883, + 0.04937022924423218, + -1.343871831893921, + -1.4957585334777832, + -2.7678909301757812, + -5.414901256561279, + 4.608016490936279, + -2.704296588897705, + 7.936920642852783, + -3.261754035949707, + 2.4149367809295654, + 3.2985448837280273, + -1.358214020729065, + -1.7124346494674683, + 0.30028384923934937, + -9.192699432373047, + 0.6716154217720032, + -0.4045759439468384, + -5.075465202331543, + 2.367424488067627, + 9.834797859191895, + 11.84496784210205, + 6.447323322296143, + 1.4407541751861572, + 1.278287410736084, + 3.682793617248535, + -1.8016064167022705, + -0.38590651750564575, + -1.6731816530227661, + 0.7532365322113037, + 3.6235101222991943, + 7.480495452880859, + -11.154899597167969, + 0.7440191507339478, + -3.5038747787475586, + 0.6714820861816406, + 1.5737265348434448, + 0.42270368337631226, + 1.6545116901397705, + -1.0789399147033691, + -7.139471530914307, + 4.93641996383667, + -9.234392166137695, + -2.555361747741699, + 1.0924174785614014, + -5.109438896179199, + 3.4654226303100586, + -4.880099296569824, + 2.7178194522857666, + -4.366686820983887, + 1.0241210460662842, + 3.558379650115967, + 5.433889389038086, + -14.549901008605957, + 1.7405375242233276, + -5.5242791175842285, + 1.6097548007965088, + -1.3562438488006592, + 1.1191200017929077, + -3.7614450454711914, + 3.8761258125305176, + 2.594254970550537, + 0.7564976215362549, + 5.045311450958252, + -21.60763931274414, + 0.7277077436447144, + 0.20929288864135742, + -1.3628108501434326, + -2.1228644847869873, + -1.2928698062896729, + -1.8468096256256104, + -7.893989562988281, + 1.8759955167770386, + -2.9011499881744385, + 0.5611358880996704, + 0.21251684427261353, + 2.2733826637268066, + 0.5071912407875061, + -1.56324303150177, + 13.275252342224121, + 2.6426923274993896, + -3.063775062561035, + -1.0420305728912354, + 3.691047430038452, + -4.900828838348389, + 2.5872347354888916, + -3.4287586212158203, + 4.222568511962891, + -8.232416152954102, + -4.232073783874512, + 2.4754395484924316, + -0.9606773853302002, + -9.610599517822266, + -1.1208248138427734, + -0.2787819504737854, + -0.6382995843887329, + -5.200772285461426, + -0.3180835247039795, + 1.3762677907943726, + 0.5063621401786804, + -0.8891891241073608, + -5.166005611419678, + -8.303056716918945, + 20.99955940246582, + 3.8883116245269775, + -1.0341516733169556, + -0.5538355112075806, + -0.08855721354484558, + 5.242003917694092, + -3.282625198364258, + -2.676675796508789, + -3.7377426624298096, + 1.1067465543746948, + -1.4645278453826904, + -1.996809959411621, + 3.5306239128112793, + 2.870676279067993, + -1.3172147274017334, + 5.062389373779297, + -4.792349338531494, + 0.4776303768157959, + 2.501258373260498, + 1.1776330471038818, + 5.696943283081055, + 1.3763573169708252, + -2.4765782356262207, + -6.802493095397949, + 6.286166667938232, + -1.6870280504226685, + -1.7165900468826294, + -1.7369287014007568, + 1.2628604173660278, + 4.995662212371826, + 3.0477712154388428, + 2.306978702545166, + -7.511093616485596, + -0.6526774168014526, + 1.4610276222229004, + 0.07380692660808563, + -1.5199179649353027, + 1.5069776773452759, + 0.22057181596755981, + -1.5017176866531372, + 0.20859088003635406, + 1.712782859802246, + 1.8355321884155273, + -0.6805421113967896, + 4.650825500488281, + -3.817756175994873, + 4.1204376220703125, + -0.25594431161880493, + -0.3022512197494507, + -3.984147310256958, + 3.030229091644287, + -0.8279597759246826, + 1.8684409856796265, + 5.651633262634277, + -2.686866044998169, + 0.5995235443115234, + 2.6905605792999268, + -0.6446930170059204, + -3.7075977325439453, + -5.464391231536865, + 0.3202362060546875, + -1.2864904403686523, + -1.6968917846679688, + 4.2267069816589355, + -0.42405813932418823, + -0.7905040979385376, + -6.2092814445495605, + 4.391265392303467, + -2.8625402450561523, + -3.4937355518341064, + -1.8921626806259155, + -3.9242138862609863, + 19.771303176879883, + 0.20325344800949097, + 8.647387504577637, + 2.164339542388916, + 4.153436183929443, + 2.1527156829833984, + -0.6579232215881348, + -2.109875440597534, + -1.5976417064666748, + -1.3571385145187378, + -1.7035971879959106, + -5.038976192474365, + -7.877935409545898, + 1.4986295700073242, + 1.9092214107513428, + 3.74358868598938, + 1.0968952178955078, + 1.9852204322814941, + -1.2241460084915161, + -1.7768241167068481, + 17.23515510559082, + 0.05356167256832123, + 4.4608049392700195, + 0.8898270726203918, + 1.9891068935394287, + -4.5992279052734375, + 0.8450642824172974, + -0.6490482687950134, + -2.2563469409942627, + 0.2180822789669037, + -5.354173183441162, + -3.4627225399017334, + 1.410240888595581, + 0.4086558222770691, + 0.46182048320770264, + 1.1242598295211792, + 7.007196426391602, + -0.13652318716049194, + 4.429272651672363, + 2.1954050064086914, + 11.771960258483887, + -13.648208618164062, + 0.6691153049468994, + -2.741015911102295, + -2.158550262451172, + -0.20267999172210693, + -2.7813596725463867, + -1.340625524520874, + 0.6199860572814941, + -11.794349670410156, + -4.038376331329346, + 7.228828430175781, + -2.524364471435547, + 2.639920711517334, + 4.103435516357422, + -0.6908283233642578, + -0.5989460945129395, + 1.8333945274353027, + 3.0407280921936035, + -0.09629224985837936, + -0.7786238193511963, + -1.5979022979736328, + 2.6573739051818848, + -5.855025291442871, + -2.9137558937072754, + 1.2185090780258179, + -3.141472101211548, + -2.5368926525115967, + -0.6276705861091614, + -3.285224199295044, + -1.251429796218872, + -1.3119347095489502, + -0.625966489315033, + -0.9004043340682983, + -3.6887245178222656, + 0.48129549622535706, + 1.4865374565124512, + -2.2429425716400146, + -3.6455485820770264, + -1.4859899282455444, + 2.0968244075775146, + 0.10140156745910645, + -6.862244129180908, + 0.30866363644599915, + 3.582512855529785, + -3.3030927181243896, + 2.866407871246338, + 3.2896554470062256, + 0.8752890229225159, + 1.7805001735687256, + 4.73569393157959, + 1.4642709493637085, + -2.753542184829712, + 1.434542179107666, + -5.681426048278809, + -0.18679118156433105, + -11.06063175201416, + 6.135220050811768, + 0.3477632999420166, + -1.9420868158340454, + 6.271264553070068, + -0.9693340063095093, + 1.1860679388046265, + -2.532174587249756, + -4.591341018676758, + -2.2738535404205322, + -0.6845061779022217, + 4.350368499755859, + -0.4165898561477661, + -3.9914915561676025, + -3.3775577545166016, + 1.9486424922943115, + -2.387861490249634, + -0.548060953617096, + 1.0643481016159058, + 4.604584693908691, + -0.3842041492462158, + 4.460665702819824, + -0.3188517987728119, + -2.231097936630249 + ] + }, + "20": { + "gender": "男性", + "describe": "天生男低音", + "tensor": [ + 1.1422345638275146, + 3.1253061294555664, + 9.48122501373291, + 6.99623441696167, + -0.5803884267807007, + 0.8781707882881165, + 17.82193946838379, + 1.3916842937469482, + 0.7640506029129028, + -21.112688064575195, + 0.31209704279899597, + 3.4465138912200928, + 2.359708786010742, + 0.08683424443006516, + 0.942940354347229, + -2.084155321121216, + 4.347898006439209, + -3.1701786518096924, + -1.7983012199401855, + -0.17346957325935364, + -13.27969741821289, + -7.442112445831299, + -0.6012988090515137, + 16.869956970214844, + -0.34110113978385925, + 0.4769866466522217, + -15.339255332946777, + -2.371365547180176, + 2.022775650024414, + -0.47023916244506836, + 1.9731554985046387, + 2.220592975616455, + 1.0742483139038086, + -2.4670329093933105, + -1.027040719985962, + 2.878852367401123, + 0.43100833892822266, + -5.237850666046143, + 5.9112772941589355, + -1.873354434967041, + -3.3871190547943115, + 0.38958120346069336, + 1.645865559577942, + 3.7896058559417725, + -2.642056703567505, + 2.392529010772705, + 4.026291370391846, + 2.4182257652282715, + 2.4176523685455322, + 0.45602893829345703, + 0.9135602116584778, + 0.08732330799102783, + 8.327291488647461, + 4.341073989868164, + -2.0636634826660156, + -7.53337287902832, + -4.046841144561768, + 0.8684815168380737, + 0.7845110297203064, + 2.7833640575408936, + -1.452959418296814, + -2.7549703121185303, + 5.154571056365967, + -3.881686210632324, + 0.4256874918937683, + -1.7943006753921509, + -3.9682352542877197, + 8.59843635559082, + 2.7755398750305176, + 3.9208664894104004, + 4.741375923156738, + -4.210660934448242, + -0.20673444867134094, + -1.6844589710235596, + 18.391035079956055, + -0.6615670919418335, + 0.21366655826568604, + -6.973203659057617, + 2.1256370544433594, + -0.19880551099777222, + 5.076749324798584, + -0.3080404996871948, + -0.16297513246536255, + 2.0858051776885986, + 1.9869394302368164, + -0.07513707876205444, + 2.018754482269287, + -1.5228606462478638, + 0.7246379852294922, + -2.2000370025634766, + -4.558694839477539, + -3.5555152893066406, + 0.02188432216644287, + -2.4043025970458984, + 7.01837158203125, + -13.526012420654297, + 5.711414337158203, + -1.9945082664489746, + -0.7768194675445557, + 8.066743850708008, + -5.307071685791016, + -0.46910905838012695, + -5.221742153167725, + 0.17140722274780273, + -0.021468520164489746, + 1.8142184019088745, + -0.9509315490722656, + -0.7341258525848389, + 20.8797607421875, + -2.591278314590454, + 3.0332963466644287, + -5.057563304901123, + -1.7435853481292725, + -1.0579438209533691, + 0.5233656167984009, + 1.2929778099060059, + 1.6254185438156128, + -1.2355444431304932, + 8.211034774780273, + -2.7705767154693604, + 0.3168318271636963, + -0.7169066667556763, + -3.3891804218292236, + 8.05936050415039, + 6.869917392730713, + -0.8997712135314941, + 3.4565606117248535, + 1.2940552234649658, + -3.9571003913879395, + -3.217725992202759, + -0.6357660293579102, + -3.2013463973999023, + -2.856346368789673, + -0.13842874765396118, + 2.9335169792175293, + 1.6488250494003296, + -8.242773056030273, + -3.5941977500915527, + 12.947256088256836, + 0.5172469615936279, + 0.2817617654800415, + 0.774144172668457, + -0.348345011472702, + -1.701540470123291, + 0.52991783618927, + -8.741880416870117, + 1.4245514869689941, + -2.712345838546753, + 0.2193235158920288, + -4.411097049713135, + 1.2675278186798096, + -0.6163823008537292, + -9.028440475463867, + 2.5083680152893066, + 8.670316696166992, + 0.423958957195282, + 11.483574867248535, + -1.5274819135665894, + -3.166837215423584, + -0.45536625385284424, + 0.5603054761886597, + -0.8611711263656616, + 1.8042943477630615, + 2.5305752754211426, + -1.1957193613052368, + 3.8426713943481445, + -2.145815849304199, + -3.5634615421295166, + 5.455188751220703, + -2.1080870628356934, + -3.784579277038574, + 1.636554479598999, + 15.911603927612305, + 0.41549670696258545, + 2.823375701904297, + -1.8298873901367188, + 2.035327434539795, + 0.020174548029899597, + -2.203540086746216, + -3.0821988582611084, + -0.5929409265518188, + -1.2981467247009277, + 8.702690124511719, + -2.3481054306030273, + 0.21250760555267334, + 1.6390974521636963, + 5.377687454223633, + 1.7357341051101685, + -2.149881601333618, + 1.6016643047332764, + -1.8580296039581299, + 2.277855157852173, + 6.5994954109191895, + -0.07885944843292236, + 1.0231692790985107, + -14.513258934020996, + -4.566107749938965, + -7.5769429206848145, + 0.35688912868499756, + 3.964756965637207, + 3.2947139739990234, + 4.0125932693481445, + 0.45178452134132385, + 5.665077209472656, + -6.549404144287109, + 0.7165684700012207, + -0.981456995010376, + 8.561260223388672, + -12.061710357666016, + -0.16947034001350403, + 0.4775225520133972, + 4.15662956237793, + -0.03902679681777954, + 2.9729342460632324, + 2.7357983589172363, + -0.7179281711578369, + -2.042585849761963, + -2.9561281204223633, + 1.0142747163772583, + 6.735131740570068, + 3.2152936458587646, + -11.570582389831543, + 6.3686347007751465, + 5.922144889831543, + 3.799043655395508, + -1.790452241897583, + 6.956618785858154, + 0.4210205376148224, + 0.1388784646987915, + 1.3552358150482178, + -0.9606946706771851, + -3.4695889949798584, + 3.0144917964935303, + -4.378329277038574, + -7.043178558349609, + 1.145963191986084, + 0.6159329414367676, + -1.6296875476837158, + 1.9675483703613281, + -1.251720905303955, + 0.36848533153533936, + -0.8933074474334717, + -0.7401866912841797, + -0.7916622161865234, + 6.077574729919434, + -1.5380990505218506, + -1.2190699577331543, + 11.478218078613281, + 8.046136856079102, + -1.2786508798599243, + 3.0719118118286133, + 1.8005129098892212, + -1.4524954557418823, + -0.9068748950958252, + -14.461224555969238, + 3.9412994384765625, + 5.822094917297363, + 5.830162525177002, + -0.44627130031585693, + -1.634418249130249, + -1.9905962944030762, + -0.8661664724349976, + -3.5795586109161377, + 1.8933802843093872, + -0.02811455726623535, + 0.6915612816810608, + -0.2292250096797943, + -0.4582676887512207, + 2.2965290546417236, + 0.08208488672971725, + 0.20456472039222717, + -1.7791550159454346, + 3.0093674659729004, + 1.3609130382537842, + -3.729362964630127, + -1.944401741027832, + 0.7532548308372498, + 0.3729913532733917, + 0.7563329935073853, + -0.5201548337936401, + -1.4943950176239014, + -3.617731809616089, + 2.626446485519409, + -1.4893958568572998, + -0.5953387022018433, + -0.8936119079589844, + -4.425902366638184, + -0.6112406253814697, + 1.7061452865600586, + -4.671754837036133, + -1.397645354270935, + 1.016841173171997, + 2.683591365814209, + -2.578383207321167, + 4.103372573852539, + 4.485023498535156, + 1.2564700841903687, + -1.6093621253967285, + 5.034762859344482, + -1.28713858127594, + -2.2461299896240234, + -4.243169784545898, + 2.384857177734375, + -2.738656520843506, + 2.7098753452301025, + -1.918829083442688, + 5.59781551361084, + -0.4323258399963379, + 0.07424604892730713, + -1.6642279624938965, + -1.9086230993270874, + 0.30292046070098877, + 6.284842491149902, + -2.9139175415039062, + 0.3183957636356354, + 4.222139835357666, + -3.7067394256591797, + 4.662163257598877, + -3.235947370529175, + -0.5627880096435547, + 0.8863418698310852, + -0.059836506843566895, + -3.4864792823791504, + 0.022775501012802124, + 2.3593358993530273, + 12.600939750671387, + 2.754624843597412, + -10.76608943939209, + -1.3013522624969482, + -4.0352630615234375, + -0.15919077396392822, + -13.137438774108887, + -1.0692662000656128, + -4.58988094329834, + -3.84798526763916, + 1.823479175567627, + 4.735141754150391, + -6.769412040710449, + -3.2172861099243164, + 2.72493052482605, + 1.0115876197814941, + -3.1998038291931152, + 0.07235187292098999, + -1.4399621486663818, + 1.7632322311401367, + -14.823419570922852, + -1.1326000690460205, + -1.5945699214935303, + -2.828627109527588, + 1.2930809259414673, + -4.7399749755859375, + -3.753988742828369, + -3.331566333770752, + 0.6511744856834412, + 0.5745084285736084, + 0.9473018646240234, + -0.8978027701377869, + -4.2529144287109375, + -3.4996767044067383, + 3.2404117584228516, + -0.8564842939376831, + -0.14522242546081543, + -4.438013076782227, + 3.0104994773864746, + -4.592026233673096, + -14.675701141357422, + -0.5690795183181763, + -8.81341552734375, + -0.3251325488090515, + 9.965896606445312, + -2.1898701190948486, + -1.3466683626174927, + 2.3968052864074707, + -3.273757219314575, + 0.034859079867601395, + -1.6093072891235352, + -4.3957319259643555, + -0.5294827222824097, + 3.936385154724121, + 5.323150634765625, + 4.3435893058776855, + -0.7278711795806885, + -6.2168288230896, + 7.015981674194336, + 1.802578330039978, + -9.459769248962402, + 0.9338271617889404, + -4.338468551635742, + -4.10213565826416, + -2.1221275329589844, + 0.7521007657051086, + -1.7903578281402588, + -5.589484691619873, + 2.535001516342163, + 1.0565565824508667, + -2.8765411376953125, + 3.3831026554107666, + -6.332437515258789, + -1.9574593305587769, + -0.8856866359710693, + -1.341489553451538, + -4.093685150146484, + -1.5232775211334229, + 0.3065190017223358, + -3.5090208053588867, + 0.23769278824329376, + -1.3570849895477295, + 2.756533622741699, + 14.457645416259766, + -16.866626739501953, + -2.435746192932129, + -3.2404298782348633, + -1.3121485710144043, + -1.3721976280212402, + -2.8153936862945557, + 1.7438266277313232, + 5.812276363372803, + 2.196842908859253, + 1.431020736694336, + 2.267712116241455, + -0.9818177223205566, + -3.609621524810791, + 1.0793331861495972, + -2.1307592391967773, + -2.338315486907959, + 6.538304328918457, + 3.979598045349121, + 16.73792266845703, + 0.7235721349716187, + 1.8263448476791382, + 2.3061106204986572, + -2.2310547828674316, + -5.624956130981445, + 1.3558192253112793, + -5.29164981842041, + -8.752264022827148, + 2.4527440071105957, + 0.14602676033973694, + -2.897493600845337, + 6.230271816253662, + 3.3408050537109375, + 0.06350931525230408, + 0.05198526382446289, + 4.176715850830078, + -1.938622236251831, + -0.7335817813873291, + 1.0366944074630737, + 7.110459327697754, + 3.423560380935669, + 1.1084086894989014, + 3.540097236633301, + 1.4997152090072632, + 1.010240077972412, + 3.716374397277832, + 0.09978881478309631, + 1.0986047983169556, + -3.2196438312530518, + 1.8698495626449585, + 1.540389060974121, + -0.37764811515808105, + -0.04581117630004883, + 0.7677980065345764, + 1.058289647102356, + -2.442096710205078, + -0.7550542950630188, + 0.04983261227607727, + 0.9364385604858398, + -7.1323652267456055, + -0.09993976354598999, + 9.792337417602539, + -6.042655944824219, + 0.7268037796020508, + 1.3479387760162354, + 5.1489386558532715, + 0.2996918559074402, + -2.3101749420166016, + -0.6043462157249451, + 5.174855709075928, + 4.915990352630615, + 3.6823110580444336, + 0.8762111663818359, + 2.176445722579956, + 2.268291711807251, + -3.8494906425476074, + 2.773430109024048, + 2.4330735206604004, + 3.8993911743164062, + 3.0303568840026855, + 0.4297076463699341, + -7.881763458251953, + 0.4071595072746277, + 0.4442734718322754, + 0.3520491123199463, + -1.231210470199585, + 3.761052131652832, + -2.457430124282837, + 1.3673651218414307, + -1.3231415748596191, + 0.5054214000701904, + -2.897071123123169, + 1.2820875644683838, + 0.892849326133728, + 1.7394752502441406, + 0.7320806384086609, + -2.86826753616333, + -4.0715460777282715, + 2.6153838634490967, + 2.5240225791931152, + -2.8409087657928467, + -4.368983268737793, + -0.27356624603271484, + 2.290605068206787, + -3.3075547218322754, + -2.4208877086639404, + 0.9205985069274902, + -4.556069374084473, + 3.1838862895965576, + 0.14281615614891052, + 5.2305402755737305, + -3.2064995765686035, + -10.848127365112305, + 0.37296992540359497, + -4.947129726409912, + 1.9215960502624512, + -1.1935498714447021, + -3.9830880165100098, + 2.7042412757873535, + -0.4400228261947632, + -2.529237747192383, + -0.19874703884124756, + 1.9176905155181885, + -0.2618069648742676, + 0.5358541011810303, + -2.500004291534424, + -3.8993794918060303, + -3.719147205352783, + 0.867121696472168, + 25.366443634033203, + -1.8550167083740234, + 3.2365002632141113, + -0.5895843505859375, + -5.311489105224609, + 0.853973388671875, + -1.5940643548965454, + 15.491279602050781, + 0.6950990557670593, + -3.244919538497925, + 2.986887216567993, + -5.720912933349609, + -1.4400376081466675, + -0.0625443160533905, + 0.2753778100013733, + 2.379119634628296, + -3.6799826622009277, + -1.7340035438537598, + 3.41141939163208, + 5.399806022644043, + -1.5591058731079102, + -0.2362968921661377, + 0.2822346091270447, + 1.3827975988388062, + -10.13437271118164, + -0.23466384410858154, + 3.5367865562438965, + -1.6106646060943604, + 16.378664016723633, + -2.0796170234680176, + -0.6264050006866455, + 1.7006006240844727, + -0.7523077726364136, + -1.6881673336029053, + -0.9035481214523315, + 0.9167608022689819, + -7.223382949829102, + -1.7694205045700073, + -3.3687026500701904, + -8.39127254486084, + 2.376781702041626, + 0.5024576783180237, + 1.2258126735687256, + 3.1817030906677246, + 0.9495044946670532, + -5.519292831420898, + -2.7576122283935547, + 1.5019326210021973, + -0.21166467666625977, + 3.8085708618164062, + -8.266077041625977, + 1.5412856340408325, + 0.9251886606216431, + -0.3078084886074066, + -3.171250104904175, + 5.193244457244873, + 5.55286169052124, + 4.978695869445801, + -0.27681785821914673, + 2.61405348777771, + -3.1755824089050293, + -1.3425542116165161, + -1.253575325012207, + 0.09544771909713745, + 0.34609454870224, + -0.6426849365234375, + 2.722015619277954, + -1.5408954620361328, + 0.41972053050994873, + 6.244227886199951, + 0.9029651880264282, + 8.159160614013672, + -8.352729797363281, + -7.020003318786621, + 3.345733165740967, + -2.399233341217041, + 0.2580437660217285, + -2.1243202686309814, + 1.89903724193573, + 0.5051208734512329, + 6.789548873901367, + -0.88374263048172, + -0.0008320212364196777, + 2.1129302978515625, + -1.806157112121582, + -1.2908512353897095, + -1.9270298480987549, + 7.1385297775268555, + -0.8676068782806396, + 3.493849039077759, + 0.8517906665802002, + -5.485568523406982, + 0.6723995208740234, + -6.030586242675781, + 13.284900665283203, + 2.197506904602051, + -5.781806945800781, + 0.16687631607055664, + -1.779603362083435, + -6.031330108642578, + -2.6444382667541504, + -6.925746440887451, + -0.6933234333992004, + 5.657710552215576, + -0.6558390855789185, + 4.927364349365234, + -2.8018741607666016, + 3.213858127593994, + -7.901206970214844, + -0.6037620902061462, + -2.6489295959472656, + -3.9299378395080566, + 2.12448787689209, + 3.46665096282959, + -3.4377357959747314, + 0.22048109769821167, + -1.5089287757873535, + -3.071793556213379, + 4.892024040222168, + 5.935378074645996, + 1.4932055473327637, + 3.4150023460388184, + 0.6672515273094177, + 22.440279006958008, + -2.165860652923584, + -4.660141944885254, + 5.949837684631348, + -2.701833963394165, + -3.348262310028076, + 3.095869779586792, + 7.217742443084717, + 5.291020393371582, + -4.709521293640137, + 2.1717662811279297, + 2.809911012649536, + -4.5426788330078125, + 4.561713218688965, + 1.227150797843933, + -2.9237112998962402, + -5.159085750579834, + 0.6163530945777893, + -1.4856140613555908, + 1.3108152151107788, + -3.9148807525634766, + 2.2034363746643066, + -5.228351593017578, + -2.8024938106536865, + -2.0711374282836914, + 4.663891792297363, + 13.131617546081543, + 1.1816668510437012, + 5.246474266052246, + -8.570556640625, + -4.325846195220947, + 1.1392240524291992, + -2.16792893409729, + -0.4377598166465759, + -10.970913887023926, + -0.6396621465682983, + 12.292678833007812, + 10.433273315429688, + -2.690394878387451, + -9.9652099609375, + 1.6571310758590698, + 3.9012291431427, + -5.877903461456299, + 0.5933349132537842, + -6.583681583404541, + -3.4880518913269043, + -0.9837032556533813, + 0.21031391620635986, + 3.0994439125061035, + 1.9876967668533325, + 3.336182117462158, + -3.5515146255493164, + 4.226818084716797, + 0.48342734575271606, + 3.827305793762207, + -5.912415981292725, + 1.893583059310913, + 2.6026451587677, + -2.859652280807495, + 2.0479464530944824, + -2.9407858848571777, + 2.5461983680725098, + 0.535880446434021, + -1.3627173900604248, + -1.9718716144561768, + 1.8106571435928345, + 2.25295090675354, + -3.16792631149292, + -3.7889604568481445, + 0.8790997266769409, + 0.28311336040496826, + -1.9250352382659912, + -1.1119627952575684, + -2.2093305587768555, + -6.837936878204346, + -0.5160024762153625, + -1.318390130996704, + -6.707148551940918, + -1.4719362258911133, + 3.7354187965393066, + 0.6080763339996338, + -0.5382823348045349, + -1.6798150539398193, + -1.564620018005371, + -16.928680419921875, + 0.685999870300293, + -0.37166595458984375, + 0.6696211099624634, + 2.390150785446167, + -1.1158056259155273, + 5.639712810516357, + 0.3912495970726013, + 1.7056567668914795, + 2.2991464138031006, + 0.27689000964164734, + -0.7631064653396606, + 0.1764720380306244, + -2.8468613624572754, + -3.125681161880493, + 2.9289443492889404, + -0.24390879273414612, + -3.1781692504882812, + -0.29398760199546814, + -7.873046398162842, + 3.313267707824707, + 0.8952236771583557, + 3.1156866550445557, + 4.903496742248535 + ] + }, + "21": { + "gender": "男性", + "describe": "娘娘腔拉满了", + "tensor": [ + 4.0573883056640625, + -2.847012996673584, + 12.080885887145996, + -3.5577473640441895, + -0.6900649070739746, + -5.916432857513428, + -1.0840855836868286, + -0.6138935685157776, + -1.5781104564666748, + 1.5126019716262817, + -0.2588118314743042, + -9.725573539733887, + 1.1466625928878784, + -2.973443031311035, + -3.9328017234802246, + 1.0432260036468506, + 0.6376402378082275, + 2.3245599269866943, + 2.9496312141418457, + -2.5224101543426514, + 5.998023986816406, + -2.5373806953430176, + 3.968432664871216, + 38.521427154541016, + -2.8468077182769775, + -1.6956422328948975, + -8.147462844848633, + -15.02099895477295, + -0.707951545715332, + -4.052914142608643, + 4.668349266052246, + 0.12693339586257935, + -4.546305179595947, + -0.3881058096885681, + -0.5698854923248291, + 7.285943031311035, + -4.909542560577393, + 4.289723873138428, + -6.774801731109619, + -0.01441141963005066, + -2.0749728679656982, + 0.6075724363327026, + 3.3538193702697754, + -1.6437432765960693, + -18.792612075805664, + -0.6594898700714111, + -0.7822105288505554, + -3.261561870574951, + 1.7054691314697266, + -0.23330000042915344, + -0.34273964166641235, + -1.133653163909912, + -3.471959114074707, + 3.171534299850464, + 1.1752971410751343, + -0.2090139389038086, + -2.3350613117218018, + -0.4433247447013855, + 0.06424227356910706, + 1.3962233066558838, + 0.7434254884719849, + 0.7572295069694519, + 1.701089859008789, + 0.28977739810943604, + 3.390928030014038, + -1.2149443626403809, + 0.7017384767532349, + 2.1804051399230957, + 2.3468151092529297, + 0.35651904344558716, + -5.0228447914123535, + -0.04829299449920654, + -1.9723037481307983, + 1.3968909978866577, + 2.9481992721557617, + -2.235496759414673, + 8.101228713989258, + -2.001302719116211, + -1.8955374956130981, + -3.3303699493408203, + -0.4752699136734009, + -1.8123406171798706, + -2.2594895362854004, + 0.2694268226623535, + 1.433214783668518, + 3.2311460971832275, + -0.3254098892211914, + 2.6547064781188965, + -1.5840895175933838, + -1.9712969064712524, + 7.685735702514648, + -1.3032653331756592, + -0.598031759262085, + -5.779836654663086, + 4.759160995483398, + -4.453505039215088, + 1.2187087535858154, + -2.567152738571167, + -1.734805941581726, + 3.7359375953674316, + -1.747248888015747, + -3.995335578918457, + 0.7044503688812256, + 1.142078161239624, + 1.2401409149169922, + 1.7467015981674194, + 5.196653842926025, + -4.2526936531066895, + 7.221410751342773, + -2.495145797729492, + 0.5196121335029602, + 7.555557727813721, + -6.620299339294434, + -4.150820732116699, + -3.1085588932037354, + -4.254924297332764, + -1.377593755722046, + 2.1025125980377197, + 2.5500996112823486, + -1.183542013168335, + -5.473639965057373, + 1.8808082342147827, + -3.4487690925598145, + -1.129411220550537, + -8.167285919189453, + 0.02619081735610962, + 3.7035956382751465, + -1.0779070854187012, + -3.891864776611328, + -3.430079460144043, + 1.2550510168075562, + 4.3250226974487305, + -1.1655511856079102, + -1.5297327041625977, + 9.501424789428711, + 2.9501776695251465, + 2.836704730987549, + -3.0490970611572266, + -6.305488586425781, + 0.4478708505630493, + 0.7009425163269043, + -0.7977332472801208, + 1.2155817747116089, + -4.568710803985596, + -0.6779505610466003, + 5.425411701202393, + 3.756021499633789, + -9.282454490661621, + 0.9942910671234131, + -7.013018608093262, + 2.798773765563965, + 2.2130959033966064, + -0.13479366898536682, + -2.553739070892334, + -1.9213175773620605, + 0.5972416996955872, + -12.094761848449707, + -9.756503105163574, + -2.0996294021606445, + 5.0872931480407715, + -3.556210517883301, + -2.616410493850708, + 1.6201092004776, + -20.741411209106445, + 3.357656240463257, + 1.4936633110046387, + 1.3098212480545044, + -1.668081283569336, + 3.284518003463745, + -7.120466709136963, + 3.2124359607696533, + 1.4390491247177124, + 2.044107437133789, + -0.9679163694381714, + 1.575822114944458, + 1.6457613706588745, + -3.170727491378784, + 2.7380564212799072, + 1.120905876159668, + -5.478900909423828, + -1.5255130529403687, + 3.5865137577056885, + 1.5970940589904785, + -3.957606315612793, + -4.7259368896484375, + -3.8415026664733887, + -2.9144341945648193, + -2.2342793941497803, + 0.6519806385040283, + -0.3548358678817749, + 1.7056578397750854, + -0.584641695022583, + 3.703596830368042, + -1.9650503396987915, + -0.8642780184745789, + -1.9071903228759766, + -2.040191173553467, + -1.2444701194763184, + -3.6764984130859375, + 4.4225592613220215, + -7.033863544464111, + -2.8676061630249023, + 1.5001872777938843, + -2.9876558780670166, + -4.061548233032227, + 1.7865445613861084, + 2.3104138374328613, + 10.178070068359375, + 1.814745545387268, + -2.6983883380889893, + 0.3073866665363312, + 0.16439980268478394, + -2.9536595344543457, + 2.8346657752990723, + -4.7928466796875, + -0.9975916147232056, + 1.233288288116455, + 12.377469062805176, + 3.4077303409576416, + 13.741329193115234, + -4.444367408752441, + -3.726301670074463, + 1.6957676410675049, + 7.8632636070251465, + 1.9728387594223022, + -0.9794943332672119, + -3.5465023517608643, + 1.0183252096176147, + 0.0038285255432128906, + 2.987309217453003, + 4.971614360809326, + -0.3189781904220581, + -1.3500467538833618, + -3.9187424182891846, + 0.883740246295929, + 2.8592896461486816, + 5.611452102661133, + 2.832379102706909, + -1.0823538303375244, + -2.5203616619110107, + -3.5562407970428467, + 0.9068713188171387, + 3.329843521118164, + -3.4799439907073975, + -0.42914915084838867, + 2.950122594833374, + -6.418532848358154, + -4.2828240394592285, + 0.919001579284668, + 1.9548646211624146, + -0.27375221252441406, + -2.7076566219329834, + 0.44009929895401, + -1.111808180809021, + -7.9083099365234375, + 3.0933401584625244, + -2.9073567390441895, + -9.356757164001465, + 0.24721759557724, + -1.8499876260757446, + 1.1590461730957031, + 1.0951467752456665, + -3.509678602218628, + -4.831404685974121, + 1.0042438507080078, + 0.8243922591209412, + 0.730589747428894, + -1.5494766235351562, + 3.4683759212493896, + -2.43255352973938, + -3.9808692932128906, + 10.724167823791504, + 0.5267167091369629, + 1.6610805988311768, + 2.234053611755371, + -4.675370216369629, + 7.887897491455078, + -0.5183501839637756, + 1.4904999732971191, + -3.873027801513672, + -2.0056662559509277, + -3.6185054779052734, + 2.143105983734131, + 2.0720393657684326, + 8.365415573120117, + -1.3761893510818481, + -1.0683363676071167, + 1.5178279876708984, + 8.666876792907715, + -0.10735523700714111, + 2.88448166847229, + 1.2139263153076172, + 1.0579077005386353, + 0.41182976961135864, + 0.6812295913696289, + -8.044034004211426, + 3.0879480838775635, + 1.1413867473602295, + -4.930258750915527, + -1.1106688976287842, + 2.9299545288085938, + 0.9399616718292236, + -5.610941410064697, + -5.431467533111572, + -1.1385334730148315, + -0.4136368930339813, + 5.259951114654541, + -4.175689697265625, + 1.7598133087158203, + 1.874670386314392, + 2.120823621749878, + 4.719783306121826, + 0.35464024543762207, + -5.280337810516357, + 1.9562132358551025, + 0.06771236658096313, + -0.08613836765289307, + 3.21600079536438, + 2.93003511428833, + 1.461089015007019, + -0.45569902658462524, + -2.2985517978668213, + 0.33016693592071533, + 3.414360284805298, + -1.2574775218963623, + 2.3203952312469482, + 4.460083961486816, + 17.30582046508789, + 0.48290908336639404, + -3.3685755729675293, + -1.248852014541626, + -23.679800033569336, + -1.6698224544525146, + -8.77668571472168, + 2.4968960285186768, + 1.698641061782837, + -18.0628604888916, + -7.975468635559082, + 8.907093048095703, + 1.7565793991088867, + -2.366894483566284, + 0.462566077709198, + 3.3715713024139404, + -3.8951873779296875, + 2.079404830932617, + -12.761170387268066, + -3.0477607250213623, + -1.5722140073776245, + 1.5693612098693848, + 2.919004440307617, + -3.0355710983276367, + -0.2857401371002197, + 4.937899589538574, + -0.30138349533081055, + -1.1440465450286865, + 0.6828842163085938, + 1.726776123046875, + 1.2194292545318604, + 2.5894081592559814, + 0.4322049617767334, + 1.48018479347229, + 1.6831505298614502, + -39.49768829345703, + 1.5069503784179688, + -1.9881677627563477, + -7.634069919586182, + 2.1604623794555664, + -0.39964592456817627, + -1.3185429573059082, + 3.597777843475342, + 2.3643388748168945, + 0.17673684656620026, + -0.1881522387266159, + 0.7460322380065918, + 0.9960561394691467, + 0.03735572099685669, + -2.1851389408111572, + -0.2159135639667511, + 11.149611473083496, + -4.057538986206055, + -12.424016952514648, + 0.27488526701927185, + 3.1594104766845703, + -6.927217483520508, + 3.6035499572753906, + 0.17399156093597412, + 4.683614730834961, + 10.634138107299805, + -0.10934674739837646, + 0.85736083984375, + 3.107731580734253, + -4.279073238372803, + 0.3575592339038849, + -1.0117864608764648, + 4.351432800292969, + -2.054204225540161, + 2.7916383743286133, + -2.9886975288391113, + -7.903702259063721, + 0.7383261919021606, + 3.278202533721924, + -2.629669427871704, + -3.2212181091308594, + 1.3772011995315552, + -14.27606201171875, + 1.2931431531906128, + 2.2782435417175293, + 3.5250234603881836, + 13.390892028808594, + 2.0476784706115723, + 1.563949704170227, + 3.5000462532043457, + -10.921744346618652, + 3.8046953678131104, + 1.2633031606674194, + 0.5425972938537598, + -0.8651496171951294, + -2.1341140270233154, + -0.7341309785842896, + -2.79356050491333, + -2.4942116737365723, + 6.145895481109619, + 0.976033627986908, + -1.6178596019744873, + -3.7067384719848633, + -5.368053913116455, + 1.8844389915466309, + 14.014699935913086, + 2.1109862327575684, + 1.6350138187408447, + -2.2694883346557617, + -0.2652987837791443, + -0.6692294478416443, + 2.582683563232422, + 0.9851434230804443, + -3.00386643409729, + -1.4389889240264893, + -3.073838233947754, + 0.3235073685646057, + 0.8515517711639404, + 1.2777040004730225, + 2.86370587348938, + 0.22138166427612305, + 1.3285397291183472, + -0.8845694661140442, + 2.9049062728881836, + 7.887019634246826, + 1.5551564693450928, + -2.334218740463257, + -0.2210066318511963, + 1.175920009613037, + -2.6924617290496826, + 5.505898475646973, + -0.19170427322387695, + -0.395965576171875, + 2.842151641845703, + -1.7567251920700073, + 0.02414494752883911, + -1.8362245559692383, + 1.9735419750213623, + 5.57155704498291, + -5.3711700439453125, + 0.8121740818023682, + -10.25963020324707, + -0.8556584119796753, + -1.2676935195922852, + 4.238034248352051, + -2.68183970451355, + -4.591799736022949, + -1.7688021659851074, + -0.658028781414032, + 10.149675369262695, + 0.8625582456588745, + 2.677244186401367, + -2.50486159324646, + 1.0455251932144165, + -1.0671831369400024, + 13.650484085083008, + -3.154083013534546, + 4.661870002746582, + -4.748471260070801, + 3.746671676635742, + 2.4729623794555664, + -1.0863804817199707, + 3.5283820629119873, + 0.4833904802799225, + -2.362114667892456, + 5.9484686851501465, + -6.564587116241455, + -3.6291465759277344, + 0.5120921730995178, + 2.190638542175293, + 6.903444290161133, + -2.7818994522094727, + -16.08409309387207, + 1.4707310199737549, + -1.7847099304199219, + 2.679257869720459, + 1.5375030040740967, + 0.8498413562774658, + -1.274417519569397, + 3.87357759475708, + -1.5938210487365723, + -1.4158021211624146, + 3.3227009773254395, + -10.779817581176758, + 2.6931726932525635, + -2.699845314025879, + -0.2011350691318512, + 6.543580532073975, + 2.9197371006011963, + 0.26140108704566956, + -21.201719284057617, + 5.482584476470947, + -2.859482526779175, + -2.740318775177002, + -1.9873836040496826, + 1.649811029434204, + -1.9266738891601562, + 4.534843921661377, + 0.7754411697387695, + 0.4145517945289612, + -4.326169967651367, + 0.9990083575248718, + 0.041731834411621094, + 2.623345136642456, + 2.5773673057556152, + -2.979231595993042, + -1.282644510269165, + -0.5225266218185425, + -1.7830147743225098, + 4.450987339019775, + -0.8985135555267334, + 2.872941017150879, + 0.9944270849227905, + -1.5317834615707397, + -1.5524822473526, + 7.012804985046387, + -3.538146495819092, + -3.0895800590515137, + 4.432219505310059, + -3.78707218170166, + 4.121713161468506, + -1.3325262069702148, + -22.50864601135254, + -0.37156403064727783, + 7.355953216552734, + -1.9397094249725342, + 4.638877868652344, + 1.2439650297164917, + 0.8532619476318359, + -0.0730595514178276, + 7.2430830001831055, + 5.60895299911499, + -7.326772212982178, + -3.819131851196289, + -1.356672763824463, + 0.9359371662139893, + -0.12579238414764404, + -0.5349870920181274, + -3.7369818687438965, + -10.14947509765625, + -2.047804832458496, + 6.73292875289917, + -0.7083714008331299, + -4.497408866882324, + 1.147573709487915, + -0.8740519285202026, + 6.952254772186279, + 2.1996991634368896, + -4.6520538330078125, + 2.8973050117492676, + -1.1679872274398804, + -8.852010726928711, + -4.302536964416504, + 2.0288314819335938, + -10.85711669921875, + 1.79718816280365, + -1.41891610622406, + 0.962893009185791, + -2.5269579887390137, + -4.600271701812744, + -7.532928466796875, + -1.3380147218704224, + -0.1514081358909607, + 6.762960910797119, + -5.069427013397217, + -5.456387519836426, + 1.0601806640625, + -0.6272229552268982, + -1.304661512374878, + 0.5651161670684814, + -6.735098361968994, + 2.1412930488586426, + 0.04280376434326172, + -4.391609191894531, + 4.942668437957764, + 0.19826702773571014, + 1.6738916635513306, + 19.6274356842041, + -0.0031468868255615234, + -1.0156526565551758, + -1.6751348972320557, + 2.4329257011413574, + -1.205651879310608, + 3.4222793579101562, + 1.950697422027588, + 1.2181354761123657, + 9.228462219238281, + 0.7609922885894775, + -3.706735372543335, + 1.346966028213501, + 1.6053173542022705, + 5.4781365394592285, + -0.7009719610214233, + -2.9245903491973877, + -2.6591029167175293, + 3.014291524887085, + 1.919215440750122, + -6.00373649597168, + -0.67946457862854, + -3.4876348972320557, + -1.3393524885177612, + 5.2595601081848145, + -0.09121671319007874, + -3.254389524459839, + 5.002943515777588, + 0.13740038871765137, + 2.3399746417999268, + -4.172815322875977, + 1.8929095268249512, + 1.080092191696167, + 1.21147882938385, + -2.9824581146240234, + -4.1438374519348145, + 1.0510371923446655, + -3.461463212966919, + -0.3332030475139618, + -7.74176549911499, + 3.7153241634368896, + -1.9202842712402344, + -0.35524892807006836, + -8.135757446289062, + -0.8584086298942566, + 2.648045539855957, + -8.999601364135742, + 0.2502421736717224, + -0.707952618598938, + 14.615640640258789, + -5.557154178619385, + -1.5501110553741455, + -2.576326370239258, + 5.907699108123779, + -7.101177215576172, + 2.7827272415161133, + 14.483031272888184, + 1.0625606775283813, + 2.2605319023132324, + 1.8161364793777466, + 1.7307765483856201, + -4.195438385009766, + -4.7330474853515625, + -5.035455703735352, + -0.5315972566604614, + 0.04084444046020508, + -3.119171619415283, + -0.5008687376976013, + 2.7446110248565674, + -21.498857498168945, + 1.778520941734314, + 0.16402333974838257, + -0.1498071402311325, + -5.990732669830322, + 2.474757194519043, + -1.217822790145874, + -0.09138220548629761, + 4.284200668334961, + -5.556239128112793, + -0.15528303384780884, + 5.3296284675598145, + 3.0880253314971924, + -1.0973820686340332, + -5.835656642913818, + 1.9608879089355469, + 1.4876207113265991, + 5.026136875152588, + 8.077081680297852, + 0.8178035020828247, + 1.5129728317260742, + 10.999115943908691, + 0.9768998622894287, + 2.055943012237549, + -5.857500076293945, + -1.8196700811386108, + 0.9740579128265381, + -5.838968276977539, + -2.0951943397521973, + 5.365877151489258, + -2.7591447830200195, + -8.715892791748047, + 2.8080832958221436, + 4.357048034667969, + 7.094388961791992, + -2.4593565464019775, + -6.948308944702148, + 2.8080782890319824, + -6.603957653045654, + -0.0007873773574829102, + 1.799286961555481, + 0.42851918935775757, + -2.68666934967041, + 1.342144250869751, + 1.8956224918365479, + 2.222661256790161, + -0.8203831911087036, + -2.929610013961792, + 0.10464659333229065, + -0.3123157322406769, + -2.9881229400634766, + -4.998048305511475, + -4.446372032165527, + -0.4736863970756531, + 2.566978931427002, + -0.6777527332305908, + 0.3653154969215393, + 3.688504219055176, + 0.2496582269668579, + -5.752253532409668, + 4.151463508605957, + -0.11557361483573914, + -4.88795280456543, + -3.041642189025879, + 2.438570976257324, + 2.231363534927368, + 0.2711794376373291, + -0.6887427568435669, + 6.1386308670043945, + 0.12399590015411377, + 0.82981276512146, + 3.1201834678649902, + -4.764712333679199, + 3.331813097000122, + -0.8668656349182129, + 6.423251628875732, + -19.51436996459961, + -2.4015555381774902, + -3.9357175827026367, + -3.0666801929473877, + 3.1790904998779297, + -2.8961033821105957, + 2.3366947174072266, + -3.9934439659118652, + 0.8392274379730225, + -3.1439120769500732, + -0.41224074363708496, + 0.17148923873901367, + -5.278916358947754, + -2.125614643096924, + 2.1819238662719727, + -1.0896189212799072, + -1.2458597421646118, + -2.38848876953125, + 0.017868399620056152, + 8.164647102355957, + -0.4876869320869446, + 1.8636902570724487, + 2.3251678943634033, + 1.4818570613861084 + ] + }, + "22": { + "gender": "女性", + "describe": "严肃女领导", + "tensor": [ + 1.9119923114776611, + -2.2702043056488037, + 6.581839561462402, + -4.133000373840332, + 4.394625663757324, + 3.726956605911255, + 1.2514128684997559, + -3.941317081451416, + -1.7063517570495605, + -2.188802719116211, + 3.8312184810638428, + 2.819915771484375, + 6.028093338012695, + 0.39055806398391724, + -5.99610710144043, + -0.9265533685684204, + 4.222101211547852, + -1.9242042303085327, + 7.098155975341797, + -1.7341047525405884, + 11.612133979797363, + -3.113661289215088, + 2.1816561222076416, + 7.279165744781494, + -0.5140821933746338, + -2.604006052017212, + -1.6791505813598633, + -12.4093017578125, + 3.5936853885650635, + -1.2237094640731812, + -2.6649835109710693, + -2.9093210697174072, + -1.606834888458252, + 3.717207670211792, + -3.7229714393615723, + -11.520551681518555, + -4.927212715148926, + 5.339270114898682, + -3.6372132301330566, + -0.5941119194030762, + 2.406963586807251, + -1.0510716438293457, + 7.813781261444092, + 0.49755069613456726, + -12.062763214111328, + 1.2481317520141602, + 3.126716136932373, + 3.879631757736206, + -5.441462516784668, + -1.3628244400024414, + 0.8198580741882324, + -2.266505718231201, + -3.0355536937713623, + 2.4154860973358154, + 3.2585833072662354, + 2.238278865814209, + 0.16478994488716125, + 2.596374273300171, + 0.07514886558055878, + -3.98825740814209, + -1.3402881622314453, + -1.606202483177185, + 7.724128246307373, + -3.5981979370117188, + -1.8928756713867188, + 0.11626975238323212, + 0.9603335857391357, + 7.995820999145508, + 2.934485673904419, + 1.6802384853363037, + -5.7186408042907715, + 2.8000669479370117, + -3.0469419956207275, + 3.585923671722412, + 3.0874898433685303, + -2.384023666381836, + 8.373006820678711, + -5.008815765380859, + -0.40220168232917786, + 2.237520217895508, + 6.541978359222412, + -7.245330810546875, + -1.4676506519317627, + -0.6321355104446411, + 0.6983860731124878, + 5.671065807342529, + -7.1880693435668945, + 1.0589361190795898, + -2.7864511013031006, + -0.18706738948822021, + -11.117478370666504, + 0.1108999252319336, + 1.6904722452163696, + 3.153745412826538, + -2.4597296714782715, + -14.916021347045898, + -0.6396056413650513, + 3.73726224899292, + -0.0004936382174491882, + -4.460884094238281, + 0.4767420291900635, + -1.364515781402588, + 0.39732056856155396, + -0.2519250810146332, + -2.2405786514282227, + 3.616933822631836, + 1.7819770574569702, + -1.028080701828003, + 5.858006000518799, + 2.5599818229675293, + -0.058355316519737244, + 5.705934524536133, + 0.9467172622680664, + 2.186708450317383, + 0.16957327723503113, + 4.781260013580322, + -0.7337777614593506, + 5.216435432434082, + -0.22498667240142822, + 0.03087073564529419, + -2.11757493019104, + 0.5893343687057495, + -7.94472599029541, + -1.8722882270812988, + 0.9487484693527222, + -1.9124059677124023, + 7.888310432434082, + -3.1160876750946045, + 2.0834543704986572, + -0.3882159888744354, + -1.2911145687103271, + 1.4417709112167358, + 0.3467410206794739, + 0.5901777744293213, + 1.9107625484466553, + -1.153238296508789, + -7.841878414154053, + 0.9001820087432861, + -14.217865943908691, + -0.37724560499191284, + -0.9953324198722839, + -1.2604570388793945, + -2.1641077995300293, + -0.31571298837661743, + 0.4857112765312195, + 0.831812858581543, + 2.466667413711548, + -4.46650505065918, + 3.8101084232330322, + 4.519789695739746, + -6.285410404205322, + -0.6134762763977051, + -2.440875291824341, + 13.796771049499512, + 1.5273160934448242, + -1.4628148078918457, + -18.559188842773438, + 2.650294780731201, + 6.461433410644531, + -2.925974130630493, + 4.590699195861816, + 2.9756762981414795, + 4.444028854370117, + -3.7647061347961426, + 0.6182008385658264, + 5.163805961608887, + -0.4383261799812317, + -1.3317880630493164, + 3.5248522758483887, + 0.2467789649963379, + -3.896394729614258, + 2.1561574935913086, + -8.906521797180176, + -2.650646209716797, + -1.4223488569259644, + 4.0936408042907715, + 3.3781585693359375, + -1.8275814056396484, + -1.7489546537399292, + 0.14766478538513184, + -5.763437271118164, + -1.2706667184829712, + 2.1338696479797363, + -3.101743221282959, + 0.9473905563354492, + -2.595327377319336, + -1.1512155532836914, + 1.0752464532852173, + 7.369621753692627, + 0.3269997835159302, + -0.13529008626937866, + -0.03950989246368408, + -7.516559600830078, + 0.6282254457473755, + -4.957334518432617, + -3.411264181137085, + 1.1925394535064697, + 2.970057725906372, + -0.24424797296524048, + -0.1322299838066101, + -1.6712908744812012, + -3.1583919525146484, + 7.180243968963623, + -0.945870041847229, + -8.122899055480957, + -0.03562992811203003, + 1.2069883346557617, + 8.367171287536621, + 0.32028812170028687, + -2.200331449508667, + 0.9544327855110168, + -2.213362216949463, + -3.201103687286377, + 1.9747366905212402, + -3.7769527435302734, + -0.3263539671897888, + -3.0133767127990723, + -6.1093430519104, + 2.2046804428100586, + 1.8598146438598633, + 0.19274041056632996, + 10.772013664245605, + 0.3308674693107605, + 5.948936462402344, + 2.317903518676758, + 2.6887118816375732, + 2.8186745643615723, + 0.4387202858924866, + 0.14594101905822754, + 0.08694672584533691, + 0.6495624780654907, + 16.6004581451416, + -0.5703225135803223, + -7.144731521606445, + 4.170645713806152, + -1.149309515953064, + -0.003544151782989502, + -1.310084581375122, + -0.11199474334716797, + -5.726609706878662, + 2.501256227493286, + 0.8133538365364075, + 3.1311817169189453, + -1.5390009880065918, + 1.9632644653320312, + -3.144059181213379, + 2.9008402824401855, + 0.7176271677017212, + -3.685126304626465, + -0.6521362066268921, + -4.7749342918396, + -1.0292195081710815, + -0.21313202381134033, + 9.10135269165039, + 1.7005653381347656, + 4.068086624145508, + -2.32444429397583, + 2.607661724090576, + -1.8453006744384766, + -3.125211477279663, + 3.2205018997192383, + 0.4061518907546997, + -5.070407390594482, + 2.2914867401123047, + -0.6202054619789124, + -0.926803708076477, + 1.8089239597320557, + -1.5428385734558105, + 8.186056137084961, + -2.4126949310302734, + -2.774533271789551, + 0.9104193449020386, + -6.445507049560547, + -0.6632975339889526, + 0.49884146451950073, + -4.880420684814453, + -3.2755203247070312, + 2.2571370601654053, + -5.1531662940979, + 1.8650416135787964, + -2.208587169647217, + 2.2750377655029297, + -2.1427929401397705, + -1.107348084449768, + -5.5693440437316895, + 1.1329289674758911, + 4.1121506690979, + 0.9428516626358032, + 7.036571502685547, + -1.7516601085662842, + -1.0185482501983643, + -1.6559162139892578, + 0.7056087851524353, + 1.707108497619629, + -0.6945350170135498, + -4.260472297668457, + -1.395340085029602, + -0.0713578462600708, + -1.4284498691558838, + 3.930072784423828, + -3.374263286590576, + 2.1719272136688232, + 0.11382952332496643, + -3.4328787326812744, + -0.6455759406089783, + 1.2770063877105713, + 0.3101377487182617, + 1.1633585691452026, + 7.071312427520752, + 0.9413782358169556, + 3.219214916229248, + 0.42296358942985535, + 1.4988290071487427, + 4.981594085693359, + 0.912127673625946, + -2.3612496852874756, + -4.125702857971191, + 4.72698450088501, + 2.6398096084594727, + -0.8652157783508301, + -1.1671288013458252, + 2.512373447418213, + -2.0621371269226074, + -2.787289619445801, + 1.7876750230789185, + -2.100363254547119, + 7.514378070831299, + -1.9319775104522705, + 0.6652743816375732, + -3.50071382522583, + -0.7537454962730408, + 7.977910041809082, + -4.3398613929748535, + -17.840160369873047, + -2.2415647506713867, + -5.228926181793213, + 8.51447868347168, + -4.084761142730713, + -1.9569742679595947, + -0.1367531716823578, + -0.07618921995162964, + 3.7551114559173584, + 2.130364418029785, + 0.4179398715496063, + 0.43687665462493896, + 2.307542324066162, + -4.087445259094238, + 1.925431728363037, + 5.398586750030518, + -3.7415528297424316, + 0.5728098750114441, + 5.675057411193848, + 0.34152740240097046, + -0.7117856740951538, + -0.13237744569778442, + 1.4820506572723389, + 4.706479072570801, + 3.5276541709899902, + 2.958523988723755, + -1.81510329246521, + -0.6061350703239441, + -4.316660404205322, + 7.197525501251221, + 2.317564010620117, + 2.6438281536102295, + -19.607009887695312, + 1.2793116569519043, + -7.413517951965332, + 0.9230881929397583, + -1.1188764572143555, + 1.9100788831710815, + -1.0580897331237793, + 0.14713755249977112, + 5.846185207366943, + 8.985616683959961, + 0.4770480692386627, + 0.1492198407649994, + 2.5297300815582275, + -5.002587795257568, + -1.313861608505249, + -11.423849105834961, + -0.39937376976013184, + 1.311462640762329, + 14.548805236816406, + -0.5007178783416748, + -21.69010353088379, + -0.7300740480422974, + 0.3658566474914551, + -4.7026872634887695, + 4.1635541915893555, + 1.8193268775939941, + 4.7405171394348145, + -1.2715250253677368, + 7.35615348815918, + 2.4845004081726074, + -1.7950332164764404, + 1.7370485067367554, + 1.6214396953582764, + -3.1755378246307373, + 3.613467216491699, + -1.1306239366531372, + 0.08071231842041016, + -10.524534225463867, + -0.3771149516105652, + 0.9276809692382812, + 0.049877092242240906, + 1.6509604454040527, + 1.6915830373764038, + 24.28226661682129, + 19.992868423461914, + -3.4342496395111084, + 4.118417739868164, + 2.0993332862854004, + 0.6117691993713379, + 0.8750112056732178, + 2.7456119060516357, + 8.061989784240723, + 1.6168746948242188, + 0.2911387085914612, + -3.4079527854919434, + -0.7373216152191162, + 0.7362561821937561, + 0.4180505871772766, + 7.5357770919799805, + -0.08122110366821289, + 1.3364489078521729, + 3.691037178039551, + 4.63169002532959, + -0.21388781070709229, + -6.431436061859131, + 2.6963980197906494, + -0.8094362616539001, + 0.7747409343719482, + -1.645953893661499, + -2.06842041015625, + -5.934403419494629, + -0.635914146900177, + 1.644576072692871, + 3.2451701164245605, + 1.6633501052856445, + 1.1446541547775269, + 1.6723971366882324, + 3.0061721801757812, + -0.18853038549423218, + -1.1290397644042969, + -2.1865286827087402, + 14.359965324401855, + 3.5057122707366943, + 0.4647149443626404, + 3.2015340328216553, + 4.039922714233398, + 3.8121702671051025, + -1.6894829273223877, + 3.15712308883667, + 0.1506359577178955, + 4.167621612548828, + 1.0695680379867554, + -4.916653633117676, + -0.22670245170593262, + -0.8541985154151917, + 4.799714088439941, + -1.5474566221237183, + 5.884854793548584, + 1.4919891357421875, + -1.2063782215118408, + -3.21138596534729, + 4.796056270599365, + -13.432217597961426, + 0.42876291275024414, + 1.3685262203216553, + -3.174736738204956, + -6.820361137390137, + 2.795506238937378, + 2.074784517288208, + -4.291186332702637, + -2.090703248977661, + -0.4689772129058838, + 3.185565233230591, + -1.1030828952789307, + 0.2382204532623291, + -3.078202486038208, + 0.3942679166793823, + -0.9149303436279297, + 0.959057092666626, + -0.610711932182312, + -1.332641839981079, + -2.0162014961242676, + 1.805924415588379, + -4.736968517303467, + -2.538444757461548, + 0.4861883521080017, + 0.1052502989768982, + 8.799971580505371, + -18.089527130126953, + 1.4836678504943848, + 2.7207765579223633, + -0.422673761844635, + 3.3002963066101074, + -1.2858390808105469, + 2.1404929161071777, + -3.908622980117798, + -3.7686033248901367, + 2.3231735229492188, + 2.611492156982422, + 9.973064422607422, + -2.504014730453491, + -5.7036261558532715, + 5.7013750076293945, + 2.9666528701782227, + -3.024576425552368, + 2.6612637042999268, + 1.0732781887054443, + 7.236608028411865, + 1.3079516887664795, + 1.7014601230621338, + -8.165674209594727, + -0.046622395515441895, + -1.92437744140625, + 2.328439712524414, + 9.518538475036621, + -5.1988606452941895, + -1.8729133605957031, + 1.7010557651519775, + -2.954526662826538, + 2.100919008255005, + 6.63581657409668, + -7.106960296630859, + -1.8962550163269043, + -2.0814342498779297, + 3.8879897594451904, + -2.2270212173461914, + -1.2378878593444824, + -0.9783046245574951, + 0.5609906315803528, + 0.046961069107055664, + -3.0591328144073486, + -0.5434166193008423, + -9.62411880493164, + 1.5133113861083984, + 4.505272388458252, + 1.005934238433838, + -9.42458438873291, + -9.124700546264648, + -1.2767665386199951, + -2.2062673568725586, + -0.6043164730072021, + -3.089869499206543, + -0.16243377327919006, + 1.7467517852783203, + 0.28626349568367004, + 3.0532290935516357, + -2.7450509071350098, + -5.087922096252441, + -3.448256015777588, + -7.193194389343262, + -7.017154693603516, + -0.41750288009643555, + 1.0486419200897217, + -2.273530960083008, + -0.2146158367395401, + 3.5218417644500732, + -8.381361961364746, + 2.574827194213867, + 1.4980207681655884, + 0.173336923122406, + -17.480459213256836, + -3.6805925369262695, + 2.987799882888794, + -0.5525656938552856, + -1.9286434650421143, + 13.590666770935059, + 1.994579792022705, + -1.0202401876449585, + -5.798740863800049, + 0.08077883720397949, + -10.320548057556152, + 14.10795783996582, + -3.2865960597991943, + 3.363039255142212, + -0.9392448663711548, + 3.581408739089966, + -1.35397469997406, + 2.2134203910827637, + 3.7633652687072754, + 2.6410014629364014, + 7.029257774353027, + -1.2754921913146973, + -0.7427850365638733, + -1.9158642292022705, + -1.9907605648040771, + -3.110196590423584, + 1.1012319326400757, + 0.7237890958786011, + 0.49573814868927, + -2.0364608764648438, + 5.025711536407471, + 3.117720365524292, + 0.7581338882446289, + 2.078514337539673, + 10.788393020629883, + 0.9380050301551819, + -0.9306163787841797, + -4.462913513183594, + 1.7859500646591187, + 4.828531742095947, + 2.7913260459899902, + 1.044638752937317, + 4.743710041046143, + -9.436991691589355, + -8.909364700317383, + -1.207000494003296, + -0.7789188623428345, + -0.14173631370067596, + 0.9526635408401489, + -0.45173966884613037, + -0.9501423835754395, + 5.378556728363037, + -1.9838223457336426, + -0.8838974833488464, + -6.0205912590026855, + -2.7590725421905518, + -0.13875126838684082, + 0.5988602638244629, + 0.6150122284889221, + 0.4535313844680786, + 1.755924940109253, + 0.854140043258667, + -5.232014179229736, + -5.469364643096924, + 2.0604748725891113, + -2.268691062927246, + -0.1683024764060974, + -4.159426689147949, + 0.6278612613677979, + -6.636147499084473, + 1.697526216506958, + -2.8221828937530518, + -3.918490171432495, + -2.846292018890381, + 0.5668163299560547, + 1.9705145359039307, + 1.1997431516647339, + 1.5095189809799194, + -2.277857780456543, + -1.6517658233642578, + -0.33629274368286133, + 1.6793878078460693, + -6.581136226654053, + 6.052253723144531, + 0.6834282875061035, + 0.49261894822120667, + -4.240389823913574, + 2.5078210830688477, + -2.940840721130371, + -0.8291782140731812, + 7.1366071701049805, + 1.0945923328399658, + -0.09671232104301453, + -6.701376914978027, + 0.7333208918571472, + 7.965071678161621, + 1.0105781555175781, + 0.5670269727706909, + 4.089264392852783, + -0.29034459590911865, + -1.8479915857315063, + 3.1637651920318604, + -10.613709449768066, + -4.884221076965332, + -0.803710401058197, + -6.87837028503418, + 1.4777135848999023, + -3.443337917327881, + -7.037868976593018, + -0.477946400642395, + 0.027487605810165405, + 2.1708273887634277, + -2.435239791870117, + 3.1420936584472656, + -0.9973134994506836, + -1.3806390762329102, + 1.1038620471954346, + 7.258821487426758, + -1.8344240188598633, + 4.530052661895752, + 3.8912878036499023, + 23.098669052124023, + -1.642298936843872, + 7.521768569946289, + -2.248659372329712, + -0.8208103179931641, + -1.0276639461517334, + -1.8045575618743896, + -3.7145447731018066, + 4.00096321105957, + -6.168181419372559, + -2.9260616302490234, + -7.58237886428833, + -0.06766453385353088, + 4.878176689147949, + 1.026634693145752, + 0.3596038818359375, + 2.1659719944000244, + -6.399773120880127, + 5.832396507263184, + -5.675260543823242, + -0.9072730541229248, + -0.06323288381099701, + -1.3915475606918335, + 4.121515274047852, + 0.23976123332977295, + 4.7070393562316895, + 0.9462528228759766, + -1.9455091953277588, + -0.6143057346343994, + 1.9414513111114502, + -1.5246667861938477, + 0.0679372102022171, + 1.4926280975341797, + 2.3737494945526123, + -1.4886940717697144, + -3.306368827819824, + -1.2551829814910889, + -1.3322978019714355, + -1.6020708084106445, + 9.23007583618164, + 2.901965618133545, + -3.665773391723633, + 1.5051114559173584, + -0.278077632188797, + -6.053355693817139, + 0.9157803058624268, + 8.267385482788086, + -2.130950450897217, + -3.4332547187805176, + -1.136403203010559, + -0.6918888092041016, + -4.864706516265869, + 9.709193229675293, + 2.504077672958374, + -3.467552423477173, + -0.6533236503601074, + -0.144631028175354, + 4.06740665435791, + -10.59169864654541, + 0.714897632598877, + 1.129361629486084, + -0.6096386313438416, + 1.4105161428451538, + -0.9149777293205261, + 3.1134541034698486, + 6.0198469161987305, + -1.3618800640106201, + -0.7632067799568176, + 1.9893364906311035, + -2.1043596267700195, + -1.0949897766113281, + -0.8776015043258667, + -2.38962721824646, + 1.814184308052063, + 2.0608408451080322, + -0.505602240562439, + -0.5248639583587646, + -7.5094218254089355, + -1.4443920850753784, + 2.921027183532715, + 2.9154937267303467, + 0.05857443809509277 + ] + } +} \ No newline at end of file diff --git a/data/speakers/Alice.pt b/data/speakers/Alice.pt new file mode 100644 index 0000000000000000000000000000000000000000..c5a7432cc07fccd74ca1758e18d3652ab1392031 --- /dev/null +++ b/data/speakers/Alice.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e06905701f0aaf5803d27fab9b425d9639548a3f16d29db28a98496c858c98f +size 4370 diff --git a/data/speakers/Bob.pt b/data/speakers/Bob.pt new file mode 100644 index 0000000000000000000000000000000000000000..734c03e193a0b11bb488a6203f2b7bcf2dcf445b --- /dev/null +++ b/data/speakers/Bob.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3335fa851f7f84e6d1d6dab36b02c99dcf13cdc81fbb623c7859efb543761de9 +size 4360 diff --git a/data/speakers/female2.pt b/data/speakers/female2.pt new file mode 100644 index 0000000000000000000000000000000000000000..a3bc2cff2ad150110e3b8bf4b11b434a6c378858 --- /dev/null +++ b/data/speakers/female2.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c0a06e088e19995296451c17eddb33464186de311e4fbe3073018667b09c565 +size 4444 diff --git a/data/speakers/spk_1.pt b/data/speakers/spk_1.pt new file mode 100644 index 0000000000000000000000000000000000000000..4cc038e256153fec5c8319cb3ad3593a6eb41864 --- /dev/null +++ b/data/speakers/spk_1.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56007577b30cbc2129c55a3e1406715143ecf91f81d96214fff1b4b3cea1f41c +size 4370 diff --git a/data/speakers/spk_10.pt b/data/speakers/spk_10.pt new file mode 100644 index 0000000000000000000000000000000000000000..1f63bc10e05ab52dd85de294cb9405b0b5da6da7 --- /dev/null +++ b/data/speakers/spk_10.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23f470eb76faa21760904ab0501b814ff86fdc9f3567025748a5c4b70b42f159 +size 4375 diff --git a/data/speakers/spk_11.pt b/data/speakers/spk_11.pt new file mode 100644 index 0000000000000000000000000000000000000000..8d44e32c133e550967c338d11741ed0528dd2f6f --- /dev/null +++ b/data/speakers/spk_11.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b273f2f9a6b6697f301097322ea2dc32010b7fd84a631d8693e1836de0f14cb6 +size 4375 diff --git a/data/speakers/spk_12.pt b/data/speakers/spk_12.pt new file mode 100644 index 0000000000000000000000000000000000000000..c362fef13af432bc7a42d91433289fcd75a47bac --- /dev/null +++ b/data/speakers/spk_12.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:204c12a7e52b1d28f996854b253f3a19b82dac43d72f9344a8d8a1ae993fd1b5 +size 4375 diff --git a/data/speakers/spk_13.pt b/data/speakers/spk_13.pt new file mode 100644 index 0000000000000000000000000000000000000000..a617d031248fb417e8595112a3ade38847e7b243 --- /dev/null +++ b/data/speakers/spk_13.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20827338c674c413a88f69c08f41df0611258c947f57e0b5edde3780f575e098 +size 4375 diff --git a/data/speakers/spk_14.pt b/data/speakers/spk_14.pt new file mode 100644 index 0000000000000000000000000000000000000000..4d28cc3676baf5d2197118d96123f1dc682b1b25 --- /dev/null +++ b/data/speakers/spk_14.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73f84a9ac59f79fd9a511c75480ff3b5d85bb6037ade2d24b4307062599fe82 +size 4375 diff --git a/data/speakers/spk_15.pt b/data/speakers/spk_15.pt new file mode 100644 index 0000000000000000000000000000000000000000..6d0bd70dc4801065f74d886432f29976538a5e6b --- /dev/null +++ b/data/speakers/spk_15.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21a71ca55703cfdf19ffd5255390558601e316b430ec92c2198c62d43caf5709 +size 4375 diff --git a/data/speakers/spk_16.pt b/data/speakers/spk_16.pt new file mode 100644 index 0000000000000000000000000000000000000000..e5515a274b0d86a026415f941a5f742379e54031 --- /dev/null +++ b/data/speakers/spk_16.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e895a607da860a1e588cdc9a46c7518da6dcadf650bef1b662f20710006719f +size 4375 diff --git a/data/speakers/spk_17.pt b/data/speakers/spk_17.pt new file mode 100644 index 0000000000000000000000000000000000000000..616b19ce18cb20d55c77293a9678adcd66fac372 --- /dev/null +++ b/data/speakers/spk_17.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ade03b9eb85d4bb8fefb5e6648adc9b02141001f01429a5c051c7ee25c9e8b +size 4375 diff --git a/data/speakers/spk_18.pt b/data/speakers/spk_18.pt new file mode 100644 index 0000000000000000000000000000000000000000..391757ae65b182708ef3a7d0e9a4f796aeb2c37f --- /dev/null +++ b/data/speakers/spk_18.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0fbcc80a84f945923b9f10b6585dd6dd71dd5747badab1db868263829d43a19 +size 4375 diff --git a/data/speakers/spk_19.pt b/data/speakers/spk_19.pt new file mode 100644 index 0000000000000000000000000000000000000000..91e6406fd7d0cadd4795f144e62e4fa189bc7e19 --- /dev/null +++ b/data/speakers/spk_19.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9bd6520dea9aee554376b2fb5a8571f0f1f377e590af1aeb94938cb7d43157c +size 4375 diff --git a/data/speakers/spk_2.pt b/data/speakers/spk_2.pt new file mode 100644 index 0000000000000000000000000000000000000000..6b6bc81a7065cfd14d6834554f0ee09cb7fcf501 --- /dev/null +++ b/data/speakers/spk_2.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87cfd58dbfed69776885fac314ccb4a2760149815474e7ab5e0f80e66c2fa0df +size 4370 diff --git a/data/speakers/spk_20.pt b/data/speakers/spk_20.pt new file mode 100644 index 0000000000000000000000000000000000000000..14b8af88e3d063d70a27ef3d023df370d9a2bf06 --- /dev/null +++ b/data/speakers/spk_20.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dd144b1c647dc7ebf7dc9206770db001bec9d0310d5c593a1b57ec0b9da2b32 +size 4375 diff --git a/data/speakers/spk_21.pt b/data/speakers/spk_21.pt new file mode 100644 index 0000000000000000000000000000000000000000..db16de23707f8ea2790223d45794f0915abf91c2 --- /dev/null +++ b/data/speakers/spk_21.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7afa95cd4dd2a2b811f0c6829e9beaa3ec409902c5728353c9dbf61e3764dd58 +size 4375 diff --git a/data/speakers/spk_22.pt b/data/speakers/spk_22.pt new file mode 100644 index 0000000000000000000000000000000000000000..1e9366987dc2259c1b67046d13daa5cd1bfdebd2 --- /dev/null +++ b/data/speakers/spk_22.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4cad907719afd8b3d4a7e75d17ed0f075d971b7df202b097a69a5f02ce19d4b +size 4375 diff --git a/data/speakers/spk_3.pt b/data/speakers/spk_3.pt new file mode 100644 index 0000000000000000000000000000000000000000..67b46ea6e15b4865cf555b0685240b1d8265d9df --- /dev/null +++ b/data/speakers/spk_3.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f583e2985e28503a338c6fc753db3308b88e52d6b871588835d06e6d8347de4 +size 4370 diff --git a/data/speakers/spk_4.pt b/data/speakers/spk_4.pt new file mode 100644 index 0000000000000000000000000000000000000000..2aa83739c0ea1d4dc39340c92351654b531c6aeb --- /dev/null +++ b/data/speakers/spk_4.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76022c14bf29279559e3cb709457928e16d2f1e9f2c7711f48a739aeea7596f9 +size 4370 diff --git a/data/speakers/spk_5.pt b/data/speakers/spk_5.pt new file mode 100644 index 0000000000000000000000000000000000000000..a6435f008e89e48f68f37acede84715ee393bccc --- /dev/null +++ b/data/speakers/spk_5.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f64a55280127d56fb569fef33b43755e035d39659e8c057cc35e30334e8bde17 +size 4370 diff --git a/data/speakers/spk_6.pt b/data/speakers/spk_6.pt new file mode 100644 index 0000000000000000000000000000000000000000..06d3effb421d4b9afa7ff006758b1ec46d88c86f --- /dev/null +++ b/data/speakers/spk_6.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bf986bf7c9a5d64fc9c9f0cd31f025acd5e11d945c3be22a2333fb4e26878fa +size 4370 diff --git a/data/speakers/spk_7.pt b/data/speakers/spk_7.pt new file mode 100644 index 0000000000000000000000000000000000000000..3f6c12ca6fd02de46c9026f1da8d34f13f05e151 --- /dev/null +++ b/data/speakers/spk_7.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fb91f225f70b9f16bd74af4ad5f0b8ee53f9d26e7b00c1f586db1fed3a01b81 +size 4370 diff --git a/data/speakers/spk_8.pt b/data/speakers/spk_8.pt new file mode 100644 index 0000000000000000000000000000000000000000..60cd294845a09393c73d4fbe7c5b44c52223f8c2 --- /dev/null +++ b/data/speakers/spk_8.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14bc55f1168fd9ee833a4301b1329f59d10cdb179a7628b5e7d0109a2be731fa +size 4370 diff --git a/data/speakers/spk_9.pt b/data/speakers/spk_9.pt new file mode 100644 index 0000000000000000000000000000000000000000..15ed4745c239fa8e94014501fa301def359d2621 --- /dev/null +++ b/data/speakers/spk_9.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5aac9315d98b0378f78f3925e2978c7c6843d2bae25b81de761ecf2db6fa4c5 +size 4370 diff --git a/data/styles.csv b/data/styles.csv new file mode 100644 index 0000000000000000000000000000000000000000..1f06fd1ef8df1a43a2cb60bab101397aeea4cd5a --- /dev/null +++ b/data/styles.csv @@ -0,0 +1,69 @@ +id,name,desc,params +0,advertisement_upbeat,builtin style advertisement_upbeat,"{""speed"": 9, ""oral"": 7, ""laugh"": 2, ""break"": 1}" +1,affectionate,builtin style affectionate,"{""speed"": 6, ""oral"": 8, ""laugh"": 1, ""break"": 2}" +2,angry,builtin style angry,"{""speed"": 7, ""oral"": 5, ""break"": 3}" +3,assistant,builtin style assistant,"{""speed"": 5, ""oral"": 7, ""laugh"": 1, ""break"": 2}" +4,calm,builtin style calm,"{""speed"": 0, ""oral"": 4, ""break"": 4}" +5,chat,builtin style chat,"{""speed"": 6, ""oral"": 9, ""laugh"": 1, ""break"": 2}" +6,cheerful,builtin style cheerful,"{""speed"": 7, ""oral"": 8, ""laugh"": 2, ""break"": 2}" +7,customerservice,builtin style customerservice,"{""speed"": 5, ""oral"": 6, ""laugh"": 1, ""break"": 5}" +8,depressed,builtin style depressed,"{""speed"": 2, ""oral"": 3, ""break"": 5}" +9,disgruntled,builtin style disgruntled,"{""speed"": 4, ""oral"": 5, ""break"": 4}" +10,documentary-narration,builtin style documentary-narration,"{""speed"": 4, ""oral"": 4, ""break"": 3}" +11,embarrassed,builtin style embarrassed,"{""speed"": 3, ""oral"": 3, ""break"": 5}" +12,empathetic,builtin style empathetic,"{""speed"": 5, ""oral"": 6, ""laugh"": 1, ""break"": 3}" +13,envious,builtin style envious,"{""speed"": 5, ""oral"": 5, ""laugh"": 1, ""break"": 2}" +14,excited,builtin style excited,"{""speed"": 8, ""oral"": 7, ""laugh"": 2, ""break"": 1}" +15,fearful,builtin style fearful,"{""speed"": 7, ""oral"": 6, ""break"": 2}" +16,friendly,builtin style friendly,"{""speed"": 6, ""oral"": 7, ""laugh"": 1, ""break"": 2}" +17,gentle,builtin style gentle,"{""speed"": 4, ""oral"": 5, ""laugh"": 1, ""break"": 3}" +18,hopeful,builtin style hopeful,"{""speed"": 5, ""oral"": 6, ""laugh"": 1, ""break"": 4}" +19,lyrical,builtin style lyrical,"{""speed"": 3, ""oral"": 4, ""break"": 4}" +20,narration-professional,builtin style narration-professional,"{""speed"": 5, ""oral"": 3, ""break"": 3}" +21,narration-relaxed,builtin style narration-relaxed,"{""speed"": 2, ""oral"": 4, ""break"": 3}" +22,newscast,builtin style newscast,"{""speed"": 2, ""oral"": 4, ""break"": 2}" +23,newscast-casual,builtin style newscast-casual,"{""speed"": 2, ""oral"": 5, ""break"": 2}" +24,newscast-formal,builtin style newscast-formal,"{""speed"": 2, ""oral"": 3, ""break"": 2}" +25,poetry-reading,builtin style poetry-reading,"{""speed"": 4, ""oral"": 5, ""break"": 3}" +26,sad,builtin style sad,"{""speed"": 0, ""oral"": 3, ""break"": 5}" +27,serious,builtin style serious,"{""speed"": 3, ""oral"": 3, ""break"": 4}" +28,shouting,builtin style shouting,"{""speed"": 0, ""oral"": 6, ""break"": 1}" +29,sports_commentary,builtin style sports_commentary,"{""speed"": 6, ""oral"": 7, ""laugh"": 1, ""break"": 2}" +30,sports_commentary_excited,builtin style sports_commentary_excited,"{""speed"": 8, ""oral"": 8, ""laugh"": 2, ""break"": 1}" +31,whispering,builtin style whispering,"{""speed"": 2, ""oral"": 3, ""break"": 4}" +32,terrified,builtin style terrified,"{""speed"": 7, ""oral"": 7, ""break"": 1}" +33,unfriendly,builtin style unfriendly,"{""speed"": 4, ""oral"": 2, ""break"": 3}" +34,advertisement_upbeat_p,builtin style advertisement_upbeat,"{""speed"": 9, ""oral"": 7, ""laugh"": 2, ""break"": 1, ""prompt2"": ""[Ptts][Ptts][Ptts] 用兴奋和精力充沛的语气像在拍广告 [Stts][Ptts][Stts][Ptts][Stts]""}" +35,affectionate_p,builtin style affectionate,"{""speed"": 6, ""oral"": 8, ""laugh"": 1, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用温暖亲切的语气像在和亲密的人说话 [Stts][Ptts][Stts][Ptts][Stts]""}" +36,angry_p,builtin style angry,"{""speed"": 7, ""oral"": 5, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用生气厌恶的语气像在吵架 [Stts][Ptts][Stts][Ptts][Stts]""}" +37,assistant_p,builtin style assistant,"{""speed"": 5, ""oral"": 7, ""laugh"": 1, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用热情轻松的语气像助理 [Stts][Ptts][Stts][Ptts][Stts]""}" +38,calm_p,builtin style calm,"{""speed"": 0, ""oral"": 4, ""break"": 4, ""prompt2"": ""[Ptts][Ptts][Ptts] 用沉着冷静的语气像在阐述事实 [Stts][Ptts][Stts][Ptts][Stts]""}" +39,chat_p,builtin style chat,"{""speed"": 6, ""oral"": 9, ""laugh"": 1, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用轻松随意的语气像朋友聊天 [Stts][Ptts][Stts][Ptts][Stts]""}" +40,cheerful_p,builtin style cheerful,"{""speed"": 7, ""oral"": 8, ""laugh"": 2, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用积极向上的语气表达愉快心情 [Stts][Ptts][Stts][Ptts][Stts]""}" +41,customerservice_p,builtin style customerservice,"{""speed"": 5, ""oral"": 6, ""laugh"": 1, ""break"": 5, ""prompt2"": ""[Ptts][Ptts][Ptts] 用友好热情的语气像客服人员 [Stts][Ptts][Stts][Ptts][Stts]""}" +42,depressed_p,builtin style depressed,"{""speed"": 2, ""oral"": 3, ""break"": 5, ""prompt2"": ""[Ptts][Ptts][Ptts] 用低沉的语气表达忧郁情绪 [Stts][Ptts][Stts][Ptts][Stts]""}" +43,disgruntled_p,builtin style disgruntled,"{""speed"": 4, ""oral"": 5, ""break"": 4, ""prompt2"": ""[Ptts][Ptts][Ptts] 用轻蔑抱怨的语气表达不满 [Stts][Ptts][Stts][Ptts][Stts]""}" +44,documentary-narration_p,builtin style documentary-narration,"{""speed"": 4, ""oral"": 4, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用轻松感兴趣的语气像纪录片解说 [Stts][Ptts][Stts][Ptts][Stts]""}" +45,embarrassed_p,builtin style embarrassed,"{""speed"": 3, ""oral"": 3, ""break"": 5, ""prompt2"": ""[Ptts][Ptts][Ptts] 用犹豫吞吐的语气表达尴尬 [Stts][Ptts][Stts][Ptts][Stts]""}" +46,empathetic_p,builtin style empathetic,"{""speed"": 5, ""oral"": 6, ""laugh"": 1, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用温柔的语气表达关心和理解 [Stts][Ptts][Stts][Ptts][Stts]""}" +47,envious_p,builtin style envious,"{""speed"": 5, ""oral"": 5, ""laugh"": 1, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用羡慕的语气像看到别人拥有自己想要的东西 [Stts][Ptts][Stts][Ptts][Stts]""}" +48,excited_p,builtin style excited,"{""speed"": 8, ""oral"": 7, ""laugh"": 2, ""break"": 1, ""prompt2"": ""[Ptts][Ptts][Ptts] 用欢快语气表达遇到好事 [Stts][Ptts][Stts][Ptts][Stts]""}" +49,fearful_p,builtin style fearful,"{""speed"": 7, ""oral"": 6, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用紧张语气表达恐惧像遇到危险 [Stts][Ptts][Stts][Ptts][Stts]""}" +50,friendly_p,builtin style friendly,"{""speed"": 6, ""oral"": 7, ""laugh"": 1, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用亲切友好的语气像朋友 [Stts][Ptts][Stts][Ptts][Stts]""}" +51,gentle_p,builtin style gentle,"{""speed"": 4, ""oral"": 5, ""laugh"": 1, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用温柔语气像在哄小孩 [Stts][Ptts][Stts][Ptts][Stts]""}" +52,hopeful_p,builtin style hopeful,"{""speed"": 5, ""oral"": 6, ""laugh"": 1, ""break"": 4, ""prompt2"": ""[Ptts][Ptts][Ptts] 用温暖的语气带着期待 [Stts][Ptts][Stts][Ptts][Stts]""}" +53,lyrical_p,builtin style lyrical,"{""speed"": 3, ""oral"": 4, ""break"": 4, ""prompt2"": ""[Ptts][Ptts][Ptts] 用优美语气带着淡淡的忧伤 [Stts][Ptts][Stts][Ptts][Stts]""}" +54,narration-professional_p,builtin style narration-professional,"{""speed"": 5, ""oral"": 3, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用沉稳语气像专业播音员 [Stts][Ptts][Stts][Ptts][Stts]""}" +55,narration-relaxed_p,builtin style narration-relaxed,"{""speed"": 2, ""oral"": 4, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用舒缓语气像在听睡前故事 [Stts][Ptts][Stts][Ptts][Stts]""}" +56,newscast_p,builtin style newscast,"{""speed"": 2, ""oral"": 4, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用正式严肃语气播报新闻 [Stts][Ptts][Stts][Ptts][Stts]""}" +57,newscast-casual_p,builtin style newscast-casual,"{""speed"": 2, ""oral"": 5, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用轻松自然语气分享新闻 [Stts][Ptts][Stts][Ptts][Stts]""}" +58,newscast-formal_p,builtin style newscast-formal,"{""speed"": 2, ""oral"": 3, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用正式自信语气播报重要新闻 [Stts][Ptts][Stts][Ptts][Stts]""}" +59,poetry-reading_p,builtin style poetry-reading,"{""speed"": 4, ""oral"": 5, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用语气调整表达诗歌情感注意节奏韵律 [Stts][Ptts][Stts][Ptts][Stts]""}" +60,sad_p,builtin style sad,"{""speed"": 0, ""oral"": 3, ""break"": 5, ""prompt2"": ""[Ptts][Ptts][Ptts] 用悲伤低沉语气诉说悲伤事情 [Stts][Ptts][Stts][Ptts][Stts]""}" +61,serious_p,builtin style serious,"{""speed"": 3, ""oral"": 3, ""break"": 4, ""prompt2"": ""[Ptts][Ptts][Ptts] 用严肃坚定语气像发布命令 [Stts][Ptts][Stts][Ptts][Stts]""}" +62,shouting_p,builtin style shouting,"{""speed"": 0, ""oral"": 6, ""break"": 1, ""prompt2"": ""[Ptts] 用提高音量的语气像在远处喊叫 [Stts][Ptts][Stts][Ptts][Stts]""}" +63,sports_commentary_p,builtin style sports_commentary,"{""speed"": 6, ""oral"": 7, ""laugh"": 1, ""break"": 2, ""prompt2"": ""[Ptts][Ptts][Ptts] 用轻松激情语气解说体育比赛 [Stts][Ptts][Stts][Ptts][Stts]""}" +64,sports_commentary_excited_p,builtin style sports_commentary_excited,"{""speed"": 8, ""oral"": 8, ""laugh"": 2, ""break"": 1, ""prompt2"": ""[Ptts][Ptts][Ptts] 用激动活力语气解说精彩瞬间 [Stts][Ptts][Stts][Ptts][Stts]""}" +65,whispering_p,builtin style whispering,"{""speed"": 2, ""oral"": 3, ""break"": 4, ""prompt2"": ""[Ptts][Ptts][Ptts] 用气声低音量语气像说悄悄话 [Stts][Ptts][Stts][Ptts][Stts]""}" +66,terrified_p,builtin style terrified,"{""speed"": 7, ""oral"": 7, ""break"": 1, ""prompt2"": ""[Ptts][Ptts][Ptts] 用恐惧颤抖语气像遇到可怕事情 [Stts][Ptts][Stts][Ptts][Stts]""}" +67,unfriendly_p,builtin style unfriendly,"{""speed"": 4, ""oral"": 2, ""break"": 3, ""prompt2"": ""[Ptts][Ptts][Ptts] 用冷淡无感情语气像对待陌生人 [Stts][Ptts][Stts][Ptts][Stts]""}" \ No newline at end of file diff --git a/docs/api.png b/docs/api.png new file mode 100644 index 0000000000000000000000000000000000000000..fc2a7109025eb28852aa10dba1c37e13ec62e5ec Binary files /dev/null and b/docs/api.png differ diff --git a/docs/model_dir.png b/docs/model_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..793861905d9a987548cc34060a49c98ed1b75fbe Binary files /dev/null and b/docs/model_dir.png differ diff --git a/docs/playground.png b/docs/playground.png new file mode 100644 index 0000000000000000000000000000000000000000..d5db03a066354047b7c37a51c5219b168c928d58 Binary files /dev/null and b/docs/playground.png differ diff --git a/docs/webui.png b/docs/webui.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ccf531f84e111c71349c51be4825cf0a031173 Binary files /dev/null and b/docs/webui.png differ diff --git a/launch.py b/launch.py new file mode 100644 index 0000000000000000000000000000000000000000..e0131d20aa904ae86b1db9336395f8d786ae27bc --- /dev/null +++ b/launch.py @@ -0,0 +1,109 @@ +import torch +from modules import config +from modules import generate_audio as generate + +from functools import lru_cache +from typing import Callable + +from modules.api.Api import APIManager + +from modules.api.impl import ( + base_api, + tts_api, + ssml_api, + google_api, + openai_api, + refiner_api, +) + +torch._dynamo.config.cache_size_limit = 64 +torch._dynamo.config.suppress_errors = True +torch.set_float32_matmul_precision("high") + + +def create_api(): + api = APIManager() + + base_api.setup(api) + tts_api.setup(api) + ssml_api.setup(api) + google_api.setup(api) + openai_api.setup(api) + refiner_api.setup(api) + + return api + + +def conditional_cache(condition: Callable): + def decorator(func): + @lru_cache(None) + def cached_func(*args, **kwargs): + return func(*args, **kwargs) + + def wrapper(*args, **kwargs): + if condition(*args, **kwargs): + return cached_func(*args, **kwargs) + else: + return func(*args, **kwargs) + + return wrapper + + return decorator + + +if __name__ == "__main__": + import argparse + import uvicorn + + parser = argparse.ArgumentParser( + description="Start the FastAPI server with command line arguments" + ) + parser.add_argument( + "--host", type=str, default="0.0.0.0", help="Host to run the server on" + ) + parser.add_argument( + "--port", type=int, default=8000, help="Port to run the server on" + ) + parser.add_argument( + "--reload", action="store_true", help="Enable auto-reload for development" + ) + parser.add_argument("--compile", action="store_true", help="Enable model compile") + parser.add_argument( + "--lru_size", + type=int, + default=64, + help="Set the size of the request cache pool, set it to 0 will disable lru_cache", + ) + parser.add_argument( + "--cors_origin", + type=str, + default="*", + help="Allowed CORS origins. Use '*' to allow all origins.", + ) + + args = parser.parse_args() + + config.args = args + + if args.compile: + print("Model compile is enabled") + config.enable_model_compile = True + + def should_cache(*args, **kwargs): + spk_seed = kwargs.get("spk_seed", -1) + infer_seed = kwargs.get("infer_seed", -1) + return spk_seed != -1 and infer_seed != -1 + + if args.lru_size > 0: + config.lru_size = args.lru_size + generate.generate_audio = conditional_cache(should_cache)( + generate.generate_audio + ) + + api = create_api() + config.api = api + + if args.cors_origin: + api.set_cors(allow_origins=[args.cors_origin]) + + uvicorn.run(api.app, host=args.host, port=args.port, reload=args.reload) diff --git a/models/.gitkeep b/models/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/models/ChatTTS/asset/DVAE.pt b/models/ChatTTS/asset/DVAE.pt new file mode 100644 index 0000000000000000000000000000000000000000..70d514fc602e8c7b46b9e82f843724c8cd3a5717 --- /dev/null +++ b/models/ChatTTS/asset/DVAE.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:613cb128adf89188c93ea5880ea0b798e66b1fe6186d0c535d99bcd87bfd6976 +size 27749823 diff --git a/models/ChatTTS/asset/Decoder.pt b/models/ChatTTS/asset/Decoder.pt new file mode 100644 index 0000000000000000000000000000000000000000..f15ee0b814281e7378af51d4bf25af57d29ed3b4 --- /dev/null +++ b/models/ChatTTS/asset/Decoder.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9964e36e840f0e3a748c5f716fe6de6490d2135a5f5155f4a642d51860e2ec38 +size 103718156 diff --git a/models/ChatTTS/asset/GPT.pt b/models/ChatTTS/asset/GPT.pt new file mode 100644 index 0000000000000000000000000000000000000000..d4feaa219d849b8fc56a66bc3efc032455b37bc4 --- /dev/null +++ b/models/ChatTTS/asset/GPT.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d4ee6461ea097a2be23eb40d73fb94ad3b3d39cb64fbb50cb3357fd466cadb +size 900746442 diff --git a/models/ChatTTS/asset/Vocos.pt b/models/ChatTTS/asset/Vocos.pt new file mode 100644 index 0000000000000000000000000000000000000000..e7f521d0407e975101a66dd94bcadbb122a46893 --- /dev/null +++ b/models/ChatTTS/asset/Vocos.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09a670eda1c08b740013679c7a90ebb7f1a97646ea7673069a6838e6b51d6c58 +size 54363119 diff --git a/models/ChatTTS/asset/spk_stat.pt b/models/ChatTTS/asset/spk_stat.pt new file mode 100644 index 0000000000000000000000000000000000000000..c21dae672dd323c62dd9d53f9fcae77071983515 --- /dev/null +++ b/models/ChatTTS/asset/spk_stat.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3228d8a4cbbf349d107a1b76d2f47820865bd3c9928c4bdfe1cefd5c7071105f +size 4257 diff --git a/models/ChatTTS/asset/tokenizer.pt b/models/ChatTTS/asset/tokenizer.pt new file mode 100644 index 0000000000000000000000000000000000000000..23c153375113a2fa7b68ce6c96f27b9e2e966c94 --- /dev/null +++ b/models/ChatTTS/asset/tokenizer.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e911ae7c6a7c27953433f35c44227a67838fe229a1f428503bdb6cd3d1bcc69c +size 336680 diff --git a/models/ChatTTS/config/decoder.yaml b/models/ChatTTS/config/decoder.yaml new file mode 100644 index 0000000000000000000000000000000000000000..46b55a6c9f48d6f5f4d509f37c3a49200435deaf --- /dev/null +++ b/models/ChatTTS/config/decoder.yaml @@ -0,0 +1,10 @@ +dim: 384 + +decoder_config: + idim: ${dim} + odim: ${dim} + hidden: 512 + n_layer: 12 + bn_dim: 128 + +vq_config: null diff --git a/models/ChatTTS/config/dvae.yaml b/models/ChatTTS/config/dvae.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6f1f8a1541dd86b0af9f920e542764c5039c45a1 --- /dev/null +++ b/models/ChatTTS/config/dvae.yaml @@ -0,0 +1,12 @@ +dim: 512 +decoder_config: + idim: ${dim} + odim: ${dim} + n_layer: 12 + bn_dim: 128 + +vq_config: + dim: 1024 + levels: [5, 5, 5, 5] + G: 2 + R: 2 diff --git a/models/ChatTTS/config/gpt.yaml b/models/ChatTTS/config/gpt.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bd1fd63f75ec6c331ce65b10a3e3204f7d7246a2 --- /dev/null +++ b/models/ChatTTS/config/gpt.yaml @@ -0,0 +1,17 @@ +num_audio_tokens: 626 +num_text_tokens: 21178 + +gpt_config: + hidden_size: 768 + intermediate_size: 3072 + num_attention_heads: 12 + num_hidden_layers: 20 + use_cache: False + max_position_embeddings: 4096 + # attn_implementation: flash_attention_2 + + spk_emb_dim: 192 + spk_KL: False + num_audio_tokens: 626 + num_text_tokens: null + num_vq: 4 diff --git a/models/ChatTTS/config/path.yaml b/models/ChatTTS/config/path.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d0820402c7e24dbfbab11d3e4eded3ce771f486f --- /dev/null +++ b/models/ChatTTS/config/path.yaml @@ -0,0 +1,9 @@ +vocos_config_path: config/vocos.yaml +vocos_ckpt_path: asset/Vocos.pt +dvae_config_path: config/dvae.yaml +dvae_ckpt_path: asset/DVAE.pt +gpt_config_path: config/gpt.yaml +gpt_ckpt_path: asset/GPT.pt +decoder_config_path: config/decoder.yaml +decoder_ckpt_path: asset/Decoder.pt +tokenizer_path: asset/tokenizer.pt diff --git a/models/ChatTTS/config/vocos.yaml b/models/ChatTTS/config/vocos.yaml new file mode 100644 index 0000000000000000000000000000000000000000..538262138a8b43863802f279909f26ec31c766b3 --- /dev/null +++ b/models/ChatTTS/config/vocos.yaml @@ -0,0 +1,24 @@ +feature_extractor: + class_path: vocos.feature_extractors.MelSpectrogramFeatures + init_args: + sample_rate: 24000 + n_fft: 1024 + hop_length: 256 + n_mels: 100 + padding: center + +backbone: + class_path: vocos.models.VocosBackbone + init_args: + input_channels: 100 + dim: 512 + intermediate_dim: 1536 + num_layers: 8 + +head: + class_path: vocos.heads.ISTFTHead + init_args: + dim: 512 + n_fft: 1024 + hop_length: 256 + padding: center diff --git a/modules/ChatTTS/.gitignore b/modules/ChatTTS/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..1ed4d073766b8943d66d08d5e86b54ca7b1e53f0 --- /dev/null +++ b/modules/ChatTTS/.gitignore @@ -0,0 +1,163 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class +*.ckpt +# C extensions +*.so +*.pt + +# Distribution / packaging +.Python +outputs/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +asset/* +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/modules/ChatTTS/ChatTTS/__init__.py b/modules/ChatTTS/ChatTTS/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0f4c079ba76ed6799552a3db22f2f35d9489edd3 --- /dev/null +++ b/modules/ChatTTS/ChatTTS/__init__.py @@ -0,0 +1 @@ +from .core import Chat \ No newline at end of file diff --git a/modules/ChatTTS/ChatTTS/core.py b/modules/ChatTTS/ChatTTS/core.py new file mode 100644 index 0000000000000000000000000000000000000000..0474acf8b96b4796fdacc45f5d4aba354469ed86 --- /dev/null +++ b/modules/ChatTTS/ChatTTS/core.py @@ -0,0 +1,346 @@ +import os +import logging +from functools import partial +from omegaconf import OmegaConf + +import torch +from vocos import Vocos +from .model.dvae import DVAE +from .model.gpt import GPT_warpper +from .utils.gpu_utils import select_device +from .utils.infer_utils import ( + count_invalid_characters, + detect_language, + apply_character_map, + apply_half2full_map, +) +from .utils.io_utils import get_latest_modified_file +from .infer.api import refine_text, infer_code + +from huggingface_hub import snapshot_download + +logging.basicConfig(level=logging.INFO) + + +class Chat: + def __init__( + self, + ): + self.pretrain_models = {} + self.normalizer = {} + self.logger = logging.getLogger(__name__) + + def check_model(self, level=logging.INFO, use_decoder=False): + not_finish = False + check_list = ["vocos", "gpt", "tokenizer"] + + if use_decoder: + check_list.append("decoder") + else: + check_list.append("dvae") + + for module in check_list: + if module not in self.pretrain_models: + self.logger.log(logging.WARNING, f"{module} not initialized.") + not_finish = True + + if not not_finish: + self.logger.log(level, f"All initialized.") + + return not not_finish + + def load_models( + self, + source="huggingface", + force_redownload=False, + local_path="", + **kwargs, + ): + if source == "huggingface": + hf_home = os.getenv("HF_HOME", os.path.expanduser("~/.cache/huggingface")) + try: + download_path = get_latest_modified_file( + os.path.join(hf_home, "hub/models--2Noise--ChatTTS/snapshots") + ) + except: + download_path = None + if download_path is None or force_redownload: + self.logger.log( + logging.INFO, + f"Download from HF: https://huggingface.co/2Noise/ChatTTS", + ) + download_path = snapshot_download( + repo_id="2Noise/ChatTTS", allow_patterns=["*.pt", "*.yaml"] + ) + else: + self.logger.log(logging.INFO, f"Load from cache: {download_path}") + elif source == "local": + self.logger.log(logging.INFO, f"Load from local: {local_path}") + download_path = local_path + + self._load( + **{ + k: os.path.join(download_path, v) + for k, v in OmegaConf.load( + os.path.join(download_path, "config", "path.yaml") + ).items() + }, + **kwargs, + ) + + def _load( + self, + vocos_config_path: str = None, + vocos_ckpt_path: str = None, + dvae_config_path: str = None, + dvae_ckpt_path: str = None, + gpt_config_path: str = None, + gpt_ckpt_path: str = None, + decoder_config_path: str = None, + decoder_ckpt_path: str = None, + tokenizer_path: str = None, + device: str = None, + compile: bool = True, + ): + if not device: + device = select_device(4096) + self.logger.log(logging.INFO, f"use {device}") + + if vocos_config_path: + vocos = Vocos.from_hparams(vocos_config_path).to(device).eval() + assert vocos_ckpt_path, "vocos_ckpt_path should not be None" + vocos.load_state_dict(torch.load(vocos_ckpt_path)) + self.pretrain_models["vocos"] = vocos + self.logger.log(logging.INFO, "vocos loaded.") + + if dvae_config_path: + cfg = OmegaConf.load(dvae_config_path) + dvae = DVAE(**cfg).to(device).eval() + assert dvae_ckpt_path, "dvae_ckpt_path should not be None" + dvae.load_state_dict(torch.load(dvae_ckpt_path, map_location=device)) + self.pretrain_models["dvae"] = dvae + self.logger.log(logging.INFO, "dvae loaded.") + + if gpt_config_path: + cfg = OmegaConf.load(gpt_config_path) + gpt = GPT_warpper(**cfg).to(device).eval() + assert gpt_ckpt_path, "gpt_ckpt_path should not be None" + gpt.load_state_dict(torch.load(gpt_ckpt_path, map_location=device)) + if compile and "cuda" in str(device): + self.logger.info("compile gpt model") + gpt.gpt.forward = torch.compile( + gpt.gpt.forward, backend="inductor", dynamic=True + ) + self.pretrain_models["gpt"] = gpt + spk_stat_path = os.path.join(os.path.dirname(gpt_ckpt_path), "spk_stat.pt") + assert os.path.exists( + spk_stat_path + ), f"Missing spk_stat.pt: {spk_stat_path}" + self.pretrain_models["spk_stat"] = torch.load(spk_stat_path).to(device) + self.logger.log(logging.INFO, "gpt loaded.") + + if decoder_config_path: + cfg = OmegaConf.load(decoder_config_path) + decoder = DVAE(**cfg).to(device).eval() + assert decoder_ckpt_path, "decoder_ckpt_path should not be None" + decoder.load_state_dict(torch.load(decoder_ckpt_path, map_location=device)) + self.pretrain_models["decoder"] = decoder + self.logger.log(logging.INFO, "decoder loaded.") + + if tokenizer_path: + tokenizer = torch.load(tokenizer_path, map_location=device) + tokenizer.padding_side = "left" + self.pretrain_models["tokenizer"] = tokenizer + self.logger.log(logging.INFO, "tokenizer loaded.") + + self.check_model() + + def infer( + self, + text, + skip_refine_text=False, + refine_text_only=False, + params_refine_text={}, + params_infer_code={"prompt": "[speed_5]"}, + use_decoder=True, + do_text_normalization=True, + lang=None, + ): + + assert self.check_model(use_decoder=use_decoder) + + if not isinstance(text, list): + text = [text] + + if do_text_normalization: + for i, t in enumerate(text): + _lang = detect_language(t) if lang is None else lang + self.init_normalizer(_lang) + text[i] = self.normalizer[_lang](t) + if _lang == "zh": + text[i] = apply_half2full_map(text[i]) + + for i, t in enumerate(text): + reserved_tokens = self.pretrain_models[ + "tokenizer" + ].additional_special_tokens + invalid_characters = count_invalid_characters(t, reserved_tokens) + if len(invalid_characters): + self.logger.log( + logging.WARNING, f"Invalid characters found! : {invalid_characters}" + ) + text[i] = apply_character_map(t) + + if not skip_refine_text: + text_tokens = refine_text(self.pretrain_models, text, **params_refine_text)[ + "ids" + ] + + text_tokens = [ + i[ + i + < self.pretrain_models["tokenizer"].convert_tokens_to_ids( + "[break_0]" + ) + ] + for i in text_tokens + ] + text = self.pretrain_models["tokenizer"].batch_decode(text_tokens) + + if refine_text_only: + return text + + text = [params_infer_code.get("prompt", "") + i for i in text] + params_infer_code.pop("prompt", "") + result = infer_code( + self.pretrain_models, text, **params_infer_code, return_hidden=use_decoder + ) + + if use_decoder: + mel_spec = [ + self.pretrain_models["decoder"](i[None].permute(0, 2, 1)) + for i in result["hiddens"] + ] + else: + mel_spec = [ + self.pretrain_models["dvae"](i[None].permute(0, 2, 1)) + for i in result["ids"] + ] + + wav = [self.pretrain_models["vocos"].decode(i).cpu().numpy() for i in mel_spec] + + return wav + + def refiner_prompt( + self, + text, + params_refine_text={}, + do_text_normalization=True, + lang=None, + ) -> str: + + # assert self.check_model(use_decoder=False) + + if not isinstance(text, list): + text = [text] + + if do_text_normalization: + for i, t in enumerate(text): + _lang = detect_language(t) if lang is None else lang + self.init_normalizer(_lang) + text[i] = self.normalizer[_lang](t) + if _lang == "zh": + text[i] = apply_half2full_map(text[i]) + + for i, t in enumerate(text): + reserved_tokens = self.pretrain_models[ + "tokenizer" + ].additional_special_tokens + invalid_characters = count_invalid_characters(t, reserved_tokens) + if len(invalid_characters): + self.logger.log( + logging.WARNING, f"Invalid characters found! : {invalid_characters}" + ) + text[i] = apply_character_map(t) + + text_tokens = refine_text(self.pretrain_models, text, **params_refine_text)[ + "ids" + ] + text_tokens = [ + i[i < self.pretrain_models["tokenizer"].convert_tokens_to_ids("[break_0]")] + for i in text_tokens + ] + text = self.pretrain_models["tokenizer"].batch_decode(text_tokens) + + return text[0] + + def generate_audio( + self, + prompt, + params_infer_code={"prompt": "[speed_5]"}, + use_decoder=True, + ) -> list: + + # assert self.check_model(use_decoder=use_decoder) + + if not isinstance(prompt, list): + prompt = [prompt] + + prompt = [params_infer_code.get("prompt", "") + i for i in prompt] + params_infer_code.pop("prompt", "") + result = infer_code( + self.pretrain_models, prompt, **params_infer_code, return_hidden=use_decoder + ) + + if use_decoder: + mel_spec = [ + self.pretrain_models["decoder"](i[None].permute(0, 2, 1)) + for i in result["hiddens"] + ] + else: + mel_spec = [ + self.pretrain_models["dvae"](i[None].permute(0, 2, 1)) + for i in result["ids"] + ] + + wav = [self.pretrain_models["vocos"].decode(i).cpu().numpy() for i in mel_spec] + + return wav + + def sample_random_speaker( + self, + ) -> torch.Tensor: + + dim = self.pretrain_models["gpt"].gpt.layers[0].mlp.gate_proj.in_features + std, mean = self.pretrain_models["spk_stat"].chunk(2) + return torch.randn(dim, device=std.device) * std + mean + + def init_normalizer(self, lang): + + if lang not in self.normalizer: + if lang == "zh": + try: + from tn.chinese.normalizer import Normalizer + except: + self.logger.log( + logging.WARNING, + f"Package WeTextProcessing not found! \ + Run: conda install -c conda-forge pynini=2.1.5 && pip install WeTextProcessing", + ) + self.normalizer[lang] = Normalizer().normalize + else: + try: + from nemo_text_processing.text_normalization.normalize import ( + Normalizer, + ) + except: + self.logger.log( + logging.WARNING, + f"Package nemo_text_processing not found! \ + Run: conda install -c conda-forge pynini=2.1.5 && pip install nemo_text_processing", + ) + self.normalizer[lang] = partial( + Normalizer(input_case="cased", lang=lang).normalize, + verbose=False, + punct_post_process=True, + ) diff --git a/modules/ChatTTS/ChatTTS/experimental/llm.py b/modules/ChatTTS/ChatTTS/experimental/llm.py new file mode 100644 index 0000000000000000000000000000000000000000..a4e5f94d8e08b0d2c2ceb806cf4efc11b891dd1f --- /dev/null +++ b/modules/ChatTTS/ChatTTS/experimental/llm.py @@ -0,0 +1,40 @@ + +from openai import OpenAI + +prompt_dict = { + 'kimi': [ {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。"}, + {"role": "user", "content": "你好,请注意你现在生成的文字要按照人日常生活的口吻,你的回复将会后续用TTS模型转为语音,并且请把回答控制在100字以内。并且标点符号仅包含逗号和句号,将数字等转为文字回答。"}, + {"role": "assistant", "content": "好的,我现在生成的文字将按照人日常生活的口吻, 并且我会把回答控制在一百字以内, 标点符号仅包含逗号和句号,将阿拉伯数字等转为中文文字回答。下面请开始对话。"},], + 'deepseek': [ + {"role": "system", "content": "You are a helpful assistant"}, + {"role": "user", "content": "你好,请注意你现在生成的文字要按照人日常生活的口吻,你的回复将会后续用TTS模型转为语音,并且请把回答控制在100字以内。并且标点符号仅包含逗号和句号,将数字等转为文字回答。"}, + {"role": "assistant", "content": "好的,我现在生成的文字将按照人日常生活的口吻, 并且我会把回答控制在一百字以内, 标点符号仅包含逗号和句号,将阿拉伯数字等转为中文文字回答。下面请开始对话。"},], + 'deepseek_TN': [ + {"role": "system", "content": "You are a helpful assistant"}, + {"role": "user", "content": "你好,现在我们在处理TTS的文本输入,下面将会给你输入一段文本,请你将其中的阿拉伯数字等等转为文字表达,并且输出的文本里仅包含逗号和句号这两个标点符号"}, + {"role": "assistant", "content": "好的,我现在对TTS的文本输入进行处理。这一般叫做text normalization。下面请输入"}, + {"role": "user", "content": "We paid $123 for this desk."}, + {"role": "assistant", "content": "We paid one hundred and twenty three dollars for this desk."}, + {"role": "user", "content": "详询请拨打010-724654"}, + {"role": "assistant", "content": "详询请拨打零幺零,七二四六五四"}, + {"role": "user", "content": "罗森宣布将于7月24日退市,在华门店超6000家!"}, + {"role": "assistant", "content": "罗森宣布将于七月二十四日退市,在华门店超过六千家。"}, + ], +} + +class llm_api: + def __init__(self, api_key, base_url, model): + self.client = OpenAI( + api_key = api_key, + base_url = base_url, + ) + self.model = model + def call(self, user_question, temperature = 0.3, prompt_version='kimi', **kwargs): + + completion = self.client.chat.completions.create( + model = self.model, + messages = prompt_dict[prompt_version]+[{"role": "user", "content": user_question},], + temperature = temperature, + **kwargs + ) + return completion.choices[0].message.content diff --git a/modules/ChatTTS/ChatTTS/infer/api.py b/modules/ChatTTS/ChatTTS/infer/api.py new file mode 100644 index 0000000000000000000000000000000000000000..7a147709f22a0faa6e5a38ac12dcb4e4db342afc --- /dev/null +++ b/modules/ChatTTS/ChatTTS/infer/api.py @@ -0,0 +1,156 @@ +import torch +import torch.nn.functional as F +from transformers.generation import TopKLogitsWarper, TopPLogitsWarper +from ..utils.infer_utils import CustomRepetitionPenaltyLogitsProcessorRepeat + + +def infer_code( + models, + text, + spk_emb=None, + top_P=0.7, + top_K=20, + temperature=0.3, + repetition_penalty=1.05, + max_new_token=2048, + prompt1="", + prompt2="", + prefix="", + **kwargs, +): + + device = next(models["gpt"].parameters()).device + + if not isinstance(text, list): + text = [text] + + if not isinstance(temperature, list): + temperature = [temperature] * models["gpt"].num_vq + + if spk_emb is not None: + text = [f"{prompt1}[Stts]{prompt2}[spk_emb]{i}[Ptts]{prefix}" for i in text] + else: + text = [f"{prompt1}[Stts]{prompt2}[empty_spk]{i}[Ptts]{prefix}" for i in text] + + text_token = models["tokenizer"]( + text, return_tensors="pt", add_special_tokens=False, padding=True + ).to(device) + input_ids = text_token["input_ids"][..., None].expand(-1, -1, models["gpt"].num_vq) + text_mask = torch.ones(text_token["input_ids"].shape, dtype=bool, device=device) + + inputs = { + "input_ids": input_ids, + "text_mask": text_mask, + "attention_mask": text_token["attention_mask"], + } + + emb = models["gpt"].get_emb(**inputs) + if spk_emb is not None: + emb[ + inputs["input_ids"][..., 0] + == models["tokenizer"].convert_tokens_to_ids("[spk_emb]") + ] = F.normalize( + spk_emb.to(device).to(emb.dtype)[None].expand(len(text), -1), + p=2.0, + dim=1, + eps=1e-12, + ) + + num_code = models["gpt"].emb_code[0].num_embeddings - 1 + + LogitsWarpers = [] + if top_P is not None: + LogitsWarpers.append(TopPLogitsWarper(top_P, min_tokens_to_keep=3)) + if top_K is not None: + LogitsWarpers.append(TopKLogitsWarper(top_K, min_tokens_to_keep=3)) + + LogitsProcessors = [] + if repetition_penalty is not None and repetition_penalty != 1: + LogitsProcessors.append( + CustomRepetitionPenaltyLogitsProcessorRepeat( + repetition_penalty, num_code, 16 + ) + ) + + result = models["gpt"].generate( + emb, + inputs["input_ids"], + temperature=torch.tensor(temperature, device=device), + attention_mask=inputs["attention_mask"], + LogitsWarpers=LogitsWarpers, + LogitsProcessors=LogitsProcessors, + eos_token=num_code, + max_new_token=max_new_token, + infer_text=False, + **kwargs, + ) + + return result + + +def refine_text( + models, + text, + top_P=0.7, + top_K=20, + temperature=0.7, + repetition_penalty=1.0, + max_new_token=384, + prompt="", + **kwargs, +): + device = next(models["gpt"].parameters()).device + + if not isinstance(text, list): + text = [text] + + assert len(text), "text should not be empty" + + text = [f"[Sbreak]{i}[Pbreak]{prompt}" for i in text] + text_token = models["tokenizer"]( + text, return_tensors="pt", add_special_tokens=False, padding=True + ).to(device) + text_mask = torch.ones(text_token["input_ids"].shape, dtype=bool, device=device) + + inputs = { + "input_ids": text_token["input_ids"][..., None].expand( + -1, -1, models["gpt"].num_vq + ), + "text_mask": text_mask, + "attention_mask": text_token["attention_mask"], + } + + LogitsWarpers = [] + if top_P is not None: + LogitsWarpers.append(TopPLogitsWarper(top_P, min_tokens_to_keep=3)) + if top_K is not None: + LogitsWarpers.append(TopKLogitsWarper(top_K, min_tokens_to_keep=3)) + + LogitsProcessors = [] + if repetition_penalty is not None and repetition_penalty != 1: + LogitsProcessors.append( + CustomRepetitionPenaltyLogitsProcessorRepeat( + repetition_penalty, len(models["tokenizer"]), 16 + ) + ) + + result = models["gpt"].generate( + models["gpt"].get_emb(**inputs), + inputs["input_ids"], + temperature=torch.tensor( + [ + temperature, + ], + device=device, + ), + attention_mask=inputs["attention_mask"], + LogitsWarpers=LogitsWarpers, + LogitsProcessors=LogitsProcessors, + eos_token=torch.tensor( + models["tokenizer"].convert_tokens_to_ids("[Ebreak]"), device=device + )[None], + max_new_token=max_new_token, + infer_text=True, + **kwargs, + ) + return result diff --git a/modules/ChatTTS/ChatTTS/model/dvae.py b/modules/ChatTTS/ChatTTS/model/dvae.py new file mode 100644 index 0000000000000000000000000000000000000000..336e8e16cdea41669a581f326047d945d81f2933 --- /dev/null +++ b/modules/ChatTTS/ChatTTS/model/dvae.py @@ -0,0 +1,155 @@ +import math +from einops import rearrange +from vector_quantize_pytorch import GroupedResidualFSQ + +import torch +import torch.nn as nn +import torch.nn.functional as F + +class ConvNeXtBlock(nn.Module): + def __init__( + self, + dim: int, + intermediate_dim: int, + kernel, dilation, + layer_scale_init_value: float = 1e-6, + ): + # ConvNeXt Block copied from Vocos. + super().__init__() + self.dwconv = nn.Conv1d(dim, dim, + kernel_size=kernel, padding=dilation*(kernel//2), + dilation=dilation, groups=dim + ) # depthwise conv + + self.norm = nn.LayerNorm(dim, eps=1e-6) + self.pwconv1 = nn.Linear(dim, intermediate_dim) # pointwise/1x1 convs, implemented with linear layers + self.act = nn.GELU() + self.pwconv2 = nn.Linear(intermediate_dim, dim) + self.gamma = ( + nn.Parameter(layer_scale_init_value * torch.ones(dim), requires_grad=True) + if layer_scale_init_value > 0 + else None + ) + + def forward(self, x: torch.Tensor, cond = None) -> torch.Tensor: + residual = x + x = self.dwconv(x) + x = x.transpose(1, 2) # (B, C, T) -> (B, T, C) + x = self.norm(x) + x = self.pwconv1(x) + x = self.act(x) + x = self.pwconv2(x) + if self.gamma is not None: + x = self.gamma * x + x = x.transpose(1, 2) # (B, T, C) -> (B, C, T) + + x = residual + x + return x + + + +class GFSQ(nn.Module): + + def __init__(self, + dim, levels, G, R, eps=1e-5, transpose = True + ): + super(GFSQ, self).__init__() + self.quantizer = GroupedResidualFSQ( + dim=dim, + levels=levels, + num_quantizers=R, + groups=G, + ) + self.n_ind = math.prod(levels) + self.eps = eps + self.transpose = transpose + self.G = G + self.R = R + + def _embed(self, x): + if self.transpose: + x = x.transpose(1,2) + x = rearrange( + x, "b t (g r) -> g b t r", g = self.G, r = self.R, + ) + feat = self.quantizer.get_output_from_indices(x) + return feat.transpose(1,2) if self.transpose else feat + + def forward(self, x,): + if self.transpose: + x = x.transpose(1,2) + feat, ind = self.quantizer(x) + ind = rearrange( + ind, "g b t r ->b t (g r)", + ) + embed_onehot = F.one_hot(ind.long(), self.n_ind).to(x.dtype) + e_mean = torch.mean(embed_onehot, dim=[0,1]) + e_mean = e_mean / (e_mean.sum(dim=1) + self.eps).unsqueeze(1) + perplexity = torch.exp(-torch.sum(e_mean * torch.log(e_mean + self.eps), dim=1)) + + return ( + torch.zeros(perplexity.shape, dtype=x.dtype, device=x.device), + feat.transpose(1,2) if self.transpose else feat, + perplexity, + None, + ind.transpose(1,2) if self.transpose else ind, + ) + +class DVAEDecoder(nn.Module): + def __init__(self, idim, odim, + n_layer = 12, bn_dim = 64, hidden = 256, + kernel = 7, dilation = 2, up = False + ): + super().__init__() + self.up = up + self.conv_in = nn.Sequential( + nn.Conv1d(idim, bn_dim, 3, 1, 1), nn.GELU(), + nn.Conv1d(bn_dim, hidden, 3, 1, 1) + ) + self.decoder_block = nn.ModuleList([ + ConvNeXtBlock(hidden, hidden* 4, kernel, dilation,) + for _ in range(n_layer)]) + self.conv_out = nn.Conv1d(hidden, odim, kernel_size=1, bias=False) + + def forward(self, input, conditioning=None): + # B, T, C + x = input.transpose(1, 2) + x = self.conv_in(x) + for f in self.decoder_block: + x = f(x, conditioning) + + x = self.conv_out(x) + return x.transpose(1, 2) + + +class DVAE(nn.Module): + def __init__( + self, decoder_config, vq_config, dim=512 + ): + super().__init__() + self.register_buffer('coef', torch.randn(1, 100, 1)) + + self.decoder = DVAEDecoder(**decoder_config) + self.out_conv = nn.Conv1d(dim, 100, 3, 1, 1, bias=False) + if vq_config is not None: + self.vq_layer = GFSQ(**vq_config) + else: + self.vq_layer = None + + def forward(self, inp): + + if self.vq_layer is not None: + vq_feats = self.vq_layer._embed(inp) + else: + vq_feats = inp.detach().clone() + + temp = torch.chunk(vq_feats, 2, dim=1) # flatten trick :) + temp = torch.stack(temp, -1) + vq_feats = temp.reshape(*temp.shape[:2], -1) + + vq_feats = vq_feats.transpose(1, 2) + dec_out = self.decoder(input=vq_feats) + dec_out = self.out_conv(dec_out.transpose(1, 2)) + mel = dec_out * self.coef + + return mel diff --git a/modules/ChatTTS/ChatTTS/model/gpt.py b/modules/ChatTTS/ChatTTS/model/gpt.py new file mode 100644 index 0000000000000000000000000000000000000000..da1967c04fddadc6bf0a5c21dbe049a65b5b3597 --- /dev/null +++ b/modules/ChatTTS/ChatTTS/model/gpt.py @@ -0,0 +1,270 @@ +import os +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +import logging +from tqdm import tqdm +from einops import rearrange +from transformers.cache_utils import Cache + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.nn.utils.parametrize as P +from torch.nn.utils.parametrizations import weight_norm +from transformers import LlamaModel, LlamaConfig + + +class LlamaMLP(nn.Module): + def __init__(self, hidden_size, intermediate_size): + super().__init__() + self.hidden_size = hidden_size + self.intermediate_size = intermediate_size + self.gate_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.up_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.down_proj = nn.Linear(self.intermediate_size, self.hidden_size, bias=False) + self.act_fn = F.silu + + def forward(self, x): + down_proj = self.down_proj(self.act_fn(self.gate_proj(x)) * self.up_proj(x)) + return down_proj + + +class GPT_warpper(nn.Module): + def __init__( + self, + gpt_config, + num_audio_tokens, + num_text_tokens, + num_vq=4, + **kwargs, + ): + super().__init__() + + self.logger = logging.getLogger(__name__) + self.gpt = self.build_model(gpt_config) + self.model_dim = self.gpt.config.hidden_size + + self.num_vq = num_vq + self.emb_code = nn.ModuleList([nn.Embedding(num_audio_tokens, self.model_dim) for i in range(self.num_vq)]) + self.emb_text = nn.Embedding(num_text_tokens, self.model_dim) + self.head_text = weight_norm(nn.Linear(self.model_dim, num_text_tokens, bias=False), name='weight') + self.head_code = nn.ModuleList([weight_norm(nn.Linear(self.model_dim, num_audio_tokens, bias=False), name='weight') for i in range(self.num_vq)]) + + def build_model(self, config): + + configuration = LlamaConfig(**config) + model = LlamaModel(configuration) + del model.embed_tokens + + return model + + def get_emb(self, input_ids, text_mask, **kwargs): + + emb_text = self.emb_text(input_ids[text_mask][:, 0]) + + emb_code = [self.emb_code[i](input_ids[~text_mask][:, i]) for i in range(self.num_vq)] + emb_code = torch.stack(emb_code, 2).sum(2) + + emb = torch.zeros((input_ids.shape[:-1])+(emb_text.shape[-1],), device=emb_text.device, dtype=emb_text.dtype) + emb[text_mask] = emb_text + emb[~text_mask] = emb_code.to(emb.dtype) + + return emb + + def prepare_inputs_for_generation( + self, input_ids, past_key_values=None, attention_mask=None, inputs_embeds=None, cache_position=None, **kwargs + ): + # With static cache, the `past_key_values` is None + # TODO joao: standardize interface for the different Cache classes and remove of this if + has_static_cache = False + if past_key_values is None: + past_key_values = getattr(self.gpt.layers[0].self_attn, "past_key_value", None) + has_static_cache = past_key_values is not None + + past_length = 0 + if past_key_values is not None: + if isinstance(past_key_values, Cache): + past_length = cache_position[0] if cache_position is not None else past_key_values.get_seq_length() + max_cache_length = ( + torch.tensor(past_key_values.get_max_length(), device=input_ids.device) + if past_key_values.get_max_length() is not None + else None + ) + cache_length = past_length if max_cache_length is None else torch.min(max_cache_length, past_length) + # TODO joao: remove this `else` after `generate` prioritizes `Cache` objects + else: + cache_length = past_length = past_key_values[0][0].shape[2] + max_cache_length = None + + # Keep only the unprocessed tokens: + # 1 - If the length of the attention_mask exceeds the length of input_ids, then we are in a setting where + # some of the inputs are exclusively passed as part of the cache (e.g. when passing input_embeds as + # input) + if attention_mask is not None and attention_mask.shape[1] > input_ids.shape[1]: + input_ids = input_ids[:, -(attention_mask.shape[1] - past_length) :] + # 2 - If the past_length is smaller than input_ids', then input_ids holds all input tokens. We can discard + # input_ids based on the past_length. + elif past_length < input_ids.shape[1]: + input_ids = input_ids[:, past_length:] + # 3 - Otherwise (past_length >= input_ids.shape[1]), let's assume input_ids only has unprocessed tokens. + + # If we are about to go beyond the maximum cache length, we need to crop the input attention mask. + if ( + max_cache_length is not None + and attention_mask is not None + and cache_length + input_ids.shape[1] > max_cache_length + ): + attention_mask = attention_mask[:, -max_cache_length:] + + position_ids = kwargs.get("position_ids", None) + if attention_mask is not None and position_ids is None: + # create position_ids on the fly for batch generation + position_ids = attention_mask.long().cumsum(-1) - 1 + position_ids.masked_fill_(attention_mask == 0, 1) + if past_key_values: + position_ids = position_ids[:, -input_ids.shape[1] :] + + # if `inputs_embeds` are passed, we only want to use them in the 1st generation step + if inputs_embeds is not None and past_key_values is None: + model_inputs = {"inputs_embeds": inputs_embeds} + else: + # The `contiguous()` here is necessary to have a static stride during decoding. torchdynamo otherwise + # recompiles graphs as the stride of the inputs is a guard. Ref: https://github.com/huggingface/transformers/pull/29114 + # TODO: use `next_tokens` directly instead. + model_inputs = {"input_ids": input_ids.contiguous()} + + input_length = position_ids.shape[-1] if position_ids is not None else input_ids.shape[-1] + if cache_position is None: + cache_position = torch.arange(past_length, past_length + input_length, device=input_ids.device) + else: + cache_position = cache_position[-input_length:] + + if has_static_cache: + past_key_values = None + + model_inputs.update( + { + "position_ids": position_ids, + "cache_position": cache_position, + "past_key_values": past_key_values, + "use_cache": kwargs.get("use_cache"), + "attention_mask": attention_mask, + } + ) + return model_inputs + + def generate( + self, + emb, + inputs_ids, + temperature, + eos_token, + attention_mask = None, + max_new_token = 2048, + min_new_token = 0, + LogitsWarpers = [], + LogitsProcessors = [], + infer_text=False, + return_attn=False, + return_hidden=False, + disable_tqdm=False + ): + if disable_tqdm: + tqdm = lambda x: x + else: + from tqdm import tqdm + + with torch.no_grad(): + + attentions = [] + hiddens = [] + + start_idx, end_idx = inputs_ids.shape[1], torch.zeros(inputs_ids.shape[0], device=inputs_ids.device, dtype=torch.long) + finish = torch.zeros(inputs_ids.shape[0], device=inputs_ids.device).bool() + + temperature = temperature[None].expand(inputs_ids.shape[0], -1) + temperature = rearrange(temperature, "b n -> (b n) 1") + + attention_mask_cache = torch.ones((inputs_ids.shape[0], inputs_ids.shape[1]+max_new_token,), dtype=torch.bool, device=inputs_ids.device) + if attention_mask is not None: + attention_mask_cache[:, :attention_mask.shape[1]] = attention_mask + + for i in tqdm(range(max_new_token)): + + model_input = self.prepare_inputs_for_generation(inputs_ids, + outputs.past_key_values if i!=0 else None, + attention_mask_cache[:, :inputs_ids.shape[1]], use_cache=True) + + if i == 0: + model_input['inputs_embeds'] = emb + else: + if infer_text: + model_input['inputs_embeds'] = self.emb_text(model_input['input_ids'][:,:,0]) + else: + code_emb = [self.emb_code[i](model_input['input_ids'][:,:,i]) for i in range(self.num_vq)] + model_input['inputs_embeds'] = torch.stack(code_emb, 3).sum(3) + + model_input['input_ids'] = None + outputs = self.gpt.forward(**model_input, output_attentions=return_attn) + attentions.append(outputs.attentions) + hidden_states = outputs[0] # 🐻 + if return_hidden: + hiddens.append(hidden_states[:, -1]) + + with P.cached(): + if infer_text: + logits = self.head_text(hidden_states) + else: + logits = torch.stack([self.head_code[i](hidden_states) for i in range(self.num_vq)], 3) + + logits = logits[:, -1].float() + + if not infer_text: + logits = rearrange(logits, "b c n -> (b n) c") + logits_token = rearrange(inputs_ids[:, start_idx:], "b c n -> (b n) c") + else: + logits_token = inputs_ids[:, start_idx:, 0] + + logits = logits / temperature + + for logitsProcessors in LogitsProcessors: + logits = logitsProcessors(logits_token, logits) + + for logitsWarpers in LogitsWarpers: + logits = logitsWarpers(logits_token, logits) + + if i < min_new_token: + logits[:, eos_token] = -torch.inf + + scores = F.softmax(logits, dim=-1) + + idx_next = torch.multinomial(scores, num_samples=1) + + if not infer_text: + idx_next = rearrange(idx_next, "(b n) 1 -> b n", n=self.num_vq) + finish = finish | (idx_next == eos_token).any(1) + inputs_ids = torch.cat([inputs_ids, idx_next.unsqueeze(1)], 1) + else: + finish = finish | (idx_next == eos_token).any(1) + inputs_ids = torch.cat([inputs_ids, idx_next.unsqueeze(-1).expand(-1, -1, self.num_vq)], 1) + + end_idx = end_idx + (~finish).int() + + if finish.all(): + break + + inputs_ids = [inputs_ids[idx, start_idx: start_idx+i] for idx, i in enumerate(end_idx.int())] + inputs_ids = [i[:, 0] for i in inputs_ids] if infer_text else inputs_ids + + if return_hidden: + hiddens = torch.stack(hiddens, 1) + hiddens = [hiddens[idx, :i] for idx, i in enumerate(end_idx.int())] + + if not finish.all(): + self.logger.warn(f'Incomplete result. hit max_new_token: {max_new_token}') + + return { + 'ids': inputs_ids, + 'attentions': attentions, + 'hiddens':hiddens, + } \ No newline at end of file diff --git a/modules/ChatTTS/ChatTTS/utils/gpu_utils.py b/modules/ChatTTS/ChatTTS/utils/gpu_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..13c7add8f07c600324a76e2fc16e5c4f60ed67fd --- /dev/null +++ b/modules/ChatTTS/ChatTTS/utils/gpu_utils.py @@ -0,0 +1,23 @@ + +import torch +import logging + +def select_device(min_memory = 2048): + logger = logging.getLogger(__name__) + if torch.cuda.is_available(): + available_gpus = [] + for i in range(torch.cuda.device_count()): + props = torch.cuda.get_device_properties(i) + free_memory = props.total_memory - torch.cuda.memory_reserved(i) + available_gpus.append((i, free_memory)) + selected_gpu, max_free_memory = max(available_gpus, key=lambda x: x[1]) + device = torch.device(f'cuda:{selected_gpu}') + free_memory_mb = max_free_memory / (1024 * 1024) + if free_memory_mb < min_memory: + logger.log(logging.WARNING, f'GPU {selected_gpu} has {round(free_memory_mb, 2)} MB memory left.') + device = torch.device('cpu') + else: + logger.log(logging.WARNING, f'No GPU found, use CPU instead') + device = torch.device('cpu') + + return device diff --git a/modules/ChatTTS/ChatTTS/utils/infer_utils.py b/modules/ChatTTS/ChatTTS/utils/infer_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..e37919e210454ecfa737e72958bb54c5258d7de4 --- /dev/null +++ b/modules/ChatTTS/ChatTTS/utils/infer_utils.py @@ -0,0 +1,154 @@ +import re +import torch +import torch.nn.functional as F + + +class CustomRepetitionPenaltyLogitsProcessorRepeat: + + def __init__(self, penalty: float, max_input_ids, past_window): + if not isinstance(penalty, float) or not (penalty > 0): + raise ValueError( + f"`penalty` has to be a strictly positive float, but is {penalty}" + ) + + self.penalty = penalty + self.max_input_ids = max_input_ids + self.past_window = past_window + + def __call__( + self, input_ids: torch.LongTensor, scores: torch.FloatTensor + ) -> torch.FloatTensor: + + input_ids = input_ids[:, -self.past_window :] + freq = F.one_hot(input_ids, scores.size(1)).sum(1) + freq[self.max_input_ids :] = 0 + alpha = self.penalty**freq + scores = torch.where(scores < 0, scores * alpha, scores / alpha) + + return scores + + +class CustomRepetitionPenaltyLogitsProcessor: + + def __init__(self, penalty: float, max_input_ids, past_window): + if not isinstance(penalty, float) or not (penalty > 0): + raise ValueError( + f"`penalty` has to be a strictly positive float, but is {penalty}" + ) + + self.penalty = penalty + self.max_input_ids = max_input_ids + self.past_window = past_window + + def __call__( + self, input_ids: torch.LongTensor, scores: torch.FloatTensor + ) -> torch.FloatTensor: + + input_ids = input_ids[:, -self.past_window :] + score = torch.gather(scores, 1, input_ids) + _score = score.detach().clone() + score = torch.where(score < 0, score * self.penalty, score / self.penalty) + score[input_ids >= self.max_input_ids] = _score[input_ids >= self.max_input_ids] + scores.scatter_(1, input_ids, score) + + return scores + + +def count_invalid_characters(s, reserved_tokens: list = []): + escaped_tokens = [re.escape(token) for token in reserved_tokens] + reserved_pattern = "|".join(escaped_tokens) + s = re.sub(rf"{reserved_pattern}", "", s) + pattern = re.compile(r"[^\u4e00-\u9fffA-Za-z,。、,\. ]") + non_alphabetic_chinese_chars = pattern.findall(s) + return set(non_alphabetic_chinese_chars) + + +def detect_language(sentence): + + chinese_char_pattern = re.compile(r"[\u4e00-\u9fff]") + english_word_pattern = re.compile(r"\b[A-Za-z]+\b") + + chinese_chars = chinese_char_pattern.findall(sentence) + english_words = english_word_pattern.findall(sentence) + + if len(chinese_chars) > len(english_words): + return "zh" + else: + return "en" + + +character_map = { + ":": ",", + ";": ",", + "!": "。", + "(": ",", + ")": ",", + "【": ",", + "】": ",", + "『": ",", + "』": ",", + "「": ",", + "」": ",", + "《": ",", + "》": ",", + "-": ",", + "‘": "", + "“": "", + "’": "", + "”": "", + ":": ",", + ";": ",", + "!": ".", + "(": ",", + ")": ",", + # '[': ',', + # ']': ',', + ">": ",", + "<": ",", + "-": ",", +} + +halfwidth_2_fullwidth_map = { + "!": "!", + '"': "“", + "'": "‘", + "#": "#", + "$": "$", + "%": "%", + "&": "&", + "(": "(", + ")": ")", + ",": ",", + "-": "-", + "*": "*", + "+": "+", + ".": "。", + "/": "/", + ":": ":", + ";": ";", + "<": "<", + "=": "=", + ">": ">", + "?": "?", + "@": "@", + # '[': '[', + "\\": "\", + # ']': ']', + "^": "^", + # '_': '_', + "`": "`", + "{": "{", + "|": "|", + "}": "}", + "~": "~", +} + + +def apply_half2full_map(text): + translation_table = str.maketrans(halfwidth_2_fullwidth_map) + return text.translate(translation_table) + + +def apply_character_map(text): + translation_table = str.maketrans(character_map) + return text.translate(translation_table) diff --git a/modules/ChatTTS/ChatTTS/utils/io_utils.py b/modules/ChatTTS/ChatTTS/utils/io_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..b3f5eda06504ac69ceff9cb4fe5ecb0fbf112b3f --- /dev/null +++ b/modules/ChatTTS/ChatTTS/utils/io_utils.py @@ -0,0 +1,14 @@ + +import os +import logging + +def get_latest_modified_file(directory): + logger = logging.getLogger(__name__) + + files = [os.path.join(directory, f) for f in os.listdir(directory)] + if not files: + logger.log(logging.WARNING, f'No files found in the directory: {directory}') + return None + latest_file = max(files, key=os.path.getmtime) + + return latest_file \ No newline at end of file diff --git a/modules/ChatTTS/LICENSE b/modules/ChatTTS/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..dc1adf98654156baeb94d2e055c224a847e5820d --- /dev/null +++ b/modules/ChatTTS/LICENSE @@ -0,0 +1,157 @@ +# Attribution-NonCommercial-NoDerivatives 4.0 International + +> *Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.* +> +> ### Using Creative Commons Public Licenses +> +> Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. +> +> * __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). +> +> * __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). + +## Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +### Section 1 – Definitions. + +a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + +b. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + +f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + +h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + +i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + +h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. + +i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. + +j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + +k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + +l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +### Section 2 – Scope. + +a. ___License grant.___ + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and + + B. produce and reproduce, but not Share, Adapted Material for NonCommercial purposes only. + + 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. __Term.__ The term of this Public License is specified in Section 6(a). + + 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. __Downstream recipients.__ + + A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. ___Other rights.___ + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. + +### Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +a. ___Attribution.___ + + 1. If You Share the Licensed Material, You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + +### Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only and provided You do not Share Adapted Material; + +b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +### Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ + +b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ + +c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +### Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + +c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +### Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +### Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + +b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + +c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +> Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. +> +> Creative Commons may be contacted at [creativecommons.org](http://creativecommons.org). diff --git a/modules/ChatTTS/README.md b/modules/ChatTTS/README.md new file mode 100644 index 0000000000000000000000000000000000000000..ec419f909b780355395b27a6dafa4506e17d9fc2 --- /dev/null +++ b/modules/ChatTTS/README.md @@ -0,0 +1,132 @@ +# ChatTTS +[**English**](./README.md) | [**中文简体**](./README_CN.md) + +ChatTTS is a text-to-speech model designed specifically for dialogue scenario such as LLM assistant. It supports both English and Chinese languages. Our model is trained with 100,000+ hours composed of chinese and english. The open-source version on **[HuggingFace](https://huggingface.co/2Noise/ChatTTS)** is a 40,000 hours pre trained model without SFT. + +For formal inquiries about model and roadmap, please contact us at **open-source@2noise.com**. You could join our QQ group: 808364215 for discussion. Adding github issues is always welcomed. + +--- +## Highlights +1. **Conversational TTS**: ChatTTS is optimized for dialogue-based tasks, enabling natural and expressive speech synthesis. It supports multiple speakers, facilitating interactive conversations. +2. **Fine-grained Control**: The model could predict and control fine-grained prosodic features, including laughter, pauses, and interjections. +3. **Better Prosody**: ChatTTS surpasses most of open-source TTS models in terms of prosody. We provide pretrained models to support further research and development. + +For the detailed description of the model, you can refer to **[video on Bilibili](https://www.bilibili.com/video/BV1zn4y1o7iV)** + +--- + +## Disclaimer + +This repo is for academic purposes only. It is intended for educational and research use, and should not be used for any commercial or legal purposes. The authors do not guarantee the accuracy, completeness, or reliability of the information. The information and data used in this repo, are for academic and research purposes only. The data obtained from publicly available sources, and the authors do not claim any ownership or copyright over the data. + +ChatTTS is a powerful text-to-speech system. However, it is very important to utilize this technology responsibly and ethically. To limit the use of ChatTTS, we added a small amount of high-frequency noise during the training of the 40,000-hour model, and compressed the audio quality as much as possible using MP3 format, to prevent malicious actors from potentially using it for criminal purposes. At the same time, we have internally trained a detection model and plan to open-source it in the future. + + +--- +## Usage + +

Basic usage

+ +```python +import ChatTTS +from IPython.display import Audio + +chat = ChatTTS.Chat() +chat.load_models(compile=False) # Set to True for better performance + +texts = ["PUT YOUR TEXT HERE",] + +wavs = chat.infer(texts, ) + +torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000) +``` + +

Advanced usage

+ +```python +################################### +# Sample a speaker from Gaussian. + +rand_spk = chat.sample_random_speaker() + +params_infer_code = { + 'spk_emb': rand_spk, # add sampled speaker + 'temperature': .3, # using custom temperature + 'top_P': 0.7, # top P decode + 'top_K': 20, # top K decode +} + +################################### +# For sentence level manual control. + +# use oral_(0-9), laugh_(0-2), break_(0-7) +# to generate special token in text to synthesize. +params_refine_text = { + 'prompt': '[oral_2][laugh_0][break_6]' +} + +wav = chat.infer(texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code) + +################################### +# For word level manual control. +text = 'What is [uv_break]your favorite english food?[laugh][lbreak]' +wav = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code) +torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000) +``` + +
+

Example: self introduction

+ +```python +inputs_en = """ +chat T T S is a text to speech model designed for dialogue applications. +[uv_break]it supports mixed language input [uv_break]and offers multi speaker +capabilities with precise control over prosodic elements [laugh]like like +[uv_break]laughter[laugh], [uv_break]pauses, [uv_break]and intonation. +[uv_break]it delivers natural and expressive speech,[uv_break]so please +[uv_break] use the project responsibly at your own risk.[uv_break] +""".replace('\n', '') # English is still experimental. + +params_refine_text = { + 'prompt': '[oral_2][laugh_0][break_4]' +} +# audio_array_cn = chat.infer(inputs_cn, params_refine_text=params_refine_text) +audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text) +torchaudio.save("output3.wav", torch.from_numpy(audio_array_en[0]), 24000) +``` +[male speaker](https://github.com/2noise/ChatTTS/assets/130631963/e0f51251-db7f-4d39-a0e9-3e095bb65de1) + +[female speaker](https://github.com/2noise/ChatTTS/assets/130631963/f5dcdd01-1091-47c5-8241-c4f6aaaa8bbd) +
+ +--- +## Roadmap +- [x] Open-source the 40k hour base model and spk_stats file +- [ ] Open-source VQ encoder and Lora training code +- [ ] Streaming audio generation without refining the text* +- [ ] Open-source the 40k hour version with multi-emotion control +- [ ] ChatTTS.cpp maybe? (PR or new repo are welcomed.) + +---- +## FAQ + +##### How much VRAM do I need? How about infer speed? +For a 30-second audio clip, at least 4GB of GPU memory is required. For the 4090 GPU, it can generate audio corresponding to approximately 7 semantic tokens per second. The Real-Time Factor (RTF) is around 0.3. + +##### model stability is not good enough, with issues such as multi speakers or poor audio quality. + +This is a problem that typically occurs with autoregressive models(for bark and valle). It's generally difficult to avoid. One can try multiple samples to find a suitable result. + +##### Besides laughter, can we control anything else? Can we control other emotions? + +In the current released model, the only token-level control units are [laugh], [uv_break], and [lbreak]. In future versions, we may open-source models with additional emotional control capabilities. + +--- +## Acknowledgements +- [bark](https://github.com/suno-ai/bark), [XTTSv2](https://github.com/coqui-ai/TTS) and [valle](https://arxiv.org/abs/2301.02111) demostrate a remarkable TTS result by a autoregressive-style system. +- [fish-speech](https://github.com/fishaudio/fish-speech) reveals capability of GVQ as audio tokenizer for LLM modeling. +- [vocos](https://github.com/gemelo-ai/vocos) which is used as a pretrained vocoder. + +--- +## Special Appreciation +- [wlu-audio lab](https://audio.westlake.edu.cn/) for early algorithm experiments. diff --git a/modules/ChatTTS/README_CN.md b/modules/ChatTTS/README_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..78cfb54ed0e634ccb5d5312d2dcc7ee57099e696 --- /dev/null +++ b/modules/ChatTTS/README_CN.md @@ -0,0 +1,136 @@ +# ChatTTS +[**English**](./README.md) | [**中文简体**](./README_CN.md) + +ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本. + +如需就模型进行正式商业咨询,请发送邮件至 **open-source@2noise.com**。对于中文用户,您可以加入我们的QQ群:808364215 进行讨论。同时欢迎在GitHub上提出问题。如果遇到无法使用 **[HuggingFace](https://huggingface.co/2Noise/ChatTTS)** 的情况,可以在 [modelscope](https://www.modelscope.cn/models/pzc163/chatTTS) 上进行下载. + +--- +## 亮点 +1. **对话式 TTS**: ChatTTS针对对话式任务进行了优化,实现了自然流畅的语音合成,同时支持多说话人。 +2. **细粒度控制**: 该模型能够预测和控制细粒度的韵律特征,包括笑声、停顿和插入词等。 +3. **更好的韵律**: ChatTTS在韵律方面超越了大部分开源TTS模型。同时提供预训练模型,支持进一步的研究。 + +对于模型的具体介绍, 可以参考B站的 **[宣传视频](https://www.bilibili.com/video/BV1zn4y1o7iV)** + +--- + +## 免责声明 +本文件中的信息仅供学术交流使用。其目的是用于教育和研究,不得用于任何商业或法律目的。作者不保证信息的准确性、完整性或可靠性。本文件中使用的信息和数据,仅用于学术研究目的。这些数据来自公开可用的来源,作者不对数据的所有权或版权提出任何主张。 + +ChatTTS是一个强大的文本转语音系统。然而,负责任地和符合伦理地利用这项技术是非常重要的。为了限制ChatTTS的使用,我们在4w小时模型的训练过程中添加了少量额外的高频噪音,并用mp3格式尽可能压低了音质,以防不法分子用于潜在的犯罪可能。同时我们在内部训练了检测模型,并计划在未来开放。 + +--- +## 用法 + +

基本用法

+ +```python +import ChatTTS +from IPython.display import Audio + +chat = ChatTTS.Chat() +chat.load_models(compile=False) # 设置为True以获得更快速度 + +texts = ["在这里输入你的文本",] + +wavs = chat.infer(texts, use_decoder=True) + +torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000) +``` + +

进阶用法

+ +```python +################################### +# Sample a speaker from Gaussian. + +rand_spk = chat.sample_random_speaker() + +params_infer_code = { + 'spk_emb': rand_spk, # add sampled speaker + 'temperature': .3, # using custom temperature + 'top_P': 0.7, # top P decode + 'top_K': 20, # top K decode +} + +################################### +# For sentence level manual control. + +# use oral_(0-9), laugh_(0-2), break_(0-7) +# to generate special token in text to synthesize. +params_refine_text = { + 'prompt': '[oral_2][laugh_0][break_6]' +} + +wav = chat.infer(texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code) + +################################### +# For word level manual control. +# use_decoder=False to infer faster with a bit worse quality +text = 'What is [uv_break]your favorite english food?[laugh][lbreak]' +wav = chat.infer(text, skip_refine_text=True, params_infer_code=params_infer_code, use_decoder=False) + +torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000) +``` + +
+

自我介绍样例

+ +```python +inputs_cn = """ +chat T T S 是一款强大的对话式文本转语音模型。它有中英混读和多说话人的能力。 +chat T T S 不仅能够生成自然流畅的语音,还能控制[laugh]笑声啊[laugh], +停顿啊[uv_break]语气词啊等副语言现象[uv_break]。这个韵律超越了许多开源模型[uv_break]。 +请注意,chat T T S 的使用应遵守法律和伦理准则,避免滥用的安全风险。[uv_break]' +""".replace('\n', '') + +params_refine_text = { + 'prompt': '[oral_2][laugh_0][break_4]' +} +audio_array_cn = chat.infer(inputs_cn, params_refine_text=params_refine_text) +# audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text) + +torchaudio.save("output3.wav", torch.from_numpy(audio_array_cn[0]), 24000) +``` +[男说话人](https://github.com/2noise/ChatTTS/assets/130631963/bbfa3b83-2b67-4bb6-9315-64c992b63788) + +[女说话人](https://github.com/2noise/ChatTTS/assets/130631963/e061f230-0e05-45e6-8e4e-0189f2d260c4) +
+ + +--- +## 计划路线 +- [x] 开源4w小时基础模型和spk_stats文件 +- [ ] 开源VQ encoder和Lora 训练代码 +- [ ] 在非refine text情况下, 流式生成音频* +- [ ] 开源多情感可控的4w小时版本 +- [ ] ChatTTS.cpp maybe? (欢迎社区PR或独立的新repo) + +--- +## 常见问题 + +##### 连不上HuggingFace +请使用[modelscope](https://www.modelscope.cn/models/pzc163/chatTTS)的版本. 并设置cache的位置: +```python +chat.load_models(source='local', local_path='你的下载位置') +``` + +##### 我要多少显存? Infer的速度是怎么样的? +对于30s的音频, 至少需要4G的显存. 对于4090, 1s生成约7个字所对应的音频. RTF约0.3. + +##### 模型稳定性似乎不够好, 会出现其他说话人或音质很差的现象. +这是自回归模型通常都会出现的问题. 说话人可能会在中间变化, 可能会采样到音质非常差的结果, 这通常难以避免. 可以多采样几次来找到合适的结果. + +##### 除了笑声还能控制什么吗? 还能控制其他情感吗? +在现在放出的模型版本中, 只有[laugh]和[uv_break], [lbreak]作为字级别的控制单元. 在未来的版本中我们可能会开源其他情感控制的版本. + +--- +## 致谢 +- [bark](https://github.com/suno-ai/bark),[XTTSv2](https://github.com/coqui-ai/TTS)和[valle](https://arxiv.org/abs/2301.02111)展示了自回归任务用于TTS任务的可能性. +- [fish-speech](https://github.com/fishaudio/fish-speech)一个优秀的自回归TTS模型, 揭示了GVQ用于LLM任务的可能性. +- [vocos](https://github.com/gemelo-ai/vocos)作为模型中的vocoder. + +--- +## 特别致谢 +- [wlu-audio lab](https://audio.westlake.edu.cn/)为我们提供了早期算法试验的支持. diff --git a/modules/ChatTTS/example.ipynb b/modules/ChatTTS/example.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..b229e702a2cbab53cf03fe2712bc27a4ebad25e3 --- /dev/null +++ b/modules/ChatTTS/example.ipynb @@ -0,0 +1,407 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "torch._dynamo.config.cache_size_limit = 64\n", + "torch._dynamo.config.suppress_errors = True\n", + "torch.set_float32_matmul_precision('high')\n", + "\n", + "import ChatTTS\n", + "from IPython.display import Audio" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Models" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "chat = ChatTTS.Chat()\n", + "chat.load_models()\n", + "\n", + "# Use force_redownload=True if the weights updated.\n", + "# chat.load_models(force_redownload=True)\n", + "\n", + "# If you download the weights manually, set source='locals'.\n", + "# chat.load_models(source='local', local_path='YOUR LOCAL PATH')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Batch infer" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:ChatTTS.core:All initialized.\n", + " 28%|██▊ | 106/384 [00:00<00:01, 140.38it/s]\n", + " 47%|████▋ | 960/2048 [00:07<00:08, 133.25it/s]\n" + ] + } + ], + "source": [ + "texts = [\"So we found being competitive and collaborative was a huge way of staying motivated towards our goals, so one person to call when you fall off, one person who gets you back on then one person to actually do the activity with.\",]*3 \\\n", + " + [\"我觉得像我们这些写程序的人,他,我觉得多多少少可能会对开源有一种情怀在吧我觉得开源是一个很好的形式。现在其实最先进的技术掌握在一些公司的手里的话,就他们并不会轻易的开放给所有的人用。\"]*3 \n", + " \n", + "wavs = chat.infer(texts)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Audio(wavs[0], rate=24_000, autoplay=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Audio(wavs[3], rate=24_000, autoplay=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Custom params" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:ChatTTS.core:All initialized.\n", + " 14%|█▍ | 53/384 [00:00<00:02, 146.65it/s]\n", + " 22%|██▏ | 452/2048 [00:03<00:11, 140.51it/s]\n" + ] + } + ], + "source": [ + "params_infer_code = {'prompt':'[speed_5]', 'temperature':.3}\n", + "params_refine_text = {'prompt':'[oral_2][laugh_0][break_6]'}\n", + "\n", + "wav = chat.infer('四川美食可多了,有麻辣火锅、宫保鸡丁、麻婆豆腐、担担面、回锅肉、夫妻肺片等,每样都让人垂涎三尺。', \\\n", + " params_refine_text=params_refine_text, params_infer_code=params_infer_code)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Audio(wav[0], rate=24_000, autoplay=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### fix random speaker" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "rand_spk = chat.sample_random_speaker()\n", + "params_infer_code = {'spk_emb' : rand_spk, }\n", + "\n", + "wav = chat.infer('四川美食确实以辣闻名,但也有不辣的选择。比如甜水面、赖汤圆、蛋烘糕、叶儿粑等,这些小吃口味温和,甜而不腻,也很受欢迎。', \\\n", + " params_refine_text=params_refine_text, params_infer_code=params_infer_code)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Audio(wav[0], rate=24_000, autoplay=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Two stage control" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:ChatTTS.core:All initialized.\n", + " 23%|██▎ | 87/384 [00:00<00:01, 150.60it/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "['so we found being competitive and collaborative [uv_break] was a huge way of staying [uv_break] motivated towards our goals, [uv_break] so [uv_break] one person to call [uv_break] when you fall off, [uv_break] one person who [uv_break] gets you back [uv_break] on then [uv_break] one person [uv_break] to actually do the activity with.']" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text = \"So we found being competitive and collaborative was a huge way of staying motivated towards our goals, so one person to call when you fall off, one person who gets you back on then one person to actually do the activity with.\"\n", + "chat.infer(text, refine_text_only=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:ChatTTS.core:All initialized.\n", + " 49%|████▊ | 995/2048 [00:07<00:07, 141.85it/s]\n" + ] + } + ], + "source": [ + "text = 'so we found being competitive and collaborative [uv_break] was a huge way of staying [uv_break] motivated towards our goals, [uv_break] so [uv_break] one person to call [uv_break] when you fall off, [uv_break] one person who [uv_break] gets you back [uv_break] on then [uv_break] one person [uv_break] to actually do the activity with.'\n", + "wav = chat.infer(text, skip_refine_text=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## LLM Call" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from ChatTTS.experimental.llm import llm_api\n", + "\n", + "API_KEY = ''\n", + "client = llm_api(api_key=API_KEY,\n", + " base_url=\"https://api.deepseek.com\",\n", + " model=\"deepseek-chat\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.deepseek.com/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "四川美食可多了, 有麻辣火锅、宫保鸡丁、麻婆豆腐、担担面、回锅肉、夫妻肺片、串串香、龙抄手、宜宾燃面、乐山钵钵鸡等, 每样都让人垂涎三尺。\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.deepseek.com/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "四川美食可多了,有麻辣火锅、宫保鸡丁、麻婆豆腐、担担面、回锅肉、夫妻肺片、串串香、龙抄手、宜宾燃面、乐山钵钵鸡等,每样都让人垂涎三尺。\n" + ] + } + ], + "source": [ + "user_question = '四川有哪些好吃的美食呢?'\n", + "text = client.call(user_question, prompt_version = 'deepseek')\n", + "print(text)\n", + "text = client.call(text, prompt_version = 'deepseek_TN')\n", + "print(text)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:ChatTTS.core:All initialized.\n", + " 20%|█▉ | 75/384 [00:00<00:02, 144.93it/s]\n", + " 32%|███▏ | 647/2048 [00:04<00:09, 140.27it/s]\n" + ] + } + ], + "source": [ + "params_infer_code = {'spk_emb' : rand_spk, 'temperature':.3}\n", + "\n", + "wav = chat.infer(text, params_infer_code=params_infer_code)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/modules/ChatTTS/requirements.txt b/modules/ChatTTS/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..cab134c66c4fd8f2045a7ea007c24970ac902cc1 --- /dev/null +++ b/modules/ChatTTS/requirements.txt @@ -0,0 +1,8 @@ +omegaconf~=2.3.0 +# torch~=2.1.0 +tqdm +einops +vector_quantize_pytorch +transformers~=4.41.1 +vocos +IPython \ No newline at end of file diff --git a/modules/SentenceSplitter.py b/modules/SentenceSplitter.py new file mode 100644 index 0000000000000000000000000000000000000000..6865ce68d778bba60893981d96f324fe1ee88c17 --- /dev/null +++ b/modules/SentenceSplitter.py @@ -0,0 +1,70 @@ +import re +import zhon + + +def split_zhon_sentence(text): + result = [] + pattern = re.compile(zhon.hanzi.sentence) + start = 0 + for match in pattern.finditer(text): + # 获取匹配的中文句子 + end = match.end() + result.append(text[start:end]) + start = end + + # 最后一个中文句子后面的内容(如果有)也需要添加到结果中 + if start < len(text): + result.append(text[start:]) + + result = [t for t in result if t.strip()] + return result + + +# 解析文本 并根据停止符号分割成句子 +# 可以设置最大阈值,即如果分割片段小于这个阈值会与下一段合并 +class SentenceSplitter: + def __init__(self, threshold=100): + self.sentence_threshold = threshold + + def parse(self, text): + sentences = split_zhon_sentence(text) + + # 合并小于最大阈值的片段 + merged_sentences = [] + temp_sentence = [] + for sentence in sentences: + if len(sentence) < self.sentence_threshold: + temp_sentence.extend(sentence) + if len(temp_sentence) >= self.sentence_threshold: + merged_sentences.append(temp_sentence) + temp_sentence = [] + else: + if temp_sentence: + merged_sentences.append(temp_sentence) + temp_sentence = [] + merged_sentences.append(sentence) + + if temp_sentence: + merged_sentences.append(temp_sentence) + + joind_sentences = [ + "".join(sentence) for sentence in merged_sentences if sentence + ] + return joind_sentences + + +if __name__ == "__main__": + max_threshold = 100 + parser = SentenceSplitter(max_threshold) + text = """ +中华美食,作为世界饮食文化的瑰宝,以其丰富的种类、独特的风味和精湛的烹饪技艺而闻名于世。中国地大物博,各地区的饮食习惯和烹饪方法各具特色,形成了独树一帜的美食体系。从北方的京鲁菜、东北菜,到南方的粤菜、闽菜,无不展现出中华美食的多样性。 + +在中华美食的世界里,五味调和,色香味俱全。无论是辣味浓郁的川菜,还是清淡鲜美的淮扬菜,都能够满足不同人的口味需求。除了味道上的独特,中华美食还注重色彩的搭配和形态的美感,让每一道菜品不仅是味觉的享受,更是一场视觉的盛宴。 + +中华美食不仅仅是食物,更是一种文化的传承。每一道菜背后都有着深厚的历史背景和文化故事。比如,北京的烤鸭,代表着皇家气派;而西安的羊肉泡馍,则体现了浓郁的地方风情。中华美食的精髓在于它追求的“天人合一”,讲究食材的自然性和烹饪过程中的和谐。 + +总之,中华美食博大精深,其丰富的口感和多样的烹饪技艺,构成了一个充满魅力和无限可能的美食世界。无论你来自哪里,都会被这独特的美食文化所吸引和感动。 + """ + result = parser.parse(text) + for idx, sentence in enumerate(result): + print(f"Sentence {idx + 1}: {sentence}") diff --git a/modules/SynthesizeSegments.py b/modules/SynthesizeSegments.py new file mode 100644 index 0000000000000000000000000000000000000000..3fcaa509084acfaced7be32ef1f38341f4fdab8c --- /dev/null +++ b/modules/SynthesizeSegments.py @@ -0,0 +1,284 @@ +import numpy as np +from pydub import AudioSegment +from typing import Any, List, Dict +from scipy.io.wavfile import write +import io +from modules.utils.audio import time_stretch, pitch_shift +from modules import generate_audio +from modules.normalization import text_normalize +import logging +import json +import random + +from modules.speaker import Speaker + +logger = logging.getLogger(__name__) + + +def audio_data_to_segment(audio_data, sr): + byte_io = io.BytesIO() + write(byte_io, rate=sr, data=audio_data) + byte_io.seek(0) + + return AudioSegment.from_file(byte_io, format="wav") + + +def combine_audio_segments(audio_segments: list) -> AudioSegment: + combined_audio = AudioSegment.empty() + for segment in audio_segments: + combined_audio += segment + return combined_audio + + +def apply_prosody( + audio_segment: AudioSegment, rate: float, volume: float, pitch: float +) -> AudioSegment: + if rate != 1: + audio_segment = time_stretch(audio_segment, rate) + + if volume != 0: + audio_segment += volume + + if pitch != 0: + audio_segment = pitch_shift(audio_segment, pitch) + + return audio_segment + + +def to_number(value, t, default=0): + try: + number = t(value) + return number + except (ValueError, TypeError) as e: + return default + + +class SynthesizeSegments: + batch_default_spk_seed = int(np.random.randint(0, 2**32 - 1)) + batch_default_infer_seed = int(np.random.randint(0, 2**32 - 1)) + + def __init__(self, batch_size: int = 8): + self.batch_size = batch_size + + def segment_to_generate_params(self, segment: Dict[str, Any]) -> Dict[str, Any]: + text = segment.get("text", "") + is_end = segment.get("is_end", False) + + text = str(text).strip() + + attrs = segment.get("attrs", {}) + spk = attrs.get("spk", "") + if isinstance(spk, str): + spk = int(spk) + seed = to_number(attrs.get("seed", ""), int, -1) + top_k = to_number(attrs.get("top_k", ""), int, None) + top_p = to_number(attrs.get("top_p", ""), float, None) + temp = to_number(attrs.get("temp", ""), float, None) + + prompt1 = attrs.get("prompt1", "") + prompt2 = attrs.get("prompt2", "") + prefix = attrs.get("prefix", "") + disable_normalize = attrs.get("normalize", "") == "False" + + params = { + "text": text, + "temperature": temp if temp is not None else 0.3, + "top_P": top_p if top_p is not None else 0.5, + "top_K": top_k if top_k is not None else 20, + "spk": spk if spk else -1, + "infer_seed": seed if seed else -1, + "prompt1": prompt1 if prompt1 else "", + "prompt2": prompt2 if prompt2 else "", + "prefix": prefix if prefix else "", + } + + if not disable_normalize: + params["text"] = text_normalize(text, is_end=is_end) + + # Set default values for spk and infer_seed + if params["spk"] == -1: + params["spk"] = self.batch_default_spk_seed + if params["infer_seed"] == -1: + params["infer_seed"] = self.batch_default_infer_seed + + return params + + def bucket_segments( + self, segments: List[Dict[str, Any]] + ) -> List[List[Dict[str, Any]]]: + # Create a dictionary to hold buckets + buckets = {} + for segment in segments: + params = self.segment_to_generate_params(segment) + + key_params = params + if isinstance(key_params.get("spk"), Speaker): + key_params["spk"] = str(key_params["spk"].id) + key = json.dumps( + {k: v for k, v in key_params.items() if k != "text"}, sort_keys=True + ) + if params["spk"] == -1 or params["infer_seed"] == -1: + key = random.random() + buckets[key] = [segment] + else: + if key not in buckets: + buckets[key] = [] + buckets[key].append(segment) + + # Convert dictionary to list of buckets + bucket_list = list(buckets.values()) + return bucket_list + + def synthesize_segments(self, segments: List[Dict[str, Any]]) -> List[AudioSegment]: + audio_segments = [None] * len( + segments + ) # Create a list with the same length as segments + buckets = self.bucket_segments(segments) + logger.debug(f"segments len: {len(segments)}") + logger.debug(f"bucket pool size: {len(buckets)}") + for bucket in buckets: + for i in range(0, len(bucket), self.batch_size): + batch = bucket[i : i + self.batch_size] + param_arr = [ + self.segment_to_generate_params(segment) for segment in batch + ] + texts = [params["text"] for params in param_arr] + + params = param_arr[0] # Use the first segment to get the parameters + audio_datas = generate_audio.generate_audio_batch( + texts=texts, + temperature=params["temperature"], + top_P=params["top_P"], + top_K=params["top_K"], + spk=params["spk"], + infer_seed=params["infer_seed"], + prompt1=params["prompt1"], + prompt2=params["prompt2"], + prefix=params["prefix"], + ) + for idx, segment in enumerate(batch): + (sr, audio_data) = audio_datas[idx] + rate = float(segment.get("rate", "1.0")) + volume = float(segment.get("volume", "0")) + pitch = float(segment.get("pitch", "0")) + + audio_segment = audio_data_to_segment(audio_data, sr) + audio_segment = apply_prosody(audio_segment, rate, volume, pitch) + original_index = segments.index( + segment + ) # Get the original index of the segment + audio_segments[original_index] = ( + audio_segment # Place the audio_segment in the correct position + ) + + return audio_segments + + +def generate_audio_segment( + text: str, + spk: int = -1, + seed: int = -1, + top_p: float = 0.5, + top_k: int = 20, + temp: float = 0.3, + prompt1: str = "", + prompt2: str = "", + prefix: str = "", + enable_normalize=True, + is_end: bool = False, +) -> AudioSegment: + if enable_normalize: + text = text_normalize(text, is_end=is_end) + + logger.debug(f"generate segment: {text}") + + sample_rate, audio_data = generate_audio.generate_audio( + text=text, + temperature=temp if temp is not None else 0.3, + top_P=top_p if top_p is not None else 0.5, + top_K=top_k if top_k is not None else 20, + spk=spk if spk else -1, + infer_seed=seed if seed else -1, + prompt1=prompt1 if prompt1 else "", + prompt2=prompt2 if prompt2 else "", + prefix=prefix if prefix else "", + ) + + byte_io = io.BytesIO() + write(byte_io, sample_rate, audio_data) + byte_io.seek(0) + + return AudioSegment.from_file(byte_io, format="wav") + + +def synthesize_segment(segment: Dict[str, Any]) -> AudioSegment | None: + if "break" in segment: + pause_segment = AudioSegment.silent(duration=segment["break"]) + return pause_segment + + attrs = segment.get("attrs", {}) + text = segment.get("text", "") + is_end = segment.get("is_end", False) + + text = str(text).strip() + + if text == "": + return None + + spk = attrs.get("spk", "") + if isinstance(spk, str): + spk = int(spk) + seed = to_number(attrs.get("seed", ""), int, -1) + top_k = to_number(attrs.get("top_k", ""), int, None) + top_p = to_number(attrs.get("top_p", ""), float, None) + temp = to_number(attrs.get("temp", ""), float, None) + + prompt1 = attrs.get("prompt1", "") + prompt2 = attrs.get("prompt2", "") + prefix = attrs.get("prefix", "") + disable_normalize = attrs.get("normalize", "") == "False" + + audio_segment = generate_audio_segment( + text, + enable_normalize=not disable_normalize, + spk=spk, + seed=seed, + top_k=top_k, + top_p=top_p, + temp=temp, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + is_end=is_end, + ) + + rate = float(attrs.get("rate", "1.0")) + volume = float(attrs.get("volume", "0")) + pitch = float(attrs.get("pitch", "0")) + + audio_segment = apply_prosody(audio_segment, rate, volume, pitch) + + return audio_segment + + +# 示例使用 +if __name__ == "__main__": + ssml_segments = [ + { + "text": "大🍌,一条大🍌,嘿,你的感觉真的很奇妙 [lbreak]", + "attrs": {"spk": 2, "temp": 0.1, "seed": 42}, + }, + { + "text": "大🍉,一个大🍉,嘿,你的感觉真的很奇妙 [lbreak]", + "attrs": {"spk": 2, "temp": 0.1, "seed": 42}, + }, + { + "text": "大🍌,一条大🍌,嘿,你的感觉真的很奇妙 [lbreak]", + "attrs": {"spk": 2, "temp": 0.3, "seed": 42}, + }, + ] + + synthesizer = SynthesizeSegments(batch_size=2) + audio_segments = synthesizer.synthesize_segments(ssml_segments) + combined_audio = combine_audio_segments(audio_segments) + combined_audio.export("output.wav", format="wav") diff --git a/modules/api/Api.py b/modules/api/Api.py new file mode 100644 index 0000000000000000000000000000000000000000..8e51df95f1bf5c5289473a712f2df446847df640 --- /dev/null +++ b/modules/api/Api.py @@ -0,0 +1,91 @@ +from fastapi import FastAPI, APIRouter +from fastapi.middleware.cors import CORSMiddleware + +import logging + +from fastapi.staticfiles import StaticFiles + +import fnmatch + + +def is_excluded(path, exclude_patterns): + """ + 检查路径是否被排除 + + :param path: 需要检查的路径 + :param exclude_patterns: 包含通配符的排除路径列表 + :return: 如果路径被排除,返回 True;否则返回 False + """ + for pattern in exclude_patterns: + if fnmatch.fnmatch(path, pattern): + print(path, pattern) + return True + return False + + +class APIManager: + def __init__(self, no_docs=False, exclude_patterns=[]): + self.app = FastAPI( + title="ChatTTS Forge API", + description="ChatTTS-Forge 是一个功能强大的文本转语音生成工具,支持通过类 SSML 语法生成丰富的音频长文本,并提供全面的 API 服务,适用于各种场景。\n\nChatTTS-Forge is a powerful text-to-speech generation tool that supports generating rich audio long texts through class SSML syntax\n\n https://github.com/lenML/ChatTTS-Forge", + version="0.1.0", + redoc_url=None if no_docs else "/redoc", + docs_url=None if no_docs else "/docs", + ) + self.registered_apis = {} + self.logger = logging.getLogger(__name__) + self.exclude = exclude_patterns + + def is_excluded(self, path): + return is_excluded(path, self.exclude) + + def set_cors( + self, + allow_origins: list = ["*"], + allow_credentials: bool = True, + allow_methods: list = ["*"], + allow_headers: list = ["*"], + ): + self.app.add_middleware( + CORSMiddleware, + allow_origins=allow_origins, + allow_credentials=allow_credentials, + allow_methods=allow_methods, + allow_headers=allow_headers, + ) + + def setup_playground(self): + app = self.app + app.mount( + "/playground", + StaticFiles(directory="playground", html=True), + name="playground", + ) + + def get(self, path: str, **kwargs): + def decorator(func): + if self.is_excluded(path): + return func + + self.app.get(path, **kwargs)(func) + + self.registered_apis[path] = func + self.logger.info(f"Registered API: GET {path}") + + return func + + return decorator + + def post(self, path: str, **kwargs): + def decorator(func): + if self.is_excluded(path): + return func + + self.app.post(path, **kwargs)(func) + + self.registered_apis[path] = func + self.logger.info(f"Registered API: POST {path}") + + return func + + return decorator diff --git a/modules/api/__init__.py b/modules/api/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/api/impl/__init__.py b/modules/api/impl/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/api/impl/base_api.py b/modules/api/impl/base_api.py new file mode 100644 index 0000000000000000000000000000000000000000..d7ba73ba3ad0914cceca42d53c5aed8a325dc716 --- /dev/null +++ b/modules/api/impl/base_api.py @@ -0,0 +1,48 @@ +from pydantic import BaseModel + + +from modules.speaker import speaker_mgr + + +from modules.data import styles_mgr + + +from modules.api import utils as api_utils +from modules.api.Api import APIManager + + +async def list_styles(): + return {"message": "ok", "data": styles_mgr.list_items()} + + +async def list_speakers(): + return { + "message": "ok", + "data": [spk.to_json() for spk in speaker_mgr.list_speakers()], + } + + +class CreateSpeaker(BaseModel): + seed: int + name: str = "" + + +async def create_speaker(request: CreateSpeaker): + speaker = speaker_mgr.create_speaker(request.seed, request.name) + return {"message": "ok", "data": speaker.to_json()} + + +async def refresh_speakers(): + speaker_mgr.refresh_speakers() + return {"message": "ok"} + + +def setup(app: APIManager): + app.get("/v1/styles/list", response_model=api_utils.BaseResponse)(list_styles) + app.get("/v1/speakers/list", response_model=api_utils.BaseResponse)(list_speakers) + app.post("/v1/speaker/create", response_model=api_utils.BaseResponse)( + create_speaker + ) + app.post("/v1/speaker/refresh", response_model=api_utils.BaseResponse)( + refresh_speakers + ) diff --git a/modules/api/impl/google_api.py b/modules/api/impl/google_api.py new file mode 100644 index 0000000000000000000000000000000000000000..d2187570f0b876e248f522c1aebff2ea228bda73 --- /dev/null +++ b/modules/api/impl/google_api.py @@ -0,0 +1,165 @@ +import base64 +from fastapi import HTTPException + +import io +import soundfile as sf +from pydantic import BaseModel + + +from modules.api.Api import APIManager +from modules.utils.audio import apply_prosody_to_audio_data +from modules.normalization import text_normalize + +from modules import generate_audio as generate + + +from modules.ssml import parse_ssml +from modules.SynthesizeSegments import ( + SynthesizeSegments, + combine_audio_segments, + synthesize_segment, +) + +from modules.api import utils as api_utils + + +class SynthesisInput(BaseModel): + text: str = "" + ssml: str = "" + + +class VoiceSelectionParams(BaseModel): + languageCode: str = "ZH-CN" + name: str = "female2" + style: str = "" + temperature: float = 0.3 + topP: float = 0.7 + topK: int = 20 + seed: int = 42 + + +class AudioConfig(BaseModel): + audioEncoding: api_utils.AudioFormat = "mp3" + speakingRate: float = 1 + pitch: float = 0 + volumeGainDb: float = 0 + sampleRateHertz: int + batchSize: int = 1 + spliterThreshold: int = 100 + + +class GoogleTextSynthesizeRequest(BaseModel): + input: SynthesisInput + voice: VoiceSelectionParams + audioConfig: dict + + +class GoogleTextSynthesizeResponse(BaseModel): + audioContent: str + + +async def google_text_synthesize(request: GoogleTextSynthesizeRequest): + input = request.input + voice = request.voice + audioConfig = request.audioConfig + + # 提取参数 + language_code = voice.languageCode + voice_name = voice.name + infer_seed = voice.seed or 42 + audio_format = audioConfig.get("audioEncoding", "mp3") + speaking_rate = audioConfig.get("speakingRate", 1) + pitch = audioConfig.get("pitch", 0) + volume_gain_db = audioConfig.get("volumeGainDb", 0) + + batch_size = audioConfig.get("batchSize", 1) + spliter_threshold = audioConfig.get("spliterThreshold", 100) + + # TODO sample_rate + sample_rate_hertz = audioConfig.get("sampleRateHertz", 24000) + + params = api_utils.calc_spk_style(spk=voice.name, style=voice.style) + + # TODO maybe need to change the sample rate + sample_rate = 24000 + + try: + if input.text: + # 处理文本合成逻辑 + text = text_normalize(input.text, is_end=True) + sample_rate, audio_data = generate.generate_audio( + text, + temperature=( + voice.temperature + if voice.temperature + else params.get("temperature", 0.3) + ), + top_P=voice.topP if voice.topP else params.get("top_p", 0.7), + top_K=voice.topK if voice.topK else params.get("top_k", 20), + spk=params.get("spk", -1), + infer_seed=infer_seed, + prompt1=params.get("prompt1", ""), + prompt2=params.get("prompt2", ""), + prefix=params.get("prefix", ""), + ) + + elif input.ssml: + # 处理SSML合成逻辑 + segments = parse_ssml(input.ssml) + for seg in segments: + seg["text"] = text_normalize(seg["text"], is_end=True) + + if len(segments) == 0: + raise HTTPException( + status_code=400, detail="The SSML text is empty or parsing failed." + ) + + synthesize = SynthesizeSegments(batch_size=batch_size) + audio_segments = synthesize.synthesize_segments(segments) + combined_audio = combine_audio_segments(audio_segments) + + buffer = io.BytesIO() + combined_audio.export(buffer, format="wav") + + buffer.seek(0) + + audio_data = buffer.read() + + else: + raise HTTPException( + status_code=400, detail="Either text or SSML input must be provided." + ) + + audio_data = apply_prosody_to_audio_data( + audio_data, + rate=speaking_rate, + pitch=pitch, + volume=volume_gain_db, + sr=sample_rate, + ) + + buffer = io.BytesIO() + sf.write(buffer, audio_data, sample_rate, format="wav") + buffer.seek(0) + + if audio_format == "mp3": + buffer = api_utils.wav_to_mp3(buffer) + + base64_encoded = base64.b64encode(buffer.read()) + base64_string = base64_encoded.decode("utf-8") + + return { + "audioContent": f"data:audio/{audio_format.lower()};base64,{base64_string}" + } + + except Exception as e: + import logging + + logging.exception(e) + raise HTTPException(status_code=500, detail=str(e)) + + +def setup(app: APIManager): + app.post("/v1/google/text:synthesize", response_model=GoogleTextSynthesizeResponse)( + google_text_synthesize + ) diff --git a/modules/api/impl/openai_api.py b/modules/api/impl/openai_api.py new file mode 100644 index 0000000000000000000000000000000000000000..f0b6ad7d356060994db2d1abb6b1409d83e6e645 --- /dev/null +++ b/modules/api/impl/openai_api.py @@ -0,0 +1,112 @@ +from fastapi import HTTPException, Body +from fastapi.responses import StreamingResponse + +import io +from numpy import clip +import soundfile as sf +from pydantic import BaseModel, Field +from fastapi.responses import FileResponse + + +from modules.synthesize_audio import synthesize_audio +from modules.normalization import text_normalize + +from modules import generate_audio as generate + + +from typing import Literal +import pyrubberband as pyrb + +from modules.api import utils as api_utils +from modules.api.Api import APIManager + +import numpy as np + + +class AudioSpeechRequest(BaseModel): + input: str # 需要合成的文本 + model: str = "chattts-4w" + voice: str = "female2" + response_format: Literal["mp3", "wav"] = "mp3" + speed: int = Field(1, ge=1, le=10, description="Speed of the audio") + style: str = "" + # 是否开启batch合成,小于等于1表示不适用batch + # 开启batch合成会自动分割句子 + batch_size: int = Field(1, ge=1, le=10, description="Batch size") + spliter_threshold: float = Field( + 100, ge=10, le=1024, description="Threshold for sentence spliter" + ) + + +async def openai_speech_api( + request: AudioSpeechRequest = Body( + ..., description="JSON body with model, input text, and voice" + ) +): + try: + model = request.model + input_text = request.input + voice = request.voice + style = request.style + response_format = request.response_format + batch_size = request.batch_size + spliter_threshold = request.spliter_threshold + speed = request.speed + speed = clip(speed, 0.1, 10) + + if not input_text: + raise HTTPException(status_code=400, detail="Input text is required.") + + # Normalize the text + text = text_normalize(input_text, is_end=True) + + # Calculate speaker and style based on input voice + params = api_utils.calc_spk_style(spk=voice, style=style) + + spk = params.get("spk", -1) + seed = params.get("seed", 42) + temperature = params.get("temperature", 0.3) + prompt1 = params.get("prompt1", "") + prompt2 = params.get("prompt2", "") + prefix = params.get("prefix", "") + + # Generate audio + sample_rate, audio_data = synthesize_audio( + text, + temperature=temperature, + top_P=0.7, + top_K=20, + spk=spk, + infer_seed=seed, + batch_size=batch_size, + spliter_threshold=spliter_threshold, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + ) + + if speed != 1: + audio_data = pyrb.time_stretch(audio_data, sample_rate, speed) + + # Convert audio data to wav format + buffer = io.BytesIO() + sf.write(buffer, audio_data, sample_rate, format="wav") + buffer.seek(0) + + if response_format == "mp3": + # Convert wav to mp3 + buffer = api_utils.wav_to_mp3(buffer) + + return StreamingResponse(buffer, media_type="audio/mp3") + + except Exception as e: + import logging + + logging.exception(e) + raise HTTPException(status_code=500, detail=str(e)) + + +def setup(api_manager: APIManager): + api_manager.post("/v1/openai/audio/speech", response_class=FileResponse)( + openai_speech_api + ) diff --git a/modules/api/impl/refiner_api.py b/modules/api/impl/refiner_api.py new file mode 100644 index 0000000000000000000000000000000000000000..411313a8a35ae0dc69874e7ce3fd3d92d825f0d2 --- /dev/null +++ b/modules/api/impl/refiner_api.py @@ -0,0 +1,51 @@ +from fastapi import HTTPException + +from pydantic import BaseModel + + +from modules import refiner + +from modules.api import utils as api_utils +from modules.api.Api import APIManager + + +class RefineTextRequest(BaseModel): + text: str + prompt: str = "[oral_2][laugh_0][break_6]" + seed: int = -1 + top_P: float = 0.7 + top_K: int = 20 + temperature: float = 0.7 + repetition_penalty: float = 1.0 + max_new_token: int = 384 + + +async def refiner_prompt_post(request: RefineTextRequest): + """ + This endpoint receives a prompt and returns the refined result + """ + + try: + refined_text = refiner.refine_text( + text=request.text, + prompt=request.prompt, + seed=request.seed, + top_P=request.top_P, + top_K=request.top_K, + temperature=request.temperature, + repetition_penalty=request.repetition_penalty, + max_new_token=request.max_new_token, + ) + return {"message": "ok", "data": refined_text} + + except Exception as e: + import logging + + logging.exception(e) + raise HTTPException(status_code=500, detail=str(e)) + + +def setup(api_manager: APIManager): + api_manager.post("/v1/prompt/refine", response_model=api_utils.BaseResponse)( + refiner_prompt_post + ) diff --git a/modules/api/impl/speaker_api.py b/modules/api/impl/speaker_api.py new file mode 100644 index 0000000000000000000000000000000000000000..80dfac94ed61b0977b3cd4ce38704f38d9baede3 --- /dev/null +++ b/modules/api/impl/speaker_api.py @@ -0,0 +1,119 @@ +from fastapi import HTTPException +from pydantic import BaseModel +import torch +from modules.speaker import speaker_mgr +from modules.api import utils as api_utils +from modules.api.Api import APIManager + + +class CreateSpeaker(BaseModel): + seed: int + name: str + gender: str + describe: str + tensor: list + + +class UpdateSpeaker(BaseModel): + id: str + name: str + gender: str + describe: str + tensor: list + + +class SpeakerDetail(BaseModel): + id: str + with_emb: bool = False + + +class SpeakersUpdate(BaseModel): + speakers: list + + +def setup(app: APIManager): + + @app.get("/v1/speakers/list", response_model=api_utils.BaseResponse) + async def list_speakers(): + return { + "message": "ok", + "data": [spk.to_json() for spk in speaker_mgr.list_speakers()], + } + + @app.post("/v1/speakers/update", response_model=api_utils.BaseResponse) + async def update_speakers(request: SpeakersUpdate): + for spk in request.speakers: + speaker = speaker_mgr.get_speaker_by_id(spk["id"]) + if speaker is None: + raise HTTPException( + status_code=404, detail=f"Speaker not found: {spk['id']}" + ) + speaker.name = spk.get("name", speaker.name) + speaker.gender = spk.get("gender", speaker.gender) + speaker.describe = spk.get("describe", speaker.describe) + if ( + spk.get("tensor") + and isinstance(spk["tensor"], list) + and len(spk["tensor"]) > 0 + ): + # number array => Tensor + speaker.emb = torch.tensor(spk["tensor"]) + speaker_mgr.save_all() + return {"message": "ok", "data": None} + + @app.post("/v1/speaker/create", response_model=api_utils.BaseResponse) + async def create_speaker(request: CreateSpeaker): + if ( + request.tensor + and isinstance(request.tensor, list) + and len(request.tensor) > 0 + ): + # from tensor + tensor = torch.tensor(request.tensor) + speaker = speaker_mgr.create_speaker_from_tensor( + tensor=tensor, + name=request.name, + gender=request.gender, + describe=request.describe, + ) + else: + # from seed + speaker = speaker_mgr.create_speaker_from_seed( + seed=request.seed, + name=request.name, + gender=request.gender, + describe=request.describe, + ) + return {"message": "ok", "data": speaker.to_json()} + + @app.post("/v1/speaker/refresh", response_model=api_utils.BaseResponse) + async def refresh_speakers(): + speaker_mgr.refresh_speakers() + return {"message": "ok"} + + @app.post("/v1/speaker/update", response_model=api_utils.BaseResponse) + async def update_speaker(request: UpdateSpeaker): + speaker = speaker_mgr.get_speaker_by_id(request.id) + if speaker is None: + raise HTTPException( + status_code=404, detail=f"Speaker not found: {request.id}" + ) + speaker.name = request.name + speaker.gender = request.gender + speaker.describe = request.describe + if ( + request.tensor + and isinstance(request.tensor, list) + and len(request.tensor) > 0 + ): + # number array => Tensor + speaker.emb = torch.tensor(request.tensor) + speaker_mgr.update_speaker(speaker) + return {"message": "ok"} + + @app.post("/v1/speaker/detail", response_model=api_utils.BaseResponse) + async def speaker_detail(request: SpeakerDetail): + speaker = speaker_mgr.get_speaker_by_id(request.id) + if speaker is None: + raise HTTPException(status_code=404, detail="Speaker not found") + return {"message": "ok", "data": speaker.to_json(with_emb=request.with_emb)} diff --git a/modules/api/impl/ssml_api.py b/modules/api/impl/ssml_api.py new file mode 100644 index 0000000000000000000000000000000000000000..87eef77171e39fd1bdc4a36f3733993571a16dbe --- /dev/null +++ b/modules/api/impl/ssml_api.py @@ -0,0 +1,78 @@ +from fastapi import HTTPException, Body +from fastapi.responses import StreamingResponse + +import io +from pydantic import BaseModel +from fastapi.responses import FileResponse + + +from modules.normalization import text_normalize +from modules.ssml import parse_ssml +from modules.SynthesizeSegments import ( + SynthesizeSegments, + synthesize_segment, + combine_audio_segments, +) + + +from modules.api import utils as api_utils + +from modules.api.Api import APIManager + + +class SSMLRequest(BaseModel): + ssml: str + format: str = "mp3" + batch: bool = False + + +async def synthesize_ssml( + request: SSMLRequest = Body( + ..., description="JSON body with SSML string and format" + ) +): + try: + ssml = request.ssml + format = request.format + batch = request.batch + + if not ssml: + raise HTTPException(status_code=400, detail="SSML content is required.") + + segments = parse_ssml(ssml) + for seg in segments: + seg["text"] = text_normalize(seg["text"], is_end=True) + + if batch: + synthesize = SynthesizeSegments(16) + audio_segments = synthesize.synthesize_segments(segments) + combined_audio = combine_audio_segments(audio_segments) + buffer = io.BytesIO() + combined_audio.export(buffer, format="wav") + buffer.seek(0) + if format == "mp3": + buffer = api_utils.wav_to_mp3(buffer) + return StreamingResponse(buffer, media_type=f"audio/{format}") + else: + + def audio_streamer(): + for segment in segments: + audio_segment = synthesize_segment(segment=segment) + buffer = io.BytesIO() + audio_segment.export(buffer, format="wav") + buffer.seek(0) + if format == "mp3": + buffer = api_utils.wav_to_mp3(buffer) + yield buffer.read() + + return StreamingResponse(audio_streamer(), media_type=f"audio/{format}") + + except Exception as e: + import logging + + logging.exception(e) + raise HTTPException(status_code=500, detail=str(e)) + + +def setup(api_manager: APIManager): + api_manager.post("/v1/ssml", response_class=FileResponse)(synthesize_ssml) diff --git a/modules/api/impl/style_api.py b/modules/api/impl/style_api.py new file mode 100644 index 0000000000000000000000000000000000000000..eb07c044352259c7334f3180ea2f63615e53647a --- /dev/null +++ b/modules/api/impl/style_api.py @@ -0,0 +1,16 @@ +from modules.data import styles_mgr +from modules.api import utils as api_utils +from modules.api.Api import APIManager + + +async def list_styles(): + return {"message": "ok", "data": styles_mgr.list_items()} + + +async def create_style(): + # TODO + pass + + +def setup(app: APIManager): + app.get("/v1/styles/list", response_model=api_utils.BaseResponse)(list_styles) diff --git a/modules/api/impl/tts_api.py b/modules/api/impl/tts_api.py new file mode 100644 index 0000000000000000000000000000000000000000..dc114d63e8a4bb8ada44d70c7ed1c99c092ee052 --- /dev/null +++ b/modules/api/impl/tts_api.py @@ -0,0 +1,94 @@ +from fastapi import Depends, HTTPException, Query +from fastapi.responses import StreamingResponse + +import io +from pydantic import BaseModel +import soundfile as sf +from fastapi.responses import FileResponse + + +from modules.normalization import text_normalize + +from modules import generate_audio as generate + +from modules.api import utils as api_utils +from modules.api.Api import APIManager +from modules.synthesize_audio import synthesize_audio + + +class TTSParams(BaseModel): + text: str = Query(..., description="Text to synthesize") + spk: str = Query( + "female2", description="Specific speaker by speaker name or speaker seed" + ) + style: str = Query("chat", description="Specific style by style name") + temperature: float = Query( + 0.3, description="Temperature for sampling (may be overridden by style or spk)" + ) + top_P: float = Query( + 0.5, description="Top P for sampling (may be overridden by style or spk)" + ) + top_K: int = Query( + 20, description="Top K for sampling (may be overridden by style or spk)" + ) + seed: int = Query( + 42, description="Seed for generate (may be overridden by style or spk)" + ) + format: str = Query("mp3", description="Response audio format: [mp3,wav]") + prompt1: str = Query("", description="Text prompt for inference") + prompt2: str = Query("", description="Text prompt for inference") + prefix: str = Query("", description="Text prefix for inference") + bs: str = Query("8", description="Batch size for inference") + thr: str = Query("100", description="Threshold for sentence spliter") + + +async def synthesize_tts(params: TTSParams = Depends()): + try: + text = text_normalize(params.text, is_end=False) + + calc_params = api_utils.calc_spk_style(spk=params.spk, style=params.style) + + spk = calc_params.get("spk", params.spk) + seed = params.seed or calc_params.get("seed", params.seed) + temperature = params.temperature or calc_params.get( + "temperature", params.temperature + ) + prefix = params.prefix or calc_params.get("prefix", params.prefix) + prompt1 = params.prompt1 or calc_params.get("prompt1", params.prompt1) + prompt2 = params.prompt2 or calc_params.get("prompt2", params.prompt2) + + batch_size = int(params.bs) + threshold = int(params.thr) + + sample_rate, audio_data = synthesize_audio( + text, + temperature=temperature, + top_P=params.top_P, + top_K=params.top_K, + spk=spk, + infer_seed=seed, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + batch_size=batch_size, + spliter_threshold=threshold, + ) + + buffer = io.BytesIO() + sf.write(buffer, audio_data, sample_rate, format="wav") + buffer.seek(0) + + if format == "mp3": + buffer = api_utils.wav_to_mp3(buffer) + + return StreamingResponse(buffer, media_type="audio/wav") + + except Exception as e: + import logging + + logging.exception(e) + raise HTTPException(status_code=500, detail=str(e)) + + +def setup(api_manager: APIManager): + api_manager.get("/v1/tts", response_class=FileResponse)(synthesize_tts) diff --git a/modules/api/utils.py b/modules/api/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..3bc363ebf86cdcea5850d98e6cd1e54eccac6f39 --- /dev/null +++ b/modules/api/utils.py @@ -0,0 +1,107 @@ +from pydantic import BaseModel +from typing import Any + +import torch + +from modules.speaker import Speaker, speaker_mgr + + +from modules.data import styles_mgr + +from pydub import AudioSegment + +from modules.ssml import merge_prompt + + +from enum import Enum + + +class ParamsTypeError(Exception): + pass + + +class AudioFormat(str, Enum): + mp3 = "mp3" + wav = "wav" + + +class BaseResponse(BaseModel): + message: str + data: Any + + class Config: + json_encoders = { + torch.Tensor: lambda v: v.tolist(), + Speaker: lambda v: v.to_json(), + } + + +def wav_to_mp3(wav_data, bitrate="48k"): + audio = AudioSegment.from_wav( + wav_data, + ) + return audio.export(format="mp3", bitrate=bitrate) + + +def to_number(value, t, default=0): + try: + number = t(value) + return number + except (ValueError, TypeError) as e: + return default + + +def calc_spk_style(spk: str | int, style: str | int): + voice_attrs = { + "spk": None, + "seed": None, + "prompt1": None, + "prompt2": None, + "prefix": None, + "temperature": None, + } + params = {} + + if type(spk) == int: + voice_attrs["spk"] = spk + elif type(spk) == str: + if spk.isdigit(): + voice_attrs["spk"] = int(spk) + else: + spker = speaker_mgr.get_speaker(spk) + if spker: + voice_attrs["spk"] = spker + + if type(style) == int or type(style) == float: + raise ParamsTypeError("The style parameter cannot be a number.") + elif type(style) == str and style != "": + if style.isdigit(): + raise ParamsTypeError("The style parameter cannot be a number.") + else: + style_params = styles_mgr.find_params_by_name(style) + for k, v in style_params.items(): + params[k] = v + + voice_attrs = {k: v for k, v in voice_attrs.items() if v is not None} + + merge_prompt(voice_attrs, params) + + voice_attrs["spk"] = params.get("spk", voice_attrs.get("spk", None)) + voice_attrs["seed"] = params.get("seed", voice_attrs.get("seed", None)) + voice_attrs["temperature"] = params.get( + "temp", voice_attrs.get("temperature", None) + ) + voice_attrs["prefix"] = params.get("prefix", voice_attrs.get("prefix", None)) + voice_attrs["prompt1"] = params.get("prompt1", voice_attrs.get("prompt1", None)) + voice_attrs["prompt2"] = params.get("prompt2", voice_attrs.get("prompt2", None)) + + if voice_attrs.get("temperature", "") == "min": + # ref: https://github.com/2noise/ChatTTS/issues/123#issue-2326908144 + voice_attrs["temperature"] = 0.000000000001 + if voice_attrs.get("temperature", "") == "max": + voice_attrs["temperature"] = 1 + + voice_attrs = {k: v for k, v in voice_attrs.items() if v is not None} + # print(voice_attrs) + + return voice_attrs diff --git a/modules/config.py b/modules/config.py new file mode 100644 index 0000000000000000000000000000000000000000..875ab823d077fa641dc678aa49cd3e7d492b2192 --- /dev/null +++ b/modules/config.py @@ -0,0 +1,11 @@ +enable_model_compile = False + +lru_size = 64 + +args = {} + +api = None + +model_config = {"half": False} + +disable_tqdm = False diff --git a/modules/data.py b/modules/data.py new file mode 100644 index 0000000000000000000000000000000000000000..c5b461b7a1e24438616a9818814f6faa504ac9b3 --- /dev/null +++ b/modules/data.py @@ -0,0 +1,452 @@ +from modules.utils.CsvMgr import BaseManager + + +# speakers_mgr = BaseManager("./data/speakers.csv") +styles_mgr = BaseManager("./data/styles.csv") + +if __name__ == "__main__": + # builtin style + styles = { + "advertisement_upbeat": { + "speed": 9, + "oral": 7, + "laugh": 2, + "break": 1, + "prefix": "兴奋的语气推广产品。", + }, + "affectionate": { + "speed": 6, + "oral": 8, + "laugh": 1, + "break": 2, + "prefix": "温暖亲切的语气。", + }, + "angry": { + "speed": 7, + "oral": 5, + "break": 3, + "prefix": "生气厌恶的语气。", + }, + "assistant": { + "speed": 5, + "oral": 7, + "laugh": 1, + "break": 2, + "prefix": "热情轻松的语气。", + }, + "calm": { + "speed": 0, + "oral": 4, + "break": 4, + "prefix": "沉着冷静的语气。", + }, + "chat": { + "speed": 6, + "oral": 9, + "laugh": 1, + "break": 2, + "prefix": "轻松随意的语气。", + }, + "cheerful": { + "speed": 7, + "oral": 8, + "laugh": 2, + "break": 2, + "prefix": "积极愉快的语气。", + }, + "customerservice": { + "speed": 5, + "oral": 6, + "laugh": 1, + "break": 5, + "prefix": "友好热情的语气。", + }, + "depressed": { + "speed": 2, + "oral": 3, + "break": 5, + "prefix": "忧郁沮丧的语气。", + }, + "disgruntled": { + "speed": 4, + "oral": 5, + "break": 4, + "prefix": "轻蔑抱怨的语气。", + }, + "documentary-narration": { + "speed": 4, + "oral": 4, + "break": 3, + "prefix": "轻松且信息丰富的语气。", + }, + "embarrassed": { + "speed": 3, + "oral": 3, + "break": 5, + "prefix": "不确定犹豫的语气。", + }, + "empathetic": { + "speed": 5, + "oral": 6, + "laugh": 1, + "break": 3, + "prefix": "关心理解的语气。", + }, + "envious": { + "speed": 5, + "oral": 5, + "laugh": 1, + "break": 2, + "prefix": "钦佩的语气。", + }, + "excited": { + "speed": 8, + "oral": 7, + "laugh": 2, + "break": 1, + "prefix": "乐观充满希望的语气。", + }, + "fearful": { + "speed": 9, + "oral": 6, + "break": 2, + "prefix": "恐惧紧张的语气。", + }, + "friendly": { + "speed": 6, + "oral": 7, + "laugh": 1, + "break": 2, + "prefix": "愉快温暖的语气。", + }, + "gentle": { + "speed": 4, + "oral": 5, + "laugh": 1, + "break": 3, + "prefix": "温和礼貌的语气。", + }, + "hopeful": { + "speed": 5, + "oral": 6, + "laugh": 1, + "break": 4, + "prefix": "温暖渴望的语气。", + }, + "lyrical": { + "speed": 3, + "oral": 4, + "break": 4, + "prefix": "优美感伤的语气。", + }, + "narration-professional": { + "speed": 5, + "oral": 3, + "break": 3, + "prefix": "专业客观的语气。", + }, + "narration-relaxed": { + "speed": 2, + "oral": 4, + "break": 3, + "prefix": "舒缓悦耳的语气。", + }, + "newscast": { + "speed": 6, + "oral": 4, + "break": 2, + "prefix": "正式专业的语气。", + }, + "newscast-casual": { + "speed": 5, + "oral": 5, + "break": 2, + "prefix": "随意的新闻语气。", + }, + "newscast-formal": { + "speed": 6, + "oral": 3, + "break": 2, + "prefix": "正式权威的语气。", + }, + "poetry-reading": { + "speed": 4, + "oral": 5, + "break": 3, + "prefix": "带情感和节奏的语气。", + }, + "sad": { + "speed": 0, + "oral": 3, + "break": 5, + "prefix": "悲伤的语气。", + }, + "serious": { + "speed": 5, + "oral": 3, + "break": 4, + "prefix": "严肃命令的语气。", + }, + "shouting": { + "speed": 7, + "oral": 6, + "break": 1, + "prefix": "努力让别人听清楚的语气。", + }, + "sports_commentary": { + "speed": 8, + "oral": 7, + "laugh": 1, + "break": 2, + "prefix": "轻松感兴趣的体育播报语气。", + }, + "sports_commentary_excited": { + "speed": 9, + "oral": 8, + "laugh": 2, + "break": 1, + "prefix": "快速充满活力的体育播报语气。", + }, + "whispering": { + "speed": 2, + "oral": 3, + "break": 4, + "prefix": "柔和的语气。", + }, + "terrified": { + "speed": 9, + "oral": 7, + "break": 1, + "prefix": "害怕的语气。", + }, + "unfriendly": { + "speed": 4, + "oral": 2, + "break": 3, + "prefix": "冷淡无情的语气。", + }, + } + styles_en = { + "advertisement_upbeat": { + "speed": 9, + "oral": 7, + "laugh": 2, + "break": 1, + "prefix": "Promote products or services with an excited and energetic tone.", + }, + "affectionate": { + "speed": 6, + "oral": 8, + "laugh": 1, + "break": 2, + "prefix": "Express a warm and affectionate tone with a higher pitch and volume. The speaker is in a state of capturing the listener's attention and is often likeable.", + }, + "angry": { + "speed": 7, + "oral": 5, + "break": 3, + "prefix": "Express an angry and disgusted tone.", + }, + "assistant": { + "speed": 5, + "oral": 7, + "laugh": 1, + "break": 2, + "prefix": "Digital assistant uses an enthusiastic and relaxed tone.", + }, + "calm": { + "speed": 0, + "oral": 4, + "break": 4, + "prefix": "Speak with a calm and composed attitude. The tone, pitch, and rhythm are much more consistent compared to other speech types.", + }, + "chat": { + "speed": 6, + "oral": 9, + "laugh": 1, + "break": 2, + "prefix": "Express a relaxed and casual tone.", + }, + "cheerful": { + "speed": 7, + "oral": 8, + "laugh": 2, + "break": 2, + "prefix": "Express a positive and cheerful tone.", + }, + "customerservice": { + "speed": 5, + "oral": 6, + "laugh": 1, + "break": 5, + "prefix": "Provide support to customers with a friendly and enthusiastic tone.", + }, + "depressed": { + "speed": 2, + "oral": 3, + "break": 5, + "prefix": "Express a depressed and downcast tone with lower pitch and volume.", + }, + "disgruntled": { + "speed": 4, + "oral": 5, + "break": 4, + "prefix": "Express a tone of contempt and complaint. This emotional voice exhibits displeasure and disdain.", + }, + "documentary-narration": { + "speed": 4, + "oral": 4, + "break": 3, + "prefix": "Narrate documentaries in a relaxed, interested, and informative style, suitable for documentary voiceovers, expert commentary, and similar content.", + }, + "embarrassed": { + "speed": 3, + "oral": 3, + "break": 5, + "prefix": "Express an uncertain, hesitant tone when the speaker feels uncomfortable.", + }, + "empathetic": { + "speed": 5, + "oral": 6, + "laugh": 1, + "break": 3, + "prefix": "Express care and understanding.", + }, + "envious": { + "speed": 5, + "oral": 5, + "laugh": 1, + "break": 2, + "prefix": "Express an admiring tone when you desire something others have.", + }, + "excited": { + "speed": 8, + "oral": 7, + "laugh": 2, + "break": 1, + "prefix": "Express an optimistic and hopeful tone. It seems something wonderful has happened, and the speaker is pleased.", + }, + "fearful": { + "speed": 9, + "oral": 6, + "break": 2, + "prefix": "Express a fearful and anxious tone with a higher pitch, higher volume, and faster speech rate. The speaker is in a state of tension and unease.", + }, + "friendly": { + "speed": 6, + "oral": 7, + "laugh": 1, + "break": 2, + "prefix": "Express a pleasant, delightful, and warm tone. It sounds sincere and full of concern.", + }, + "gentle": { + "speed": 4, + "oral": 5, + "laugh": 1, + "break": 3, + "prefix": "Express a gentle, polite, and pleasant tone with a lower pitch and volume.", + }, + "hopeful": { + "speed": 5, + "oral": 6, + "laugh": 1, + "break": 4, + "prefix": "Express a warm and desirous tone. It sounds like something good is going to happen to the speaker.", + }, + "lyrical": { + "speed": 3, + "oral": 4, + "break": 4, + "prefix": "Express emotions in a beautiful and sentimental way.", + }, + "narration-professional": { + "speed": 5, + "oral": 3, + "break": 3, + "prefix": "Read content in a professional and objective tone.", + }, + "narration-relaxed": { + "speed": 2, + "oral": 4, + "break": 3, + "prefix": "Express a soothing and pleasant tone when reading content.", + }, + "newscast": { + "speed": 6, + "oral": 4, + "break": 2, + "prefix": "Narrate news in a formal and professional tone.", + }, + "newscast-casual": { + "speed": 5, + "oral": 5, + "break": 2, + "prefix": "Deliver general news in a generic and casual tone.", + }, + "newscast-formal": { + "speed": 6, + "oral": 3, + "break": 2, + "prefix": "Deliver news in a formal, confident, and authoritative tone.", + }, + "poetry-reading": { + "speed": 4, + "oral": 5, + "break": 3, + "prefix": "Express an emotional and rhythmic tone when reading poetry.", + }, + "sad": {"speed": 0, "oral": 3, "break": 5, "prefix": "Express a sad tone."}, + "serious": { + "speed": 5, + "oral": 3, + "break": 4, + "prefix": "Express a serious and commanding tone. The speaker's voice is usually stiff, and the pace is not as relaxed.", + }, + "shouting": { + "speed": 7, + "oral": 6, + "break": 1, + "prefix": "Express a tone that sounds like the voice is far away or in another place, trying hard to be heard clearly.", + }, + "sports_commentary": { + "speed": 8, + "oral": 7, + "laugh": 1, + "break": 2, + "prefix": "Express a relaxed yet interested tone, used for sports commentary.", + }, + "sports_commentary_excited": { + "speed": 9, + "oral": 8, + "laugh": 2, + "break": 1, + "prefix": "Commentate on exciting moments in sports with a fast and energetic tone.", + }, + "whispering": { + "speed": 2, + "oral": 3, + "break": 4, + "prefix": "Express a soft tone, trying to make a quiet and gentle sound.", + }, + "terrified": { + "speed": 9, + "oral": 7, + "break": 1, + "prefix": "Express a terrified tone, with fast speech and trembling voice. It sounds like the speaker is in an unstable, frantic state.", + }, + "unfriendly": { + "speed": 4, + "oral": 2, + "break": 3, + "prefix": "Express a cold and unfeeling tone.", + }, + } + id = 0 + for k, v in styles.items(): + v.pop("prefix") + styles_mgr.add_item(id, k, f"builtin style {k}", v) + id += 1 + # for k, v in styles_en.items(): + + # styles_mgr.add_item(id, f"en_{k}", f"builtin style {k}", v) + # id += 1 diff --git a/modules/generate_audio.py b/modules/generate_audio.py new file mode 100644 index 0000000000000000000000000000000000000000..76ee79dfa077528147179a2349e28198a0ab07c7 --- /dev/null +++ b/modules/generate_audio.py @@ -0,0 +1,117 @@ +import numpy as np +import torch + +from modules.speaker import Speaker +from modules.utils.SeedContext import SeedContext + +from modules import models, config + +import logging + +logger = logging.getLogger(__name__) + + +@torch.inference_mode() +def generate_audio( + text: str, + temperature: float = 0.3, + top_P: float = 0.7, + top_K: float = 20, + spk: int | Speaker = -1, + infer_seed: int = -1, + use_decoder: bool = True, + prompt1: str = "", + prompt2: str = "", + prefix: str = "", +): + (sample_rate, wav) = generate_audio_batch( + [text], + temperature=temperature, + top_P=top_P, + top_K=top_K, + spk=spk, + infer_seed=infer_seed, + use_decoder=use_decoder, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + )[0] + + return (sample_rate, wav) + + +@torch.inference_mode() +def generate_audio_batch( + texts: list[str], + temperature: float = 0.3, + top_P: float = 0.7, + top_K: float = 20, + spk: int | Speaker = -1, + infer_seed: int = -1, + use_decoder: bool = True, + prompt1: str = "", + prompt2: str = "", + prefix: str = "", +): + chat_tts = models.load_chat_tts() + params_infer_code = { + "spk_emb": None, + "temperature": temperature, + "top_P": top_P, + "top_K": top_K, + "prompt1": prompt1 or "", + "prompt2": prompt2 or "", + "prefix": prefix or "", + "repetition_penalty": 1.0, + "disable_tqdm": config.disable_tqdm, + } + + if isinstance(spk, int): + with SeedContext(spk): + params_infer_code["spk_emb"] = chat_tts.sample_random_speaker() + logger.info(("spk", spk)) + elif isinstance(spk, Speaker): + params_infer_code["spk_emb"] = spk.emb + logger.info(("spk", spk.name)) + + logger.info( + { + "text": texts, + "infer_seed": infer_seed, + "temperature": temperature, + "top_P": top_P, + "top_K": top_K, + "prompt1": prompt1 or "", + "prompt2": prompt2 or "", + "prefix": prefix or "", + } + ) + + with SeedContext(infer_seed): + wavs = chat_tts.generate_audio( + texts, params_infer_code, use_decoder=use_decoder + ) + + sample_rate = 24000 + + return [(sample_rate, np.array(wav).flatten().astype(np.float32)) for wav in wavs] + + +if __name__ == "__main__": + import soundfile as sf + + # 测试batch生成 + inputs = ["你好[lbreak]", "再见[lbreak]", "长度不同的文本片段[lbreak]"] + outputs = generate_audio_batch(inputs, spk=5, infer_seed=42) + + for i, (sample_rate, wav) in enumerate(outputs): + print(i, sample_rate, wav.shape) + + sf.write(f"batch_{i}.wav", wav, sample_rate, format="wav") + + # 单独生成 + for i, text in enumerate(inputs): + sample_rate, wav = generate_audio(text, spk=5, infer_seed=42) + print(i, sample_rate, wav.shape) + + sf.write(f"one_{i}.wav", wav, sample_rate, format="wav") diff --git a/modules/models.py b/modules/models.py new file mode 100644 index 0000000000000000000000000000000000000000..127e8e1831a010440b6b912da3aefaea61779727 --- /dev/null +++ b/modules/models.py @@ -0,0 +1,41 @@ +from modules.ChatTTS import ChatTTS +import torch + +from modules import config + +import logging + +logger = logging.getLogger(__name__) + +device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") +print(f"device use {device}") + +chat_tts = None + + +def load_chat_tts(): + global chat_tts + if chat_tts: + return chat_tts + chat_tts = ChatTTS.Chat() + chat_tts.load_models( + compile=config.enable_model_compile, + source="local", + local_path="./models/ChatTTS", + device=device, + ) + + if config.model_config.get("half", False): + logging.info("half precision enabled") + for model_name, model in chat_tts.pretrain_models.items(): + if isinstance(model, torch.nn.Module): + model.cpu() + if torch.cuda.is_available(): + torch.cuda.empty_cache() + model.half() + if torch.cuda.is_available(): + model.cuda() + model.eval() + logger.log(logging.INFO, f"{model_name} converted to half precision.") + + return chat_tts diff --git a/modules/normalization.py b/modules/normalization.py new file mode 100644 index 0000000000000000000000000000000000000000..b700ab37a9bbaf8fbe4c3844c2af3a00dc8c8641 --- /dev/null +++ b/modules/normalization.py @@ -0,0 +1,222 @@ +from modules.utils.zh_normalization.text_normlization import * +import emojiswitch +from modules.utils.markdown import markdown_to_text + +post_normalize_pipeline = [] +pre_normalize_pipeline = [] + + +def post_normalize(): + def decorator(func): + post_normalize_pipeline.append(func) + return func + + return decorator + + +def pre_normalize(): + def decorator(func): + pre_normalize_pipeline.append(func) + return func + + return decorator + + +def apply_pre_normalize(text): + for func in pre_normalize_pipeline: + text = func(text) + return text + + +def apply_post_normalize(text): + for func in post_normalize_pipeline: + text = func(text) + return text + + +def is_markdown(text): + markdown_patterns = [ + r"(^|\s)#[^#]", # 标题 + r"\*\*.*?\*\*", # 加粗 + r"\*.*?\*", # 斜体 + r"!\[.*?\]\(.*?\)", # 图片 + r"\[.*?\]\(.*?\)", # 链接 + r"`[^`]+`", # 行内代码 + r"```[\s\S]*?```", # 代码块 + r"(^|\s)\* ", # 无序列表 + r"(^|\s)\d+\. ", # 有序列表 + r"(^|\s)> ", # 引用 + r"(^|\s)---", # 分隔线 + ] + + for pattern in markdown_patterns: + if re.search(pattern, text, re.MULTILINE): + return True + + return False + + +character_map = { + ":": ",", + ";": ",", + "!": "。", + "(": ",", + ")": ",", + "【": ",", + "】": ",", + "『": ",", + "』": ",", + "「": ",", + "」": ",", + "《": ",", + "》": ",", + "-": ",", + "‘": " ", + "“": " ", + "’": " ", + "”": " ", + ":": ",", + ";": ",", + "!": ".", + "(": ",", + ")": ",", + # '[': ',', + # ']': ',', + ">": ",", + "<": ",", + "-": ",", +} + +character_to_word = { + " & ": " and ", +} + + +@post_normalize() +def apply_character_to_word(text): + for k, v in character_to_word.items(): + text = text.replace(k, v) + return text + + +@post_normalize() +def apply_character_map(text): + translation_table = str.maketrans(character_map) + return text.translate(translation_table) + + +@post_normalize() +def apply_emoji_map(text): + return emojiswitch.demojize(text, delimiters=("", ""), lang="zh") + + +@pre_normalize() +def apply_markdown_to_text(text): + if is_markdown(text): + text = markdown_to_text(text) + return text + + +@post_normalize() +def insert_spaces_between_uppercase(s): + # 使用正则表达式在每个相邻的大写字母之间插入空格 + return re.sub( + r"(?<=[A-Z])(?=[A-Z])|(?<=[a-z])(?=[A-Z])|(?<=[\u4e00-\u9fa5])(?=[A-Z])|(?<=[A-Z])(?=[\u4e00-\u9fa5])", + " ", + s, + ) + + +def ensure_suffix(a: str, b: str, c: str): + a = a.strip() + if not a.endswith(b): + a += c + return a + + +email_domain_map = { + "outlook.com": "Out look", + "hotmail.com": "Hot mail", + "yahoo.com": "雅虎", +} + + +# 找到所有 email 并将 name 分割为单个字母,@替换为 at ,. 替换为 dot,常见域名替换为单词 +# +# 例如: +# zhzluke96@outlook.com => z h z l u k e 9 6 at out look dot com +def email_detect(text): + email_pattern = re.compile(r"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})") + + def replace(match): + email = match.group(1) + name, domain = email.split("@") + name = " ".join(name) + if domain in email_domain_map: + domain = email_domain_map[domain] + domain = domain.replace(".", " dot ") + return f"{name} at {domain}" + + return email_pattern.sub(replace, text) + + +def sentence_normalize(sentence_text: str): + # https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization + tx = TextNormalizer() + + # 匹配 \[.+?\] 的部分 + pattern = re.compile(r"(\[.+?\])|([^[]+)") + + def normalize_part(part): + sentences = tx.normalize(part) + dest_text = "" + for sentence in sentences: + dest_text += sentence + return dest_text + + def replace(match): + if match.group(1): + return f" {match.group(1)} " + else: + return normalize_part(match.group(2)) + + result = pattern.sub(replace, sentence_text) + + # NOTE: 加了会有杂音... + # if is_end: + # 加这个是为了防止吞字 + # result = ensure_suffix(result, "[uv_break]", "。。。[uv_break]。。。") + + return result + + +def text_normalize(text, is_end=False): + text = apply_pre_normalize(text) + lines = text.split("\n") + lines = [line.strip() for line in lines] + lines = [line for line in lines if line] + lines = [sentence_normalize(line) for line in lines] + content = "\n".join(lines) + content = apply_post_normalize(content) + return content + + +if __name__ == "__main__": + test_cases = [ + "ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本.", + " [oral_9] [laugh_0] [break_0] 电 [speed_0] 影 [speed_0] 中 梁朝伟 [speed_9] 扮演的陈永仁的编号27149", + " 明天有62%的概率降雨", + "大🍌,一条大🍌,嘿,你的感觉真的很奇妙 [lbreak]", + """ +# 你好,世界 +```js +console.log('1') +``` +**加粗** + +*一条文本* + """, + ] + + for i, test_case in enumerate(test_cases): + print(f"case {i}:\n", {"x": text_normalize(test_case, is_end=True)}) diff --git a/modules/refiner.py b/modules/refiner.py new file mode 100644 index 0000000000000000000000000000000000000000..7d4d6bf59c5499c934cab21af352d4bdf9f6fba2 --- /dev/null +++ b/modules/refiner.py @@ -0,0 +1,36 @@ +import numpy as np +import torch + +from modules.utils.SeedContext import SeedContext + +from modules import models, config + + +@torch.inference_mode() +def refine_text( + text: str, + prompt="[oral_2][laugh_0][break_6]", + seed=-1, + top_P=0.7, + top_K=20, + temperature=0.7, + repetition_penalty=1.0, + max_new_token=384, +) -> str: + chat_tts = models.load_chat_tts() + + with SeedContext(seed): + refined_text = chat_tts.refiner_prompt( + text, + { + "prompt": prompt, + "top_K": top_K, + "top_P": top_P, + "temperature": temperature, + "repetition_penalty": repetition_penalty, + "max_new_token": max_new_token, + "disable_tqdm": config.disable_tqdm, + }, + do_text_normalization=False, + ) + return refined_text diff --git a/modules/speaker.py b/modules/speaker.py new file mode 100644 index 0000000000000000000000000000000000000000..5919b6fbd5ce49d671b2105f2383a7cb3f01bb00 --- /dev/null +++ b/modules/speaker.py @@ -0,0 +1,150 @@ +import os +import torch + +from modules import models +from modules.utils.SeedContext import SeedContext + +import uuid + + +def create_speaker_from_seed(seed): + chat_tts = models.load_chat_tts() + with SeedContext(seed): + emb = chat_tts.sample_random_speaker() + return emb + + +class Speaker: + def __init__(self, seed, name="", gender="", describe=""): + self.id = uuid.uuid4() + self.seed = seed + self.name = name + self.gender = gender + self.describe = describe + self.emb = None + + def to_json(self, with_emb=False): + return { + "id": str(self.id), + "seed": self.seed, + "name": self.name, + "gender": self.gender, + "describe": self.describe, + "emb": self.emb.tolist() if with_emb else None, + } + + def fix(self): + is_update = False + if "id" not in self.__dict__: + setattr(self, "id", uuid.uuid4()) + is_update = True + if "seed" not in self.__dict__: + setattr(self, "seed", -2) + is_update = True + if "name" not in self.__dict__: + setattr(self, "name", "") + is_update = True + if "gender" not in self.__dict__: + setattr(self, "gender", "*") + is_update = True + if "describe" not in self.__dict__: + setattr(self, "describe", "") + is_update = True + + return is_update + + +# 每个speaker就是一个 emb 文件 .pt +# 管理 speaker 就是管理 ./data/speaker/ 下的所有 speaker +# 可以 用 seed 创建一个 speaker +# 可以 刷新列表 读取所有 speaker +# 可以列出所有 speaker +class SpeakerManager: + def __init__(self): + self.speakers = {} + self.speaker_dir = "./data/speakers/" + self.refresh_speakers() + + def refresh_speakers(self): + self.speakers = {} + for speaker_file in os.listdir(self.speaker_dir): + if speaker_file.endswith(".pt"): + speaker = torch.load( + self.speaker_dir + speaker_file, map_location=torch.device("cpu") + ) + self.speakers[speaker_file] = speaker + + is_update = speaker.fix() + if is_update: + torch.save(speaker, self.speaker_dir + speaker_file) + + def list_speakers(self): + return list(self.speakers.values()) + + def create_speaker_from_seed(self, seed, name="", gender="", describe=""): + if name == "": + name = seed + filename = name + ".pt" + speaker = Speaker(seed, name=name, gender=gender, describe=describe) + speaker.emb = create_speaker_from_seed(seed) + torch.save(speaker, self.speaker_dir + filename) + self.refresh_speakers() + return speaker + + def create_speaker_from_tensor( + self, tensor, filename="", name="", gender="", describe="" + ): + if name == "": + name = filename + speaker = Speaker(seed=-2, name=name, gender=gender, describe=describe) + if isinstance(tensor, torch.Tensor): + speaker.emb = tensor + if isinstance(tensor, list): + speaker.emb = torch.tensor(tensor) + torch.save(speaker, self.speaker_dir + filename + ".pt") + self.refresh_speakers() + return speaker + + def get_speaker(self, name) -> Speaker | None: + filename = name + ".pt" + return self.speakers.get(filename, None) + + def get_speaker_by_id(self, id) -> Speaker | None: + for speaker in self.speakers.values(): + if str(speaker.id) == str(id): + return speaker + return None + + def get_speaker_filename(self, id: str): + filename = None + for fname, spk in self.speakers.items(): + if str(spk.id) == str(id): + filename = fname + break + return filename + + def update_speaker(self, speaker: Speaker): + filename = None + for fname, spk in self.speakers.items(): + if str(spk.id) == str(speaker.id): + filename = fname + break + + if filename: + torch.save(speaker, self.speaker_dir + filename) + self.refresh_speakers() + return speaker + else: + raise ValueError("Speaker not found for update") + + def save_all(self): + for speaker in self.speakers.values(): + filename = self.get_speaker_filename(speaker.id) + torch.save(speaker, self.speaker_dir + filename) + # self.refresh_speakers() + + def __len__(self): + return len(self.speakers) + + +speaker_mgr = SpeakerManager() diff --git a/modules/ssml.py b/modules/ssml.py new file mode 100644 index 0000000000000000000000000000000000000000..ceb5e84c15e10112a687696881e0604458015477 --- /dev/null +++ b/modules/ssml.py @@ -0,0 +1,310 @@ +from lxml import etree + + +from typing import Any, List, Dict +import numpy as np + + +import logging + +from modules.data import styles_mgr +from modules.speaker import speaker_mgr + +import random + + +logger = logging.getLogger(__name__) + + +def expand_spk(attrs: dict): + input_spk = attrs.get("spk", "") + if isinstance(input_spk, int): + return + if isinstance(input_spk, str) and input_spk.isdigit(): + attrs.update({"spk": int(input_spk)}) + return + try: + speaker = speaker_mgr.get_speaker(input_spk) + attrs.update({"spk": speaker}) + except Exception as e: + logger.error(f"apply style failed, {e}") + + +def expand_style(attrs: dict): + if attrs.get("style", "") != "": + try: + params = styles_mgr.find_params_by_name(str(attrs["style"])) + attrs.update(params) + except Exception as e: + logger.error(f"apply style failed, {e}") + + +def merge_prompt(attrs: dict, elem): + + def attr_num(attrs: Dict[str, Any], k: str, min_value: int, max_value: int): + val = elem.get(k, attrs.get(k, "")) + if val == "": + return + if val == "max": + val = max_value + if val == "min": + val = min_value + val = np.clip(int(val), min_value, max_value) + if "prefix" not in attrs or attrs["prefix"] == None: + attrs["prefix"] = "" + attrs["prefix"] += " " + f"[{k}_{val}]" + + attr_num(attrs, "oral", 0, 9) + attr_num(attrs, "speed", 0, 9) + attr_num(attrs, "laugh", 0, 2) + attr_num(attrs, "break", 0, 7) + + +def apply_random_seed(attrs: dict): + seed = attrs.get("seed", "") + if seed == "random" or seed == "rand": + seed = random.randint(0, 2**32 - 1) + attrs["seed"] = seed + logger.info(f"random seed: {seed}") + + +class NotSupportSSML(Exception): + pass + + +def parse_ssml(ssml: str) -> List[Dict[str, Any]]: + root = etree.fromstring(ssml) + + ssml_version = root.get("version", "NONE") + if ssml_version != "0.1": + raise NotSupportSSML("Unsupported ssml version: {ssml_version}") + + segments = [] + + for voice in root.findall(".//voice"): + voice_attrs = { + "spk": voice.get("spk"), + "style": voice.get("style"), + "seed": voice.get("seed"), + "top_p": voice.get("top_p"), + "top_k": voice.get("top_k"), + "temp": voice.get("temp"), + "prompt1": voice.get("prompt1"), + "prompt2": voice.get("prompt2"), + "prefix": voice.get("prefix"), + "normalize": voice.get("normalize"), + } + + voice_attrs = {k: v for k, v in voice_attrs.items() if v is not None} + + expand_spk(voice_attrs) + expand_style(voice_attrs) + + merge_prompt(voice_attrs, voice) + apply_random_seed(voice_attrs) + + voice_segments = [] + + if voice_attrs.get("temp", "") == "min": + # ref: https://github.com/2noise/ChatTTS/issues/123#issue-2326908144 + voice_attrs["temp"] = 0.000000000001 + if voice_attrs.get("temp", "") == "max": + voice_attrs["temp"] = 1 + + # 处理 voice 开头的文本 + if voice.text and voice.text.strip(): + voice_segments.append( + {"text": voice.text.strip(), "attrs": voice_attrs.copy()} + ) + + # 处理 voice 内部的文本和 prosody 元素 + for node in voice.iterchildren(): + if node.tag == "prosody": + prosody_attrs = voice_attrs.copy() + new_attrs = { + "rate": node.get("rate"), + "volume": node.get("volume"), + "pitch": node.get("pitch"), + } + prosody_attrs.update( + {k: v for k, v in new_attrs.items() if v is not None} + ) + expand_style(prosody_attrs) + merge_prompt(prosody_attrs, node) + apply_random_seed(voice_attrs) + + if node.text and node.text.strip(): + voice_segments.append( + {"text": node.text.strip(), "attrs": prosody_attrs} + ) + elif node.tag == "break": + time_ms = int(node.get("time", "0").replace("ms", "")) + segment = {"break": time_ms} + voice_segments.append(segment) + + if node.tail and node.tail.strip(): + voice_segments.append( + {"text": node.tail.strip(), "attrs": voice_attrs.copy()} + ) + + end_segment = voice_segments[-1] + end_segment["is_end"] = True + + segments = segments + voice_segments + + logger.info(f"collect len(segments): {len(segments)}") + # logger.info(f"segments: {json.dumps(segments, ensure_ascii=False)}") + + return segments + + +if __name__ == "__main__": + # 示例 SSML 输入 + ssml1 = """ + + + 电影中梁朝伟扮演的陈永仁的 + + 编号27149 + + + 编号27149 + + + 编号27149 + + + 编号27149 + + + + 编号27149 + + + 电影中梁朝伟扮演的陈永仁的编号27149 + + + """ + + ssml2 = """ + + + 也可以合成多角色多情感的有声 [uv_break] 书 [uv_break] ,例如: + + + 黛玉冷笑道: + + + 我说呢,亏了绊住,不然,早就飞了来了。 + + + 宝玉道: + + + “只许和你玩,替你解闷。不过偶然到他那里,就说这些闲话。” + + + “好没意思的话!去不去,关我什么事儿?又没叫你替我解闷儿,还许你不理我呢” + + + 说着,便赌气回房去了。 + + + """ + ssml22 = """ + + + 下面是一个 ChatTTS 用于合成多角色多情感的有声书示例 + + + 黛玉冷笑道: + + + 我说呢 [uv_break] ,亏了绊住,不然,早就飞起来了。 + + + 宝玉道: + + + “只许和你玩 [uv_break] ,替你解闷。不过偶然到他那里,就说这些闲话。” + + + “好没意思的话![uv_break] 去不去,关我什么事儿? 又没叫你替我解闷儿 [uv_break],还许你不理我呢” + + + 说着,便赌气回房去了。 + + + """ + + ssml3 = """ + + + “你到底在想什么?这已经是第三次了!每次我都告诉你要按时完成任务,可你总是拖延。你知道这对整个团队有多大的影响吗?!” + + + “你到底在想什么?这已经是第三次了!每次我都告诉你要按时完成任务,可你总是拖延。你知道这对整个团队有多大的影响吗?!” + + + “你到底在想什么?这已经是第三次了!每次我都告诉你要按时完成任务,可你总是拖延。你知道这对整个团队有多大的影响吗?!” + + + """ + + ssml4 = """ + + + 使用 prosody 控制生成文本的语速语调和音量,示例如下 + + + 无任何限制将会继承父级voice配置进行生成 + + + 设置 rate 大于1表示加速,小于1为减速 + + + 设置 pitch 调整音调,设置为6表示提高6个半音 + + + 设置 volume 调整音量,设置为2表示提高2个分贝 + + + 在 voice 中无prosody包裹的文本即为默认生成状态下的语音 + + + """ + + ssml5 = """ + + + 使用 break 标签将会简单的 + + + + 插入一段空白到生成结果中 + + + """ + + ssml6 = """ + + + temperature for sampling (may be overridden by style or speaker) + + 温度值用于采样,这个值有可能被 style 或者 speaker 覆盖 + + temperature for sampling ,这个值有可能被 style 或者 speaker 覆盖 + + 温度值用于采样,(may be overridden by style or speaker) + + + """ + + segments = parse_ssml(ssml6) + + print(segments) + + # audio_segments = synthesize_segments(segments) + # combined_audio = combine_audio_segments(audio_segments) + + # combined_audio.export("output.wav", format="wav") diff --git a/modules/synthesize_audio.py b/modules/synthesize_audio.py new file mode 100644 index 0000000000000000000000000000000000000000..6df800296dedbdcfcd6e8f78b3774e53161d399c --- /dev/null +++ b/modules/synthesize_audio.py @@ -0,0 +1,58 @@ +from modules.SentenceSplitter import SentenceSplitter +from modules.normalization import text_normalize + +from modules import generate_audio as generate + + +import numpy as np + +from modules.speaker import Speaker + + +def synthesize_audio( + text: str, + temperature: float = 0.3, + top_P: float = 0.7, + top_K: float = 20, + spk: int | Speaker = -1, + infer_seed: int = -1, + use_decoder: bool = True, + prompt1: str = "", + prompt2: str = "", + prefix: str = "", + batch_size: int = 1, + spliter_threshold: int = 100, +): + if batch_size == 1: + return generate.generate_audio( + text, + temperature=temperature, + top_P=top_P, + top_K=top_K, + spk=spk, + infer_seed=infer_seed, + use_decoder=use_decoder, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + ) + else: + spliter = SentenceSplitter(spliter_threshold) + sentences = spliter.parse(text) + sentences = [text_normalize(s) for s in sentences] + audio_data_batch = generate.generate_audio_batch( + texts=sentences, + temperature=temperature, + top_P=top_P, + top_K=top_K, + spk=spk, + infer_seed=infer_seed, + use_decoder=use_decoder, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + ) + sample_rate = audio_data_batch[0][0] + audio_data = np.concatenate([data for _, data in audio_data_batch]) + + return sample_rate, audio_data diff --git a/modules/utils/CsvMgr.py b/modules/utils/CsvMgr.py new file mode 100644 index 0000000000000000000000000000000000000000..31c0ebc8e2e31666368c7592cd4abc637406be83 --- /dev/null +++ b/modules/utils/CsvMgr.py @@ -0,0 +1,157 @@ +import pandas as pd +import os +import json + +import logging + +logger = logging.getLogger(__name__) + + +class DataExistsError(Exception): + pass + + +class DataNotFoundError(Exception): + pass + + +class BaseManager: + def __init__(self, csv_file): + self.csv_file = csv_file + self.columns = ["id", "name", "desc", "params"] + if not os.path.exists(csv_file): + df = pd.DataFrame(columns=self.columns) + df.to_csv(self.csv_file, index=False) + + def _load_data(self): + return pd.read_csv(self.csv_file) + + def _save_data(self, df): + df.to_csv(self.csv_file, index=False) + + def add_item(self, item_id, name, desc, params): + df = self._load_data() + if item_id in df["id"].values: + raise DataExistsError(f"Item ID {item_id} already exists.") + new_row = pd.DataFrame( + [ + { + "id": item_id, + "name": name, + "desc": desc, + "params": json.dumps(params, ensure_ascii=False), + } + ] + ) + df = pd.concat([df, new_row], ignore_index=True) + self._save_data(df) + + def delete_item(self, item_id): + df = self._load_data() + if item_id not in df["id"].values: + raise DataNotFoundError(f"Item ID {item_id} not found.") + df = df[df["id"] != item_id] + self._save_data(df) + + def update_item(self, item_id, name=None, desc=None, params=None): + df = self._load_data() + if item_id not in df["id"].values: + raise DataNotFoundError(f"Item ID {item_id} not found.") + if name: + df.loc[df["id"] == item_id, "name"] = name + if desc: + df.loc[df["id"] == item_id, "desc"] = desc + if params: + df.loc[df["id"] == item_id, "params"] = params + self._save_data(df) + + def get_item(self, item_id): + df = self._load_data() + if item_id not in df["id"].values: + raise DataNotFoundError(f"Item ID {item_id} not found.") + item = df[df["id"] == item_id].to_dict("records")[0] + item["params"] = json.loads(item["params"]) + return item + + def list_items(self): + df = self._load_data() + items = df.to_dict("records") + for item in items: + item["params"] = json.loads(item["params"]) + return items + + def find_item_by_name(self, name): + df = self._load_data() + if name not in df["name"].values: + raise DataNotFoundError(f"Name {name} not found.") + item = df[df["name"] == name].to_dict("records")[0] + item["params"] = json.loads(item["params"]) + return item + + def find_params_by_name(self, name): + try: + return self.find_item_by_name(name)["params"] + except Exception as e: + logger.error(e) + return {} + + def find_params_by_id(self, id): + try: + return self.get_item(id)["params"] + except Exception as e: + logger.error(e) + return {} + + +# Usage example +if __name__ == "__main__": + + class SpeakerManager(BaseManager): + def __init__(self, csv_file): + super().__init__(csv_file) + + manager = SpeakerManager("speakers.test.csv") + + try: + # Add speaker + manager.add_item( + 1, "Speaker1", "Description for speaker 1", '{"param1": "value1"}' + ) + except DataExistsError as e: + print(e) + + # List all speakers + speakers = manager.list_items() + print(speakers) + + try: + # Get specific speaker + speaker = manager.get_item(1) + print(speaker) + except DataNotFoundError as e: + print(e) + + try: + # Update speaker + manager.update_item( + 1, name="Updated Speaker1", desc="Updated description for speaker 1" + ) + except DataNotFoundError as e: + print(e) + + try: + # Delete speaker + manager.delete_item(1) + except DataNotFoundError as e: + print(e) + + try: + # Find speaker by name + speaker_by_name = manager.find_item_by_name("Updated Speaker1") + print(speaker_by_name) + except DataNotFoundError as e: + print(e) + + # Find speakers by params + speakers_by_params = manager.find_items_by_params('{"param1": "value1"}') + print(speakers_by_params) diff --git a/modules/utils/SeedContext.py b/modules/utils/SeedContext.py new file mode 100644 index 0000000000000000000000000000000000000000..c7190ba2d41ac00b56ddd772d6e595e9a2eecbfd --- /dev/null +++ b/modules/utils/SeedContext.py @@ -0,0 +1,77 @@ +import torch +import random +import numpy as np + + +def deterministic(seed=0): + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + + +def is_numeric(obj): + if isinstance(obj, str): + try: + float(obj) + return True + except ValueError: + return False + elif isinstance(obj, (np.integer, np.signedinteger, np.unsignedinteger)): + return True + elif isinstance(obj, np.floating): + return True + elif isinstance(obj, (int, float)): + return True + else: + return False + + +class SeedContext: + def __init__(self, seed): + assert is_numeric(seed), "Seed must be an number." + + try: + self.seed = int(np.clip(int(seed), -1, 2**32 - 1)) + except Exception as e: + raise ValueError("Seed must be an integer.") + + self.seed = seed + self.state = None + + if isinstance(seed, str) and seed.isdigit(): + self.seed = int(seed) + + if isinstance(self.seed, float): + self.seed = int(self.seed) + + if self.seed == -1: + self.seed = random.randint(0, 2**32 - 1) + + def __enter__(self): + self.state = (torch.get_rng_state(), random.getstate(), np.random.get_state()) + + deterministic(self.seed) + + def __exit__(self, exc_type, exc_value, traceback): + torch.set_rng_state(self.state[0]) + random.setstate(self.state[1]) + np.random.set_state(self.state[2]) + + +if __name__ == "__main__": + print(is_numeric("1234")) # True + print(is_numeric("12.34")) # True + print(is_numeric("-1234")) # True + print(is_numeric("abc123")) # False + print(is_numeric(np.int32(10))) # True + print(is_numeric(np.float64(10.5))) # True + print(is_numeric(10)) # True + print(is_numeric(10.5)) # True + print(is_numeric(np.int8(10))) # True + print(is_numeric(np.uint64(10))) # True + print(is_numeric(np.float16(10.5))) # True + print(is_numeric([1, 2, 3])) # False diff --git a/modules/utils/__init__.py b/modules/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/utils/audio.py b/modules/utils/audio.py new file mode 100644 index 0000000000000000000000000000000000000000..b95e61620e9d7eefa46d9ef65f25f7fa10ed5be1 --- /dev/null +++ b/modules/utils/audio.py @@ -0,0 +1,96 @@ +import sys +from pydub import AudioSegment +import soundfile as sf +import pyrubberband as pyrb +import numpy as np +from io import BytesIO + + +def audiosegment_to_librosawav(audiosegment): + channel_sounds = audiosegment.split_to_mono() + samples = [s.get_array_of_samples() for s in channel_sounds] + + fp_arr = np.array(samples).T.astype(np.float32) + fp_arr /= np.iinfo(samples[0].typecode).max + fp_arr = fp_arr.reshape(-1) + + return fp_arr + + +def ndarray_to_segment(ndarray, frame_rate): + buffer = BytesIO() + sf.write(buffer, ndarray, frame_rate, format="wav") + buffer.seek(0) + sound = AudioSegment.from_wav( + buffer, + ) + return sound + + +def time_stretch(input_segment: AudioSegment, time_factor: float) -> AudioSegment: + """ + factor range -> [0.2,10] + """ + time_factor = np.clip(time_factor, 0.2, 10) + sr = input_segment.frame_rate + y = audiosegment_to_librosawav(input_segment) + y_stretch = pyrb.time_stretch(y, sr, time_factor) + + sound = ndarray_to_segment( + y_stretch, + frame_rate=sr, + ) + return sound + + +def pitch_shift( + input_segment: AudioSegment, + pitch_shift_factor: float, +) -> AudioSegment: + """ + factor range -> [-12,12] + """ + pitch_shift_factor = np.clip(pitch_shift_factor, -12, 12) + sr = input_segment.frame_rate + y = audiosegment_to_librosawav(input_segment) + y_shift = pyrb.pitch_shift(y, sr, pitch_shift_factor) + + sound = ndarray_to_segment( + y_shift, + frame_rate=sr, + ) + return sound + + +def apply_prosody_to_audio_data( + audio_data: np.ndarray, rate: float, volume: float, pitch: float, sr: int +) -> np.ndarray: + if rate != 1: + audio_data = pyrb.time_stretch(audio_data, sr=sr, rate=rate) + + if volume != 0: + audio_data = audio_data * volume + + if pitch != 0: + audio_data = pyrb.pitch_shift(audio_data, sr=sr, n_steps=pitch) + + return audio_data + + +if __name__ == "__main__": + input_file = sys.argv[1] + + time_stretch_factors = [0.5, 0.75, 1.5, 1.0] + pitch_shift_factors = [-12, -5, 0, 5, 12] + + input_sound = AudioSegment.from_mp3(input_file) + + for time_factor in time_stretch_factors: + output_wav = f"time_stretched_{int(time_factor * 100)}.wav" + sound = time_stretch(input_sound, time_factor) + sound.export(output_wav, format="wav") + + for pitch_factor in pitch_shift_factors: + output_wav = f"pitch_shifted_{int(pitch_factor * 100)}.wav" + sound = pitch_shift(input_sound, pitch_factor) + sound.export(output_wav, format="wav") diff --git a/modules/utils/env.py b/modules/utils/env.py new file mode 100644 index 0000000000000000000000000000000000000000..7bb8c79314cd31f5fe3e1dceeacfd97427108f38 --- /dev/null +++ b/modules/utils/env.py @@ -0,0 +1,29 @@ +import os + + +def get_env_val(key, val_type): + env_val = os.getenv(key.upper()) + if env_val is not None and env_val != "": + if val_type == bool: + return env_val.lower() in ("true", "1", "t") + return val_type(env_val) + + if env_val == "": + return None + + return env_val + + +def get_env_or_arg(args, arg_name, default, arg_type): + arg_val = getattr(args, arg_name) + env_val = get_env_val(arg_name, arg_type) + + if arg_type == bool and env_val is not None: + return env_val + + if arg_val is not None: + return arg_val + elif env_val is not None: + return env_val + + return default diff --git a/modules/utils/markdown.py b/modules/utils/markdown.py new file mode 100644 index 0000000000000000000000000000000000000000..8ceac27809be3aa6c6758e135d197da0a4e06f41 --- /dev/null +++ b/modules/utils/markdown.py @@ -0,0 +1,77 @@ +import mistune + + +class PlainTextRenderer(mistune.HTMLRenderer): + def text(self, text): + return text + + def link(self, text, url, title=None): + return text + + def image(self, alt, url, title=None): + return alt + + def emphasis(self, text): + return text + + def strong(self, text): + return text + + def block_code(self, code, info=None): + # remove code + return "" + + def block_quote(self, text): + return text + + def heading(self, text, level): + return text + "\n" + + def newline(self): + return "\n" + + def list(self, text: str, ordered: bool, **attrs) -> str: + if ordered: + html = "" + return html + "\n" + text + "\n" + return "\n" + text + "\n" + + def list_item(self, text): + return "" + text + "\n" + + def paragraph(self, text): + return text + "\n" + + def codespan(self, text: str) -> str: + # remove code + return "" + + +def markdown_to_text(markdown_text): + renderer = PlainTextRenderer() + markdown = mistune.create_markdown(renderer=renderer) + text = markdown(markdown_text) + text = text.strip() + return text + + +if __name__ == "__main__": + markdown_text = """ +# 标题 + +这是一个示例文本,其中包含 **加粗**、*斜体*、[链接](http://example.com) 和其他 Markdown 语法。 + +```ts +console.log(1) +``` + +- 列表项 1 +- 列表项 2 +- 列表项 3 + +> 这是一个引用。 + +`代码片段` + """ + plain_text = markdown_to_text(markdown_text) + print(plain_text) diff --git a/modules/utils/normalization.py b/modules/utils/normalization.py new file mode 100644 index 0000000000000000000000000000000000000000..241486b9e131b8226130431a690406a35c3be308 --- /dev/null +++ b/modules/utils/normalization.py @@ -0,0 +1,147 @@ +from modules.utils.zh_normalization.text_normlization import * + +character_map = { + ":": ",", + ";": ",", + "!": "。", + "(": ",", + ")": ",", + "【": ",", + "】": ",", + "『": ",", + "』": ",", + "「": ",", + "」": ",", + "《": ",", + "》": ",", + "-": ",", + "‘": " ", + "“": " ", + "’": " ", + "”": " ", + ":": ",", + ";": ",", + "!": ".", + "(": ",", + ")": ",", + # '[': ',', + # ']': ',', + ">": ",", + "<": ",", + "-": ",", +} + +character_to_word = { + " & ": " and ", +} + + +def apply_character_to_word(text): + for k, v in character_to_word.items(): + text = text.replace(k, v) + return text + + +def apply_character_map(text): + translation_table = str.maketrans(character_map) + return text.translate(translation_table) + + +def insert_spaces_between_uppercase(s): + # 使用正则表达式在每个相邻的大写字母之间插入空格 + return re.sub( + r"(?<=[A-Z])(?=[A-Z])|(?<=[a-z])(?=[A-Z])|(?<=[\u4e00-\u9fa5])(?=[A-Z])|(?<=[A-Z])(?=[\u4e00-\u9fa5])", + " ", + s, + ) + + +def ensure_suffix(a: str, b: str, c: str): + a = a.strip() + if not a.endswith(b): + a += c + return a + + +email_domain_map = { + "outlook.com": "Out look", + "hotmail.com": "Hot mail", + "yahoo.com": "雅虎", +} + + +# 找到所有 email 并将 name 分割为单个字母,@替换为 at ,. 替换为 dot,常见域名替换为单词 +# +# 例如: +# zhzluke96@outlook.com => z h z l u k e 9 6 at out look dot com +def email_detect(text): + email_pattern = re.compile(r"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})") + + def replace(match): + email = match.group(1) + name, domain = email.split("@") + name = " ".join(name) + if domain in email_domain_map: + domain = email_domain_map[domain] + domain = domain.replace(".", " dot ") + return f"{name} at {domain}" + + return email_pattern.sub(replace, text) + + +def pre_normalize(text): + # NOTE: 效果一般... + # text = email_detect(text) + return text + + +def post_normalize(text): + text = insert_spaces_between_uppercase(text) + text = apply_character_map(text) + text = apply_character_to_word(text) + return text + + +def text_normalize(text, is_end=False): + # https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization + tx = TextNormalizer() + + # 匹配 \[.+?\] 的部分 + pattern = re.compile(r"(\[.+?\])|([^[]+)") + + def normalize_part(part): + part = pre_normalize(part) + sentences = tx.normalize(part) + dest_text = "" + for sentence in sentences: + dest_text += post_normalize(sentence) + return dest_text + + def replace(match): + if match.group(1): + return f" {match.group(1)} " + else: + return normalize_part(match.group(2)) + + result = pattern.sub(replace, text) + + # NOTE: 加了会有杂音... + # if is_end: + # 加这个是为了防止吞字 + # result = ensure_suffix(result, "[uv_break]", "。。。[uv_break]。。。") + + return result + + +if __name__ == "__main__": + print( + text_normalize( + "ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本." + ) + ) + print( + text_normalize( + " [oral_9] [laugh_0] [break_0] 电 [speed_0] 影 [speed_0] 中 梁朝伟 [speed_9] 扮演的陈永仁的编号27149" + ) + ) + print(text_normalize(" 明天有62%的概率降雨")) diff --git a/modules/utils/zh_normalization/README.md b/modules/utils/zh_normalization/README.md new file mode 100644 index 0000000000000000000000000000000000000000..92eea9f54630dfd41dfc3ce53bc511cc7595062c --- /dev/null +++ b/modules/utils/zh_normalization/README.md @@ -0,0 +1,16 @@ +## Supported NSW (Non-Standard-Word) Normalization + +|NSW type|raw|normalized| +|:--|:-|:-| +|serial number|电影中梁朝伟扮演的陈永仁的编号27149|电影中梁朝伟扮演的陈永仁的编号二七一四九| +|cardinal|这块黄金重达324.75克
我们班的最高总分为583分|这块黄金重达三百二十四点七五克
我们班的最高总分为五百八十三分| +|numeric range |12\~23
-1.5\~2|十二到二十三
负一点五到二| +|date|她出生于86年8月18日,她弟弟出生于1995年3月1日|她出生于八六年八月十八日, 她弟弟出生于一九九五年三月一日| +|time|等会请在12:05请通知我|等会请在十二点零五分请通知我 +|temperature|今天的最低气温达到-10°C|今天的最低气温达到零下十度 +|fraction|现场有7/12的观众投出了赞成票|现场有十二分之七的观众投出了赞成票| +|percentage|明天有62%的概率降雨|明天有百分之六十二的概率降雨| +|money|随便来几个价格12块5,34.5元,20.1万|随便来几个价格十二块五,三十四点五元,二十点一万| +|telephone|这是固话0421-33441122
这是手机+86 18544139121|这是固话零四二一三三四四一一二二
这是手机八六一八五四四一三九一二一| +## References +[Pull requests #658 of DeepSpeech](https://github.com/PaddlePaddle/DeepSpeech/pull/658/files) diff --git a/modules/utils/zh_normalization/__init__.py b/modules/utils/zh_normalization/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..697be01b5e4f37f7f84bc8cfeb41ed846aab5f18 --- /dev/null +++ b/modules/utils/zh_normalization/__init__.py @@ -0,0 +1,57 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from .text_normlization import * + +rep_map = { + ":": ",", + ";": ",", + ",": ",", + "。": ".", + "!": "!", + "?": "?", + "\n": ".", + "·": ",", + "、": ",", + "...": "…", + "$": ".", + "/": ",", + "—": "-", + "~": "…", + "~": "…", +} + + +def replace_punctuation(text): + text = text.replace("嗯", "恩").replace("呣", "母") + pattern = re.compile("|".join(re.escape(p) for p in rep_map.keys())) + + replaced_text = pattern.sub(lambda x: rep_map[x.group()], text) + punctuation = ["!", "?", "…", ",", "."] + replaced_text = re.sub( + r"[^\u4e00-\u9fa5" + "".join(punctuation) + r"]+", "", replaced_text + ) + print(replaced_text) + + return replaced_text + + +def text_normalize(text): + # https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization + tx = TextNormalizer() + sentences = tx.normalize(text) + dest_text = "" + for sentence in sentences: + dest_text += replace_punctuation(sentence) + print(dest_text, sentence) + return dest_text diff --git a/modules/utils/zh_normalization/char_convert.py b/modules/utils/zh_normalization/char_convert.py new file mode 100644 index 0000000000000000000000000000000000000000..3eef97552aa47f8741a58c86ecd1486b24d23dac --- /dev/null +++ b/modules/utils/zh_normalization/char_convert.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Traditional and simplified Chinese conversion, a simplified character may correspond to multiple traditional characters. +""" +simplified_charcters = '制咖片型超声盘鉴定仔点他命书歌粉巾字帐恤手指记忆棒形转弯沟光○〇㐄㐅㐆㐌㐖毒㐜㐡㐤㐰㐺㑇㑳㒳㒸㔾㗂㗎㝵㞎㞙㞞以㢲㢴㤅㥁㥯㨗㫺㬎㮎㮚㮸㲋㲱㲾㳮涧㵪㶸㷖㷭㹢㹴犬㺢狓㺵碗㽮㿝䍃䔢䖟䖸䗈䗥䗪䝓射䥯䦉䯝鲃鱼䲔䳗鹅䵹鼄䶑一对应映射丁不识下儿子做二休世丘之貉并中台原则串为甚谓干净了百事无成八变五十些人得道鸡升天代如并来去个国政策劲幽灵在欧洲游荡接样萝卜坑侧化传价元论醇共再准刀两断切分耕耘收获钱货物向看旧就绪险刻千金动劳永逸匙零夜半卡通回复返影踪反常态口咬气句话同吐快吹周味呼诺呜品红锅哄而散起唱和问三知生熟团漆黑火糟堆场空块面塌糊涂尘染壁厢夔已足多情露水大早到晚夫妻当关万莫开失古恨套所料既往孔见提师要家主审寸阴难买斗牛小撮部阵局展身层巴掌帆风顺席地带过年计于春头载四季期被蛇怕井绳度愿式份弹顷深前律径心意念差愁孤行俱全房厅交遮打技长把抓死拿眼泪鼻涕钥锁折段抿拍即合扫排掬挥拨拥上入击洞掷揽改故辙败文值名斑方面旁族日秋餐隔雅里终父旦时晌会霎间晃暴寒曝更月望垠际朝夕本正经利杯羹东西板枝独秀根筋杆进条龙服务概模次函数又性程总付步脚印趋登毛拔呵氧氮碳决雌雄波未平派谎言流清楚白准溜烟潭有获闻是处降琴鹤甲病发可拾沙目然了直以相眨穿睹瞥瞬矢的解石鸟神教秉虔诚秘种窝蜂穷窍笑置笔苟勾销抹杀煞等奖箍节吃箭仇双雕诗筹箩筐系列纸级士官统丝毫挂维网尽线微吭响股脑胎脉承腔臂力致效资源址器举功投般说讲规贸易叶障着慎满皆输号木电池衣倾钟高低视仁觉醒览遗角银币触溃九鼎蔽抄出驷马追重语破贫洗贯走路安蹴至几蹶振跃役胆汗较辈轮辞赞退六连遍递边针血锤音错门思闪真倒项栽雾类保护川先惊乍体哄鳞爪鸣滴泡邻域党专鼓作齐炒丑烯亥克内酯冬加奴卯肝炎基尺梁街裤镐客宠庭巳汝昌烷玲磊糖肇酉醛啷青县韪良香骨鲷丂七集河市弦喜嘴张舌堵区工业姊妹星架构巧彩扭歪拼凑余热曜武州爷浮屠美乡老阶树荤素碎落能魄鳃鳗珠丄丅丆万俟丈尚摸母娘量管群亚虎必我堂令申件装伏位博侠义界表女墟台戏臭皮匠胜诸葛亮赛顶倍催请运算包立叉戟离疫苗土史志演围揭瓦晒夷姑婆帝村宝烂尖杉碱屉桌山岔岛由纪峡坝库镇废从德后拗汤治旬食明昧曹朋友框栏极权幂曲归依猫民氟硼氯磷铁江侗自旅法司洋浦梅园温暖湾焦班幸用田略番叠皇炮捶硝苯酸腺苷棱草镜穗跳远索锦纲聚氰胺联店胚膲爱色堇紫罗兰芝茶饭菱云虫藏藩乱叛苏亲债凳学座恐恋柱测肌腹衩锥系貂企乌跪叩军车农题迭都甘油屯奏键短阿姨陪姐只顾茅庐槽驾魂鲜鹿页其菜单乘任供势午齿汉组织吊调泻唇坡城报坟外夸将尉建筑岸岗公床扬新剑升杭林栗校楼标款汽社浣海商馆剧院钢华港机械广媒环球融第医科证券综财乐育游涨犹岭疏瘾睑确兵领导缴肢膛船艾瑟尔苍蔡虞效衫覆访诉课谕议轨述野钩限敌鞋颌颔颚饶首龈站例修凡划垂届属崽颏厨拜挫摆放旋削棋榻槛礼沉注滑营狱画确仪聘花葬诏员跌辖周达酒锚闸陷陆雨雪飞威丌于丹久乏予理评产亢卑亦乎舞己悲矩圆词害志但住佞佳便俗信票案幅翁倦伦假偏倚斜亏鬼敲停备伤脾胃仅此像俭匮免宜穴焉戴兼容许冻伯仲负彼昼皂轩轾实刊划颠卫战哥比省非好黄饰别拘束掩奶睬选择摇扰烦苦枚写协厌及格受欢迎约只估侵犯割状告或缺抗拒挽撤救药喻磨灭端倪少逆逾越避靠适吉誉吝玉含延咎歹听啻渊善谋均匀堪忍够太惹妙妥妨孕症孝术室完纳推冠积宣疑辩栗碴称屈挠屑干涉衡待很忙恶忿怎么怠急耻恭息悦惑惜惟想愉愧怍慌愤启懂懈怀材才紧招认扣抵拉舍也罢插揣冒搭撞南墙扩核支攻敢雷攀敬里吗需景智暇曾罪遇朽枉止况竞争辱求愈渝溶济左右袒困补爽特寂寞示弱找谢畏强疾徐痛痒冤符眠睦瞅董何厚云措活疲羞者轻玻璃祥兆禁移稂莠稳佛换答简结果盟绝缕途给谈否羁翼耐肖胫毋宁兴舒若菲莱痕迹窠臼虚衰脸兔撒鹰棺范该详讳抬泰让须眉象众赀账费灰赖奇虑训辍辨菽麦辛近送透逞徒速续逮捕遂遑违逊斧钺艰醉锈随观弃显饱脂肪使丏丐帮丒且慢末丕替桃宗王尊凉爵各图屋脊粮署录坛吾禄职胄袭君厦丗北壑桐疹损逢陵鹬丙寅戌氨腈唑纶辰酮脱氢酶醚丞丢现掉纱帽弄扯炮碗丠両丣坐存激肩臻蒂莲悖序驱丨丩丫挺杈髻鬟细介俄伊犁京尼布订普渡央委监察检查剂圈设警队斯督剩震境航舶革防托播促质版蝾螈锋研艺历残消频谱精密制造陲邮候埔坚压坜凹汇执府究邦俘摄寮彬狼岳肺肿庸英讯诊埋粒胞括控码韩暑枪枢砥澳哇牟寿甸钻探篇签缀缝继耳肯照妇埃悬璧轴柜台辣搁浅邪跑纤阮阳私囊魔丮丰姿采丱烧丳丵丶丷丸参寨朗桂瑞砂衷霞貌凤仆舰因嫌宰峰干络牌持旨祭祷簿编罚宾办丼丿乀乂乃乄仰慕盛旷留考验阔乆乇么丑麽乊湖燃乑乒乓乕乖僻忤戾离谬迕乗危肥劫除隙浪婿乙炔肠酰吡咯盐乚乛乜嘢卿玄宫尾狐龟塔嶷兄弟泉章霄钉耙乞扎哀怜恕讨乢乣乤乥乧乨乩童乪乫乭乳晕汁液瑶浆牙癌突窦罩腐胶猪酪蛋糕菌瘤乴乵乶乷乸乹乺乼乾俸冰嘉哕嚎坤妈尸垒旱枯涸俐渴潮涩煸豆燥爹瘦瘪癣瞪袋脆姜贝隆馏乿亀亁叫咕攘扔搞男砸窜蓬麻亃亄亅却亇迟典今临繁累卵奉婚聪躬巨与迁添裂副宿岁怪恶尕仑愣杆硅硫钛铀锰芑杂异钠砷胂磺琥珀舱棍簧胡茬盗浩盆贩郎腿亍洪亐互欠助勉惠操斥诿系户译亓墓碑刑铃卅渠缤纷斗米旗宪钒灯徽瘟祖拳福谷丰脏腑绑肉腌苓蕴桥铺霸颜闹判喷冈底蛙陉矿亖亘亜罕们娜桑那努哈喀弗烈曼松森杜氏杯奥琛敦戊穆圣裔汇薛孙亟亡佚虏羊牢奋释卷卸契媾感额睫缠谊趾塞挤纽阻还配驰庄亨洛祚亪享津沪畿郊慈菴枇杷膏亭阁锃丽亳亶亹诛初责翻疯偶杰丛稠妖拖寰居吸授慧蜗吞壮魅狗矛盾益渣患忧稀描猿梦暂涯畜祸缘沸搜引擎臣横纭谁混援蒸兽狮税剖亻亼亽亡什献刹邡么仂仃仄仆富怨仈仉毕昔晨壳绍仍仏仒仕宦仗欺恃腰叹叹炬梓讫施仙后琼逝仚仝仞仟悔仡佬偿填泊拓扑簇羔购顿钦佩发棻阃驭养亿儆尤借帧赈凌叙帖李柔刚沃眦睚戒讹取飨读仨仫仮著泳卧躺韶夏裁仳仵唯贤凭钓诞仿似宋佛讽伀硕盼鹅伄儅伈伉俪柯始娃迈戈坦堡帕茨萨庙玛莉莎藤霍姆伋伍奢胥廷芳豪伎俩侍汛勒希羲雏伐憩整谟闲闲伕伙伴颐伜伝伢叔恒兹恩翰伱伲侣伶俜悧鼬伸懒缩喇叭伹伺伻伽倻辐伾似佃伫布乔妮墨佉卢佌贷劣廉昂档浓矮伞洼缓耗胸谷迷挡率龋宅沫舍疗佐贰佑占优据铧尝呢须鲁晓佗佘余坪寺瓜铳僧蒙芒陀龛哼呕坊奸孽弊揖祟茧缚誓贼佝偻瞀佟你夺赶佡佢佣佤佧贾佪佫佯佰佱洁绩酿肴佴卷佶佷佸佹佺佻佼佽佾具唤窘坏娱怒慨硬习惯聋膨胀蔓骇贵痹侀侁侂侃侄侅鸿燕侇侈糜靡侉侌妾侏儒仓鼠侐侑侔仑侘侚链侜偎傍钴循柳葫芦附価侮骂蔑侯岩截蚀局贴壶嬛宴捷携桶笺酌俣狭膝狄俅俉俊俏俎俑俓俔谚俚俛黎健呈固墒增守康箱湿祐镖镳杠盒靖膜龄俞豹猎噪孚封札筒托衍鸽剪撰稿炼厂禊练缮葺俯瞰撑冲效俳俴俵俶俷俺备俾伥倂倅储卒惶敷猝逃颉蓄崇隐倌倏忽刺蜡烛噍嚼坍扁抽毙葱楣灌灶粪背薮卖赔闭霉腾倓倔幸倘倜傥倝借箸挹浇阅倡狂倢倣値倥偬倨傲倩匡嗣冲柝珍倬倭寇猩倮倶倷倹勤赞偁偃充伪吏嗓寐惺扮拱芫茜藉虢钞偈伟晶偌宕距析滤殿疼瘫注颇偓偕鸭歇滞偝偟偢忘怡旺偨偩逼偫偭偯偰偱偲侦缉蹄偷减惰漏窥窃偸偺迹傀儡傅傈僳骂篱傎奎琳迪叟芭傒傔傕伧悉荒傜傞傢傣芽逼佣婢傮睨寄檄诵谣颂伛担辜弓惨蒿悼疤傺傻屄臆巢泄箧羡盖轧颓傿㑩僄僇佥僊働僎侨僔僖僚僝伪僣僤侥僦猴偾僩僬僭僮僯僰雇僵殖签静僾僿征陇儁侬儃儇侩朴薄儊儋儌儍傧儓俦侪拟尽儜儞儤儦儩汰哉寡渥裕酷儭儱罐儳儵儹傩俨儽兀臬臲鹫允勋勋宙宵帅憝彝谐嫂阋畅沛溢盈饥赫凶悍狠猛顽愚妣斩秦遣鞭耀敏荣槃泽爆碟磁秃缆辉霁卤朵娄孜烽酱勃汀箕裘钳耶蒙蕾彻兑软遭黜兎児韵媳爸兕觥兖兙兛兜售鍪肚兝兞兟兡兢兣樽殓涅睡禀籍赘泌啡肽奸幕涵涝熵疚眷稃衬讧赴焕椒歼植跏没试误猜栖窗肋袖颊兪卦撇胡岐廓轿疸枫茴珑厕秩募勺吨寓斤历亩迫筷厘最淫螺韬兮宽匪筛襄赢轭复兲诈刃堰戎痞蚁饷它冀铸冂冃円冇冉册嫁厉砺竭醮冏牧冑冓冔冕冖冗冘冞冢窄抑诬冥冫烘菇蛰冷凝坨橇淇淋炭饼砖碛窖醋雕雹霜冱冶炉艳嘲峻滩淡漠煖飕饮冼冽凃凄怆梗凅凇净凊凋敝蒙凔凛遵汞脢凞几凢処凰凯凵凶焰凸折刷纹预丧喽奔巡榜殡芙蓉租笼辑鞘萃凼锯镬刁蛮刂娩崩批拆摊掰蘖骤歧颗秒袂赃勿嘱忌磋琢肤刈羽刎讼戮舂桨艇刓刖霹雳刜创犊刡恙墅帜筵致劫劫刨昏默攸尿欲熏润薰圭删刮痧铲刱刲刳刴刵踏磅戳柏槐绣芹苋猬舟铭鹄鹜劫剁剃辫刭锉履铅克剌姻咽哨廊掠桅沿召瞻翅赵卜渺茫郭剒剔剕沥剚愎毅讷才剜剥啄采剞剟剡剣剤䌽剐肾驶黏剰袍剀紊铲剸剺剽剿劁劂札劈啪柴扳啦刘奭姥夼昫涓熙禅禹锡翔雁鹗刽刿弩柄蜻蛉劒劓劖劘劙澜篑赏矶釜晋甜薪逐劦熔纣虐赤囚劬劭労劵效劻劼劾峭艮勅勇励勍勐腊脖庞漫饲荡粥辄勖勗勘骄馁碌泮雇捐竹骑殊阱绩朴恳谨剿勧勩勯勰劢勋勷劝惩慰诫谏勹芡践阑匁庇拯粟扎袱裹饺匆遽匈匉匊匋匍匐茎匏匕妆痰脓蛹斋苑烤蹈塘羌熊阀螳螂疆碚竿纬荷茵邙魏匚匜匝匟扶稷匣匦拢匸匹耦匽匾匿卂叮疮禧轸堤棚迢钧炼卄卆遐卉瓷盲瓶当胱腱裸卋卌卍卐怯污贱鄙龌龊陋卓溪唐梯渔陈枣泥漳浔涧梨芬谯赡辕迦郑単驴弈洽鳌卛占筮卝卞卟吩啉屎翠厄卣卨卪卬卮榫袄玺绶钮蚤惧殆笃耸卲帘帙绕恤卼卽厂厎厓厔厖厗奚厘厍厜厝谅厕厤厥厪腻孢厮厰厳厣厹厺粕垢芜菁厼厾叁悟茸薯叄吵笄悌哺讥坫垄弧芯杠潜婴刍袁诘贪谍煽馈驳収岳缔灾贿骗叚叡吻拦蘑蜜诀燧玩砚筝椎蔺铜逗骊另觅叨唠谒杵姓喊嚷嚣咚咛塑寻恼憎擦只泣渗蝠叱吒咄咤喝籀黛舵舷叵叶铎懿昭穰苴辽叻叼吁堑嫖赌瞧爬众抒吅吆夥卺橡涤抱纵摩郡唁坠扇篮膀袜颈吋忾谘酬哭妓媛暗表缰迩妃羿絮蕃浑拐葵暮隅吔吖啶嗪戚吜啬噬咽吟哦咏吠吧唧嗒咐吪隽咀征燐苞茹钙哧吮吰吱嘎吲哚吴栋娇窟孟箫忠晗淞阖闾趼宇呐睛嘘拂捧疵熄竽笛糠吼吽呀吕韦蒙呃呆笨呇贡呉罄呋喃呎呏呔呠呡痴呣呤呦呧瑛眩扒晬淑姬瑜璇鹃呪呫哔嚅嗫呬呯呰呱呲咧噌钝呴呶呷呸呺呻哱咻啸噜吁坎坷逻呿咁咂咆哮咇咈咋蟹煦珅蔼咍咑咒诅咔哒嚓咾哝哩喱咗咠咡咢咣咥咦咨嗟询咩咪咫啮啮咭咮咱咲咳呛嗽咴啕咸咹咺呙喉咿婉恸悯赋矜绿茗蓝哂抢瞒哆嗦啰噻啾滨彗哋哌哎唷哟哏哐哞哢哤哪里哫啼喘哰哲萎蚌哳咩哽哿呗唅唆唈唉唎唏哗尧棣殇璜睿肃唔睇唕吣唞唣喳唪唬唰喏唲唳唵嘛唶唸唹唻唼唾唿啁啃鹦鹉啅埠栈榷祺铺鞅飙啊啍啎啐啓啕啖啗啜哑祈啢衔啤啥啫啱啲啵啺饥啽噶昆沁喁喂喆裙喈咙喋喌喎喑喒喓喔粗喙幛庆滋鹊喟喣喤喥喦喧骚喨喩梆吃葡萄喭驼挑吓碰枞瓣纯疱藻趟铬喵営喹喺喼喿嗀嗃嗄嗅嗈嗉嗊嗍嗐嗑嗔诟嗕嗖嗙嗛嗜痂癖嗝嗡嗤嗥嗨唢嗬嗯嗰嗲嗵叽嗷嗹嗾嗿嘀嘁嘂嘅惋嘈峪禾荫啀嘌嘏嘐嘒啯啧嘚唛嘞嘟囔嘣嘥嘦嘧嘬嘭这谑严敞馋松哓嘶嗥呒虾嘹嘻啴嘿噀噂噅噇噉噎噏噔噗噘噙噚咝噞噢噤蝉皿噩噫噭嗳噱哙噳嚏涌洒欲巫霏噷噼嚃嚄嚆抖哜尝嚔苏嚚嚜嚞嚟呖嚬嚭嚮嚯亸喾饬按竣苛嚵嘤啭冁呓膪谦囍囒囓囗囘萧酚飘溅谛囝溯眸纥銮鹘囟殉囡団囤囥囧囨囱囫囵囬囮囯囲図囶囷囸囹圄圉拟囻囿圀圂圃圊粹蠹赦圌垦圏滚鲱凿枘圕圛圜圞坯埂壤骸炕祠窑豚绅魠鲮鳖圧握圩圪垯圬圮圯炸岬幔毯祇窨菩溉圳圴圻圾坂坆沾坋坌舛壈昆垫墩椅坒坓坩埚坭坰坱坳坴坵坻坼杨挣涎帘垃垈垌垍垓垔垕垗垚垛垝垣垞垟垤垧垮垵垺垾垿埀畔埄埆埇埈埌殃隍埏埒埕埗埜垭埤埦埧埭埯埰埲埳埴埵埶绋埸培怖桩础辅埼埽堀诃侄庑堃堄摧磐贞韧砌堈堉垩堋堌堍堎垴堙堞堠礁堧堨舆堭堮蜓摘堲堳堽堿塁塄塈煤茔棵塍垲埘塓绸塕鸦沽虱塙冢塝缪塡坞埙塥塩塬塱场螨塼塽塾塿墀墁墈墉墐夯増毁墝墠墦渍钵墫墬堕墰墺墙橱壅壆壊壌壎壒榨蒜壔壕壖圹垆壜壝垅壡壬壭壱売壴壹壻壸寝壿夂夅夆変夊夌漱邑夓腕泄甥御骼夗夘夙衮瑙妊娠醣枭珊莺鹭戗幻魇夤蹀秘擂鸫姚宛闺屿庾挞拇賛蛤裨菠氅漓捞湄蚊霆鲨箐篆篷荆肆舅荔鲆巷惭骰辟邱镕镰阪漂烩鲵鲽鳄鸨胪鹏妒峨谭枰晏玑癸祝秤竺牡籁恢罡蝼蝎赐绒御梭夬夭砣榆怙枕夶夹馅奄崛葩谲奈贺祀赠奌奂奓奕䜣詝奘奜奠奡奣陶奨奁魁奫奬奰娲孩贬隶酥宄狡猾她姹嫣妁毡荼皋膻蝇嫔妄妍嫉媚娆妗趣妚妞妤碍妬娅妯娌妲妳妵妺姁姅姉姗姒姘姙姜姝姞姣姤姧姫姮娥姱姸姺姽婀娀诱慑胁娉婷娑娓娟娣娭娯娵娶娸娼婊婐婕婞婤婥溪孺婧婪婬婹婺婼婽媁媄媊媕媞媟媠媢媬媮妫媲媵媸媺媻媪眯媿嫄嫈袅嫏嫕妪嫘嫚嫜嫠嫡嫦嫩嫪毐嫫嫬嫰妩嫺娴嫽嫿妫嬃嬅嬉耍婵痴艳嬔嬖嬗嫱袅嫒嬢嬷嬦嬬嬭幼嬲嬴婶嬹嬾嬿孀娘孅娈孏曰癫屏孑孓雀孖斟篓谜摺孛矻鸠崮轲祜鸾孥邈毓棠膑孬孭孰孱孳孵泛罔衔孻孪宀宁冗拙株薇掣抚琪瓿榴谧弥宊濂祁瑕宍宏碁宓邸谳実潢町宥宧宨宬徵崎骏掖阙臊煮禽蚕宸豫寀寁寥寃檐庶寎暄碜寔寖寘寙寛寠苫寤肘洱滥蒗陕核寪弘绰螽宝擅疙瘩晷対檐専尃尅赎绌缭畴衅尌峙醌襟痲碧屁昊槌淘恵瀑牝畑莓缸羚觑蔻脏躁尔尓锐尗尙尜尟尢尥尨尪尬尭尰擒尲尶尴尸尹潽蠖蛾尻扣梢蚴鳍脬蹲屇屌蚵屐屃挪屖屘屙屛屝屡屣峦嶂岩舄屧屦屩屪屃屮戍驻钾崖嵛巅旮旯楂榄榉芋茱萸靛麓屴屹屺屼岀岊岌岍阜岑彭巩岒岝岢岚岣岧岨岫岱岵岷峁峇峋峒峓峞峠嵋峨峰峱岘峹峿崀崁崆祯崋崌崃岖昆崒崔嵬巍萤颢崚崞崟崠峥巆崤崦崧殂岽崱崳崴崶崿嵂嵇嵊泗嵌嵎嵒嵓岁嵙嵞嵡嵩嵫嵯嵴嵼嵾嵝崭崭晴嶋嶌嶒嶓嵚崂嶙嶝嶞峤嶡嶢峄嶨嶭嶮嶰嶲岙嵘巂巃巇巉岿巌巓巘巛滇芎巟巠弋回巣巤炊擘蜥蟒蛊觋巰蜀彦淖杏茂甫楞巻巽帼巿帛斐鲫蕊帑帔帗帚琉汶帟帡帣帨裙帯帰帷帹暆帏幄帮幋幌幏帻幙帮幞幠幡幢幦幨幩幪帱幭幯幰遥蹉跎馀庚鉴幵幷稚邃庀庁広庄庈庉笠庋跋庖牺庠庤庥鲸庬庱庳庴庵馨衢庹庿廃厩廆廋廌廎廏廐廑廒荫廖廛厮搏锣廞弛袤廥廧廨廪廱绵踵髓廸迫瓯邺廻廼廾廿躔弁皱弇弌弍弎弐弑吊诡憾荐弝弢弣弤弨弭弮弰弪霖繇焘斌旭溥骞弶弸弼弾彀彄别累纠强彔彖彘彟彟陌彤贻彧绘虹彪炳雕蔚鸥彰瘅彲彳彴仿彷徉徨彸彽踩敛旆徂徇徊渭畲铉裼従筌徘徙徜徕膳苏萌渐徬徭醺徯徳徴潘徻徼忀瘁胖燎怦悸颤扉犀澎湃砰恍惚绞隘忉惮挨饿忐忑忒忖応忝忞耿忡忪忭忮忱忸怩忻悠懑怏遏怔怗怚怛怞怼黍讶怫怭懦怱怲恍怵惕怸怹恁恂恇恉恌恏恒恓恔恘恚恛恝恞恟恠恣恧眄恪恫恬澹恰恿悀悁悃悄悆悊悐悒晦悚悛悜悝悤您悩悪悮悰悱凄恻德悴怅惘闷悻悾惄愫钟蒐惆惇惌惎惏惓惔惙惛耄惝疟浊恿惦德恽惴蠢惸拈愀愃愆愈愊愍愐愑愒愓愔愕恪氓蠢騃昵惬赧悫愬愮愯恺愼慁恿慅慆慇霭慉慊愠慝慥怄怂慬慱悭慴慵慷戚焚憀灼郁憃惫憋憍眺捏轼愦憔憖憙憧憬憨憪憭怃憯憷憸憹憺懃懅懆邀懊懋怿懔懐懞懠懤懥恹懫懮懰懱毖懵遁梁雍忏懽戁戄戆戉戋戕戛戝戛戠戡戢戣戤戥戦戬戭戯轰戱披菊牖戸戹戺戻卯戽锹扂楔扃扆扈扊杖牵绢铐镯赉扐搂搅烊盹瞌跟趸镲靶鼾払扗玫腮扛扞扠扡扢盔押扤扦扱罾揄绥鞍郤窾扻扼扽抃抆抈抉抌抏瞎抔缳缢擞抜拗択抨摔歉蹿牾抶抻搐泵菸拃拄拊髀抛拌脯拎拏拑擢秧沓曳挛迂拚拝拠拡拫拭拮踢拴拶拷攒拽掇芥橐簪摹疔挈瓢骥捺蹻挌挍挎挐拣挓挖掘浚挙揍聩挲挶挟挿捂捃捄捅捆捉捋胳膊揎捌捍捎躯蛛捗捘捙捜捥捩扪捭据捱捻捼捽掀掂抡臀膘掊掎掏掐笙掔掗掞棉芍掤搪阐掫掮掯揉掱掲掽掾揃揅揆搓揌诨揕揗揘揜揝揞揠揥揩揪揫橥遒麈揰揲揵揶揸背揺搆搉搊搋搌搎搔搕撼橹捣搘搠搡搢搣搤搥搦搧搨搬楦裢讪赸掏搰搲搳搴揾搷搽搾搿摀摁摂摃摎掴摒摓跤摙摛掼摞摠摦喉羯摭摮挚摰摲抠摴抟摷掺摽撂撃撅稻撊撋挦锏泼撕撙撚㧑挢撢掸撦撅撩撬撱朔揿蚍蜉挝捡擀掳闯擉缶觚擐擕擖擗擡擣擤澡腚擧擨擩擫擭摈拧撷擸撸擽擿攃摅撵攉攥攐攓撄搀撺每攩攫辔澄攮攰攲攴轶攷砭讦攽碘敁敃敇敉叙敎筏敔敕敖闰诲敜煌敧敪敳敹敺敻敿斁衽斄牒绉诌斉斎斓鹑谰驳鳢斒筲斛斝斞斠斡斢斨斫斮晾沂潟颖绛邵斲斸釳於琅斾斿旀旗旃旄涡旌旎旐旒旓旖旛旝旟旡旣浴旰獭魃旴时旻旼旽昀昃昄昇昉晰躲澈熹皎皓矾昑昕昜昝昞昡昤晖笋昦昨是昱昳昴昶昺昻晁蹇隧蔬髦晄晅晒晛晜晞晟晡晢晤晥曦晩萘莹顗晿暁暋暌暍暐暔暕煅旸暝暠暡曚暦暨暪朦胧昵暲殄冯暵暸暹暻暾曀晔昙曈曌曏曐暧曘曙曛叠昽曩骆曱甴肱曷牍禺锟曽沧耽朁朅朆杪栓夸竟粘绦朊膺朏朐朓朕朘朙瞄觐溘饔飧朠朢朣栅椆淀虱朩朮朰朱炆璋钰炽鹮朳槿朵朾朿杅杇杌陧欣钊湛漼楷瀍煜玟缨翱肇舜贽适逵杓杕杗杙荀蘅杝杞脩珓筊杰榔狍閦颦缅莞杲杳眇杴杶杸杻杼枋枌枒枓衾葄翘纾逋枙狸桠枟槁枲枳枴枵枷枸橼枹枻柁柂柃柅柈柊柎某柑橘柒柘柙柚柜柞栎柟柢柣柤柩柬柮柰柲橙柶柷柸柺査柿栃栄栒栔栘栝栟柏栩栫栭栱栲栳栴檀栵栻桀骜桁镁桄桉桋桎梏椹葚桓桔桕桜桟桫椤桭杯桯桲桴桷桹湘溟梃梊梍梐潼栀枧梜梠梡梣梧梩梱梲梳梴梵梹棁棃樱棐棑棕榈簑绷蓑枨棘棜棨棩棪棫棬棯棰棱棳棸棹椁棼碗椄苕椈椊椋椌椐椑椓椗検椤椪椰椳椴椵椷椸椽椿楀匾楅篪楋楍楎楗楘楙楛楝楟楠楢楥桢楩楪楫楬楮楯楰梅楸楹楻楽榀榃榊榎槺榕榖榘榛狉莽搒笞榠榡榤榥榦榧杩榭榰榱梿霰榼榾桤槊闩槎槑槔槖様槜槢槥椠槪槭椮槱槲槻槼槾樆樊樏樑樕樗樘樛樟樠樧樨権樲樴樵猢狲桦樻罍樾樿橁橄橆桡笥龠橕橚橛辆椭橤橧竖膈跨橾橿檩檃檇柽檍檎檑檖檗桧槚檠樯檨檫檬梼槟檴檵柠棹櫆櫌栉櫜椟櫡槠栌枥榇栊櫹棂茄櫽欀欂欃欐欑栾欙棂溴欨欬欱欵欶欷歔欸欹欻欼欿歁歃歆艎歈歊莳蝶歓歕歘歙歛歜欤歠蹦诠镶蹒跚升陟歩歮歯歰歳歴璞歺瞑歾殁夭殈殍殑殗殜殙殛殒殢殣殥殪殚僵殰殳荃殷殸殹蛟殻肴谤殴毈毉喂毎毑蕈毗毘毚茛邓毧毬毳毷毹毽毾毵牦氄氆靴氉氊氇氍氐聊氕氖気氘氙氚氛氜氝氡汹焊痉氤氲氥氦铝锌氪烃氩铵痤汪浒漉痘盂碾菖蒲蕹蛭螅氵冰氹氺氽烫氾氿渚汆汊汋汍汎汏汐汔汕褟汙汚汜蓠沼秽蔑汧汨汩汭汲汳汴堤汾沄沅沆瀣沇沈葆浸沦湎溺痼疴沌沍沏沐沔沕沘浜畹砾沚沢沬沭沮沰沱灢沴沷籽沺烹濡洄泂肛泅泆涌肓泐泑泒泓泔泖泙泚泜泝泠漩馍涛粼泞藓鳅泩泫泭泯铢泱泲洇洊泾琵琶荽蓟箔洌洎洏洑潄濯洙洚洟洢洣洧洨洩痢滔洫洮洳洴洵洸洹洺洼洿淌蜚浄浉浙赣渫浠浡浤浥淼瀚浬浭翩萍浯浰蜃淀苔蛞蝓蜇螵蛸煲鲤浃浼浽溦涂涊涐涑涒涔滂莅涘涙涪涫涬涮涴涶涷涿淄淅淆淊凄黯淓淙涟淜淝淟淠淢淤渌淦淩猥藿亵淬淮淯淰淳诣涞纺淸淹炖癯绮渇済渉渋渓渕涣渟渢滓渤澥渧渨渮渰渲渶渼湅湉湋湍湑湓湔黔湜湝浈湟湢湣湩湫湮麟湱湲湴涅満沩溍溎溏溛舐漭溠溤溧驯溮溱溲溳溵溷溻溼溽溾滁滃滉滊荥滏稽滕滘汇滝滫滮羼耷卤滹浐煎漈漊漎绎漕漖漘漙沤漜漪漾漥漦漯漰溆漶漷濞潀颍潎潏潕潗潚潝潞潠潦祉疡潲潵滗潸潺潾涠澁澂澃澉澌澍澐澒澔澙渑澣澦澧澨澫澬浍澰澴澶澼熏郁濆濇濈濉濊貊濔疣濜濠濩觞浚濮盥潍濲泺瀁滢渎渖瀌浏瀒瀔濒泸瀛潇潆瀡潴泷濑瀬弥潋瀳瀵瀹瀺瀼沣滠灉灋灒漓灖灏灞灠滦灥灨滟灪蜴灮烬獴灴灸灺炁炅鱿炗炘炙炤炫疽烙钎炯炰炱炲炴炷毁炻烀烋瘴鲳烓烔焙烜烝烳饪烺焃焄耆焌焐焓焗焜焞焠焢焮焯焱焼煁煃煆煇煊熠煍熬煐炜煕暖熏硷霾煚煝煟煠茕矸煨琐炀萁煳煺煻熀熅熇熉罴荧穹炝熘熛熜稔谙烁熤熨熯熰眶蚂颎熳熸熿燀烨燂燄盏燊燋燏燔隼燖焖燠燡灿燨燮燹燻燽燿爇爊爓爚爝爟爨蟾爯爰为爻丬爿牀牁牂牄牋窗牏牓窗釉牚腩蒡虻牠虽蛎牣牤牮牯牲牳牴牷牸牼绊牿靬犂犄犆犇犉犍犎犒荦犗犛犟犠犨犩犪犮犰狳犴犵犺狁甩狃狆狎狒獾狘狙黠狨狩狫狴狷狺狻豕狈蜘猁猇猈猊猋猓猖獗猗猘狰狞犸猞猟獕猭猱猲猳猷猸猹猺玃獀獃獉獍獏獐獒毙獙獚獜獝獞獠獢獣獧鼇蹊狯猃獬豸狝獯鬻獳犷猕猡玁菟玅玆玈珉糁禛郅玍玎玓瓅玔玕玖玗玘玞玠玡玢玤玥玦珏瑰玭玳瑁玶玷玹玼珂珇珈瑚珌馐馔珔珖珙珛珞珡珣珥珧珩珪佩珶珷珺珽琀琁陨玡琇琖琚琠琤琦琨琫琬琭琮琯琰琱琲琅琴珐珲瑀瑂瑄瑉玮瑑瑔瑗瑢瑭瑱瑲瑳瑽瑾瑿璀璨璁璅璆璈琏璊璐璘璚璝璟璠璡璥瑷璩璪璫璯璲玙璸璺璿瓀璎瓖瓘瓒瓛脐瓞瓠瓤瓧瓩瓮瓰瓱瓴瓸瓻瓼甀甁甃甄甇甋甍甎甏甑甒甓甔瓮甖甗饴蔗甙诧钜粱盎锈团甡褥産甪甬甭甮宁铠甹甽甾甿畀畁畇畈畊畋畎畓畚畛畟鄂畤畦畧荻畯畳畵畷畸畽畾疃叠疋疍疎箪疐疒疕疘疝疢疥疧疳疶疿痁痄痊痌痍痏痐痒痔痗瘢痚痠痡痣痦痩痭痯痱痳痵痻痿瘀痖瘃瘈瘉瘊瘌瘏瘐痪瘕瘖瘙瘚瘛疭瘜瘝瘗瘠瘥瘨瘭瘆瘯瘰疬瘳疠瘵瘸瘺瘘瘼癃痨痫癈癎癐癔癙癜癠疖症癞蟆癪瘿痈発踔绀蔫酵皙砬砒翎翳蔹钨镴皑鹎驹暨粤褶皀皁荚皃镈皈皌皋皒朱皕皖皘皜皝皞皤皦皨皪皫皭糙绽皴皲皻皽盅盋碗盍盚盝踞盦盩秋千盬盭眦睁瞤盯盱眙裰盵盻睐眂眅眈眊県眑眕眚眛眞眢眣眭眳眴眵眹瞓眽郛睃睅睆睊睍睎困睒睖睙睟睠睢睥睪睾睯睽睾眯瞈瞋瞍逛瞏瞕瞖眍䁖瞟瞠瞢瞫瞭瞳瞵瞷瞹瞽阇瞿眬矉矍铄矔矗矙瞩矞矟矠矣矧矬矫矰矱硪碇磙罅舫阡、矼矽礓砃砅砆砉砍砑砕砝砟砠砢砦砧砩砫砮砳艏砵砹砼硇硌硍硎硏硐硒硜硖砗磲茚钡硭硻硾碃碉碏碣碓碔碞碡碪碫碬砀碯碲砜碻礴磈磉磎硙磔磕磖磛磟磠磡磤磥蹭磪磬磴磵磹磻硗礀硚礅礌礐礚礜礞礤礧礮砻礲礵礽礿祂祄祅祆禳祊祍祏祓祔祕祗祘祛祧祫祲祻祼饵脔锢禂禇禋祦禔祎隋禖禘禚禜禝禠祃禢禤禥禨禫祢禴禸秆秈秊闱飒秋秏秕笈蘵赁秠秣秪秫秬秭秷秸稊稌稍稑稗稙稛稞稬秸稲稹稼颡稿穂穄穇穈穉穋稣贮穏穜穟秾穑穣穤穧穨穭穮穵穸窿阒窀窂窅窆窈窕窊窋窌窒窗窔窞窣窬黩蹙窑窳窴窵窭窸窗竁竃竈竑竜并竦竖篦篾笆鲛竾笉笊笎笏笐靥笓笤箓笪笫笭笮笰笱笲笳笵笸笻筀筅筇筈筎筑筘筠筤筥筦笕筒筭箸筰筱筳筴宴筸箂个箊箎箑箒箘箙箛箜篌箝箠箬镞箯箴箾篁筼筜篘篙篚篛篜篝篟篠篡篢篥篧篨篭篰篲筚篴篶篹篼箦簁簃簆簉簋簌簏簜簟簠簥簦簨簬簰簸簻籊藤籒籓籔签籚篯箨籣籥籧笾簖籫籯芾麴籵籸籹籼粁秕粋粑粔粝粛粞粢粧粨粲粳稗粻粽辟粿糅糆糈糌糍糒糔萼糗蛆蹋糢糨糬粽糯糱籴粜糸糺紃蹼鲣霉纡纨绔纫闽襻紑纰纮锭鸢鹞纴紞紟扎紩紬绂绁纻紽紾绐絁絃絅経絍绗絏缡褵絓絖絘絜绚絣螯絪絫聒絰絵绝絺絻絿綀绡綅绠绨绣綌綍綎捆綖綘継続缎绻綦綪线綮綯绾罟蝽綷縩绺绫緁绲緅緆缁绯緌緎総緑绱緖缃缄缂绵缗緤褓缌纂緪緰缑缈缏缇縁縃縄萦缙缒縏缣縕缞縚缜缟缛縠縡縢縦绦縯縰骋缧縳纤缦絷缥縻衙縿繄缫繈繊繋繐缯繖繘繙繠缋繣繨缰缲繸繻缱纁纆纇缬缵纩纑纕缵纙纚纛缾罃罆坛罋罂罎罏罖罘罛罝罠罣罥罦罨罫罭锾罳罶罹罻罽罿羂羃羇芈蕉51鸵羑羖羌羜羝羢羣羟羧羭羮羰羱羵羶羸藜鲐翀翃翅翊翌翏翕翛翟翡翣翥翦跹翪翫翚翮翯翱翽翾翿板饕鸹锨耋耇耎耏专耒耜耔耞耡耤耨耩耪耧耰鬓耵聍聃聆聎聝聡聦聱聴聂聼阈聿肄肏肐肕腋肙肜肟肧胛肫肬肭肰肴肵肸肼胊胍胏胑胔胗胙胝胠铨胤胦胩胬胭胯胰胲胴胹胻胼胾脇脘脝脞脡脣脤脥脧脰脲脳腆腊腌臜腍腒腓胨腜腠脶腥腧腬腯踝蹬镣腴腶蠕诽膂腽嗉膇膋膔腘膗膙膟黐膣膦膫膰膴膵膷脍臃臄臇臈臌臐臑臓膘臖臙臛臝臞臧蓐诩臽臾臿舀舁鳑鲏舋舎舔舗馆舝舠舡舢舨舭舲舳舴舸舺艁艄艅艉艋艑艕艖艗艘艚艜艟艣舣艨艩舻艬艭荏艴艳艸艹艻艿芃芄芊萰陂藭芏芔芘芚蕙芟芣芤茉芧芨芩芪芮芰鲢芴芷芸荛豢芼芿苄苒苘苙苜蓿苠苡苣荬苤苎苪镑苶苹苺苻苾茀茁范蠡萣茆茇茈茌茍茖茞茠茢茥茦菰茭茯茳藨茷藘茼荁荄荅荇荈菅蜢鸮荍荑荘豆荵荸荠莆莒莔莕莘莙莚莛莜莝莦莨菪莩莪莭莰莿菀菆菉菎菏菐菑菓菔芲菘菝菡菢菣菥蓂菧菫毂蓥菶菷菹醢菺菻菼菾萅萆苌萋萏萐萑萜萩萱萴莴扁萻葇葍葎葑荭葖葙葠葥苇葧葭药葳葴葶葸葹葽蒄蒎莼茏薹莅蒟蒻蒢蒦蒨蒭藁蒯蒱鉾蒴蒹蒺蒽荪蓁蓆蓇蓊蓌蓍蓏蓓蓖蓧蓪蓫荜跣藕苁蓰蓱莼蓷蓺蓼蔀蔂蔃蔆蔇蔉蔊蔋蔌蔎蔕蔘蔙蒌蔟锷蒋雯茑蔯蔳麻蔵蔸蔾荨蒇蕋蕍荞蕐蕑芸莸蕖蕗蕝蕞蕠蕡蒉蕣蕤蕨蕳蓣蕸蕺蕻薀薁薃薅薆荟薉芗薏薐蔷薖薘剃谔钗薜薠薢薤薧薨薫薬薳薶薷薸薽薾薿藄藇藋荩藐藙藚藟藦藳藴苈藷藾蘀蘁蕲苹蘗蘘蘝蘤蘧蘩蘸蘼虀虆虍蟠虒虓虖虡虣虥虩虬虰蛵蛇虷鳟虺虼蚆蚈蚋蚓蚔蚖蚘蚜蚡蚣蚧蚨蚩蚪蚯蚰蜒蚱蚳蚶蚹蚺蚻蚿蛀蛁蛄蛅蝮蛌蛍蛐蟮蛑蛓蛔蛘蛚蛜蛡蛣蜊蛩蛱蜕螫蜅蚬蜈蝣蜋蜍蜎蜑蠊蜛饯蜞蜣蜨蜩蜮蜱蜷蜺蜾蜿蝀蝃蝋蝌蝍蝎蝏蝗蝘蝙蝝鲼蝡蝤蝥猿蝰虻蝲蝴蝻螃蠏蛳螉螋螒螓螗螘螙螚蟥螟螣螥螬螭䗖螾螀蟀蟅蝈蟊蟋蟑蟓蟛蟜蟟蟢虮蟨蟪蟭蛲蟳蛏蟷蟺蟿蠁蠂蠃虿蠋蛴蠓蚝蠗蠙蠚蠛蠜蠧蟏蠩蜂蠮蠰蠲蠵蠸蠼蠽衁衄衄衇衈衉衋衎衒同衖胡衞裳钩衭衲衵衹衺衿袈裟袗袚袟袢袪袮袲袴袷袺袼褙袽裀裉袅裋夹裍裎裒裛裯裱裲裴裾褀褂褉褊裈褎褐褒褓褔褕袆褚褡褢褦褧褪褫袅褯褰褱裆褛褽褾襁褒襆裥襉襋襌襏襚襛襜裣襞襡襢褴襦襫襬襭襮襕襶襼襽襾覂覃覅霸覉覊覌覗觇覚覜觍觎覧覩觊觏覰観觌觔觕觖觜觽觝觡酲觩觫觭觱觳觯觷觼觾觿言赅讣訇訏訑訒诂讬訧訬訳訹证訾詀詅诋毁詈詊讵詑诒诐詗诎察詨诜詶詸詹詻诙诖誂誃诔锄诓誋诳诶悖誙诮诰誧説読誯谇訚谄谆諆諌诤诹诼諕谂谀諝谝諟喧谥諴諵谌谖誊謆謇歌謍謏謑谡谥謡謦謪谪讴謷謼谩哗譅譆譈譊讹譒撰谮鑫譞噪譩谵譬譱譲谴譸譹谫讅讆詟䜩雠讐谗谶讙谠讟谽豁豉豇岂豊豋豌豏豔豞豖豗豜豝豣豦豨豭豱豳豵豶豷豺豻貅貆狸猊貔貘䝙貜貤餍贳餸贶贲赂賏赊赇赒賝赓赕賨赍斗賮賵賸赚赙赜赟贉赆赑贕赝赬赭赱赳迄趁趂趄趐趑趒趔趡趦趫趮趯趱趴趵趷趹趺趿跁跂跅跆踬跄跐跕跖跗跙跛跦跧跩跫跬跮跱跲跴跺跼跽踅踆踈踉踊踒踖踘踜踟躇蹰踠踡踣踤踥踦踧跷踫踮逾踱踊踶踹踺踼踽躞蹁蹂躏蹎蹐蹓蹔跸蹚蹜蹝迹蹠蹡蹢跶蹧蹩蹪蹯鞠蹽躃躄躅踌跻躐踯跞躘躙躗躝躠蹑躜躧躩躭躰躬躶軃軆辊軏轫軘軜軝腭転軥軨軭軱轱辘軷轵轺軽軿輀輂辇辂辁輈挽輗辄辎辋輠輤輬輭輮辏輴輵輶輹輼辗辒轇轏轑轒辚轕轖轗轘轙轝轞轹轳罪辣辞辵辶辺込辿迅迋迍麿迓迣迤逦迥迨迮迸迺迻迿逄逅逌逍逑逓迳逖逡逭逯逴逶逹遄遅侦遘遛遝遢遨遫遯遰遴绕遹遻邂邅邉邋邎邕邗邘邛邠邢邧邨邯郸邰邲邳邴邶邷邽邾邿郃郄郇郈郔郕郗郙郚郜郝郞郏郠郢郪郫郯郰郲郳郴郷郹郾郿鄀鄄郓鄇鄈鄋鄍鄎鄏鄐鄑邹邬鄕郧鄗鄘鄚鄜鄞鄠鄢鄣鄤鄦鄩鄫鄬鄮鄯鄱郐鄷鄹邝鄻鄾鄿酃酅酆酇郦酊酋酎酏酐酣酔酕醄酖酗酞酡酢酤酩酴酹酺醁醅醆醊醍醐醑醓醖醝酝醡醤醨醪醭醯醰酦醲醴醵醸醹醼醽醾釂酾酽釆釈鲈镏阊钆钇钌钯钋鼢鼹钐钏釪釬釭釱钍釸钕钫鈃钭鈆鈇钚鈊鈌钤钣鈒鈤钬钪鈬铌铈钶铛钹铍钸钿鉄鉆铊铇鉌铋鉏铂钷铆钵鉥钲鉨钼钽鉱鉲鉶铰铒鉼铪銍銎铣銕镂铫铦铑铷銤铱铟銧铥铕铯銭銰焊銶锑锉汞鋂锒鋆鋈鋊铤鋍铗鋐鋑鋕鋘鋙锊锓锔锇铓鋭铖锆锂铽鋳鋹鋺鉴镚钎錀锞锖锫锩錍铔锕錔锱铮锛錞锬锜錤錩錬録铼錼锝钔锴鍉镀鍏鍐铡鍚锻锽锸锲锘鍫鍭鍱鍴锶鍹锗针锺锿镅鎉鎋鎌鎍鎏鎒鎓鎗镉鎚鎞镃鎤铩锼鎭鎯镒镍鎴镓鎸鎹镎镟鏊镆镠镝鏖铿锵鏚镗镘镛鏠鏦錾镤鏸镪鏻鏽鏾铙鐄鐇鐏铹镦镡鐗馗镫镢镨鐡锎镄鐩镌鐬鐱镭鐶鐻鐽镱鑀鑅镔鑐鑕鑚鑛鑢鑤镥鑪镧鑯鑱鑴鑵镊镢钃镻闫闬闶闳閒闵閗閟阂関合閤哄阆閲阉閺阎阏阍阌暗闉阕阗闑闒闿闘闚阚闟闠闤闼阞阢阤阨阬阯阹阼阽陁陑陔陛陜陡陥陬骘陴険陼陾阴隃隈隒隗隞隠隣隤隩隮隰颧隳隷隹雂雈雉雊雎雑雒雗雘雚雝雟雩雰雱驿霂霅霈霊沾霒霓霙霝霢霣霤霨霩霪霫霮靁叇叆靑靓靣腼靪靮靰靳靷靸靺靼靿鞀鞃鞄鞍鞗鞙鞚鞝鞞鞡鞣鞨鞫鞬鞮鞶鞹鞾鞑韅鞯驮韍韎韔韖韘韝韫韡韣韭韭韱韹韺頀刮頄顸顼頍颀颃颁頖頞頠頫頬颅頯頲颕頼悴顋顑颙颛颜顕顚顜颟顣颥颞飐飑台飓颸飏飖颽颾颿飀飂飚飌翻飡飣饲飥饨饫飮飧飶餀餂饸饹餇餈饽哺馂餖餗餚馄馃餟餠餤餧餩餪餫糊餮糇餲饧馎糕饩馈馊馌馒饇馑馓膳饎饐饘饟馕馘馥馝馡馣骝骡馵馹駃駄駅駆駉駋驽駓驵駗骀驸駜骂骈駪駬骃駴骎駹駽駾騂騄骓騆騉騋骒骐麟騑騒験騕骛騠騢騣騤騧骧騵驺骟騺蓦骖骠骢驆驈骅驌骁驎骣驒驔驖驙驦驩驫骺鲠骫骭肮骱骴骶骷髅骾髁髂髄髆膀髇髑髌髋髙髝髞髟髡髣髧髪髫髭髯髲髳髹髺髽髾鬁鬃鬅鬈鬋鬎鬏鬐鬑鬒鬖鬗鬘鬙鬠鬣斗鬫鬬阄鬯鬰鬲鬵鬷魆魈魊魋魍魉魑魖鳔魛魟魣魦魨魬鲂魵魸鮀鲅鮆鲧鲇鲍鲋鮓鲒鲕鮟鱇鮠鮦鮨鲔鲑鮶鮸鮿鲧鯄鯆鲩鯈鲻鯕鲭鲞鯙鯠鲲鯥鲰鲶鳀鯸鳊鲗䲠鹣鳇鰋鳄鳆鰕鰛鰜鲥鰤鳏鰦鳎鳐鳁鳓鰶鲦鲡鰼鰽鱀鱄鳙鱆鳕鱎鱐鳝鳝鳜鲟鲎鱠鳣鱨鲚鱮鱲鱵鱻鲅鳦凫鳯鳲鳷鳻鴂鴃鴄鸩鴈鴎鸰鴔鴗鸳鸯鸲鹆鸱鴠鴢鸪鴥鸸鹋鴳鸻鴷鴽鵀鵁鸺鹁鵖鵙鹈鹕鹅鵟鵩鹌鵫鵵鵷鵻鹍鶂鶊鶏鶒鹙鶗鶡鶤鶦鶬鶱鹟鶵鶸鶹鹡鶿鹚鷁鷃鷄鷇䴘䴘鷊鷏鹧鷕鹥鸷鷞鷟鸶鹪鹩鷩鷫鷭鹇鹇鸴鷾䴙鸂鸇䴙鸏鸑鸒鸓鸬鹳鸜鹂鹸咸鹾麀麂麃麄麇麋麌麐麑麒麚麛麝麤麸面麫麮麯麰麺麾黁黈黉黢黒黓黕黙黝黟黥黦黧黮黰黱黪黶黹黻黼黾鼋鼂鼃鼅鼈鼍鼏鼐鼒冬鼖鼙鼚鼛鼡鼩鼱鼪鼫鼯鼷鼽齁齆齇齈齉齌赍齑龀齕齗龅齚龇齞龃龉龆齢出齧齩齮齯齰齱齵齾厐龑龒龚龖龘龝龡龢龤' + +traditional_characters = '制咖片型超聲盤鑒定仔點他命書歌粉巾字帳恤手指記憶棒形轉彎溝光○〇㐄㐅㐆㐌㐖毒㐜㐡㐤㐰㐺㑇㑳㒳㒸㔾㗂㗎㝵㞎㞙㞞㠯㢲㢴㤅㥁㥯㨗㫺㬎㮎㮚㮸㲋㲱㲾㳮㵎㵪㶸㷖㷭㹢㹴犬㺢狓㺵㼝㽮㿝䍃䔢䖟䖸䗈䗥䗪䝓䠶䥯䦉䯝䰾魚䲔䳗䳘䵹鼄䶑一對應映射丁不識下兒子做二休世丘之貉並中台原則串為甚謂乾淨了百事無成八變五十些人得道雞升天代如併來去個國政策勁幽靈在歐洲遊蕩接樣蘿蔔坑側化傳價元論醇共再准刀兩斷切分耕耘收穫錢貨物向看舊就緒險刻千金動勞永逸匙零夜半卡通回復返影蹤反常態口咬氣句話同吐快吹周味呼諾嗚品紅鍋哄而散起唱和問三知生熟團漆黑火糟堆場空塊麵塌糊塗塵染壁廂夔已足多情露水大早到晚夫妻當關萬莫開失古恨套所料既往孔見提師要家主審寸陰難買鬥牛小撮部陣局展身層巴掌帆風順席地帶過年計於春頭載四季期被蛇怕井繩度願式份彈頃深前律徑心意念差愁孤行俱全房廳交遮打技長把抓死拿眼淚鼻涕鑰鎖折段抿拍即合掃排掬揮撥擁上入擊洞擲攬改故轍敗文值名斑方面旁族日秋餐隔雅里終父旦時晌會霎間晃暴寒曝更月望垠際朝夕本正經利杯羹東西板枝獨秀根筋桿進條龍服務概模次函數又性程總付步腳印趨登毛拔呵氧氮碳決雌雄波未平派謊言流清楚白準溜煙潭有獲聞是處降琴鶴甲病發可拾沙目然瞭直以相眨穿睹瞥瞬矢的解石鳥神教秉虔誠秘種窩蜂窮竅笑置筆苟勾銷抹殺煞等獎箍節吃箭仇雙鵰詩籌籮筐系列紙級士官統絲毫掛維網盡線微吭響股腦胎脈承腔臂力致效資源址器舉功投般說講規貿易葉障著慎滿皆輸號木電池衣傾鐘高低視仁覺醒覽遺角銀幣觸潰九鼎蔽抄出駟馬追重語破貧洗貫走路安蹴至幾蹶振躍役膽汗較輩輪辭贊退六連遍遞邊針血錘音錯門思閃真倒項栽霧類保護川先驚乍體鬨鱗爪鳴滴泡鄰域黨專鼓作齊炒丑烯亥克內酯冬加奴卯肝炎基尺梁街褲鎬客寵庭巳汝昌烷玲磊糖肇酉醛啷青縣韙良香骨鯛丂七集河市弦喜嘴張舌堵區工業姊妹星架構巧彩扭歪拼湊餘熱曜武州爺浮屠美鄉老階樹葷素碎落能魄鰓鰻珠丄丅丆万俟丈尚摸母娘量管群亞虎必我堂令申件裝伏位博俠義界表女墟臺戲臭皮匠勝諸葛亮賽頂倍催請運算包立叉戟離疫苗土史志演圍揭瓦曬夷姑婆帝村寶爛尖杉鹼屜桌山岔島由紀峽壩庫鎮廢從德後拗湯治旬食明昧曹朋友框欄極權冪曲歸依貓民氟硼氯磷鐵江侗自旅法司洋浦梅園溫暖灣焦班幸用田略番疊皇炮捶硝苯酸腺苷稜草鏡穗跳遠索錦綱聚氰胺聯店胚膲愛色堇紫羅蘭芝茶飯菱雲蟲藏藩亂叛蘇親債凳學座恐戀柱測肌腹衩錐係貂企烏跪叩軍車農題迭都甘油屯奏鍵短阿姨陪姐隻顧茅廬槽駕魂鮮鹿頁其菜單乘任供勢午齒漢組織吊調瀉唇坡城報墳外夸將尉建築岸崗公床揚新劍昇杭林栗校樓標款汽社浣海商館劇院鋼華港機械廣媒環球融第醫科證券綜財樂育游漲猶嶺疏癮瞼確兵領導繳肢膛船艾瑟爾蒼蔡虞傚衫覆訪訴課諭議軌述野鉤限敵鞋頜頷顎饒首齦站例修凡劃垂屆屬崽頦廚拜挫擺放旋削棋榻檻禮沉注滑營獄畫确儀聘花葬詔員跌轄週達酒錨閘陷陸雨雪飛威丌于丹久乏予理評產亢卑亦乎舞己悲矩圓詞害誌但住佞佳便俗信票案幅翁倦倫假偏倚斜虧鬼敲停備傷脾胃僅此像儉匱免宜穴焉戴兼容許凍伯仲負彼晝皂軒輊實刊划顛衛戰哥比省非好黃飾別拘束掩奶睬選擇搖擾煩苦枚寫協厭及格受歡迎約只估侵犯割狀告或缺抗拒挽撤救藥喻磨滅端倪少逆逾越避靠適吉譽吝玉含延咎歹聽啻淵善謀均勻堪忍夠太惹妙妥妨孕症孝術室完納推冠積宣疑辯慄碴稱屈撓屑干涉衡待很忙惡忿怎麼怠急恥恭息悅惑惜惟想愉愧怍慌憤啟懂懈懷材才緊招認扣抵拉捨也罷插揣冒搭撞南牆擴核支攻敢雷攀敬裡嗎需景智暇曾罪遇朽枉止況競爭辱求癒渝溶濟左右袒困補爽特寂寞示弱找謝畏強疾徐痛癢冤符眠睦瞅董何厚云措活疲羞者輕玻璃祥兆禁移稂莠穩佛換答簡結果盟絕縷途給談否羈翼耐肖脛毋寧興舒若菲萊痕跡窠臼虛衰臉兔撒鷹棺範該詳諱抬泰讓鬚眉象眾貲賬費灰賴奇慮訓輟辨菽麥辛近送透逞徒速續逮捕遂遑違遜斧鉞艱醉鏽隨觀棄顯飽脂肪使丏丐幫丒且慢末丕替桃宗王尊涼爵各圖屋脊糧署錄壇吾祿職胄襲君廈丗北壑桐疹損逢陵鷸丙寅戌氨腈唑綸辰酮脫氫酶醚丞丟現掉紗帽弄扯砲碗丠両丣坐存激肩臻蒂蓮悖序驅丨丩丫挺杈髻鬟細介俄伊犁京尼布訂普渡央委監察檢查劑圈設警隊斯督剩震境航舶革防托播促質版蠑螈鋒研藝歷殘消頻譜精密製造陲郵候埔堅壓壢凹匯執府究邦俘攝寮彬狼嶽肺腫庸英訊診埋粒胞括控碼韓暑槍樞砥澳哇牟壽甸鑽探篇簽綴縫繼耳肯照婦埃懸璧軸櫃檯辣擱淺邪跑纖阮陽私囊魔丮丰姿采丱燒丳丵丶丷丸參寨朗桂瑞砂衷霞貌鳳僕艦因嫌宰峰幹絡牌持旨祭禱簿編罰賓辦丼丿乀乂乃乄仰慕盛曠留考驗闊乆乇么醜麼乊湖燃乑乒乓乕乖僻忤戾离謬迕乗危肥劫除隙浪婿乙炔腸酰吡咯鹽乚乛乜嘢卿玄宮尾狐龜塔嶷兄弟泉章霄釘耙乞扎哀憐恕討乢乣乤乥乧乨乩童乪乫乭乳暈汁液瑤漿牙癌突竇罩腐膠豬酪蛋糕菌瘤乴乵乶乷乸乹乺乼乾俸冰嘉噦嚎坤媽屍壘旱枯涸俐渴潮澀煸豆燥爹瘦癟癬瞪袋脆薑貝隆餾乿亀亁叫咕攘扔搞男砸竄蓬麻亃亄亅卻亇遲典今臨繁累卵奉婚聰躬巨與遷添裂副宿歲怪噁尕崙愣杆硅硫鈦鈾錳芑雜異鈉砷胂磺琥珀艙棍簧胡茬盜浩盆販郎腿亍洪亐互欠助勉惠操斥諉繫戶譯亓墓碑刑鈴卅渠繽紛斗米旗憲釩燈徽瘟祖拳福穀豐臟腑綁肉醃苓蘊橋鋪霸顏鬧判噴岡底蛙陘礦亖亙亜罕們娜桑那努哈喀弗烈曼松森杜氏盃奧琛敦戊穆聖裔彙薛孫亟亡佚虜羊牢奮釋卷卸契媾感額睫纏誼趾塞擠紐阻還配馳莊亨洛祚亪享津滬畿郊慈菴枇杷膏亭閣鋥麗亳亶亹誅初責翻瘋偶傑叢稠妖拖寰居吸授慧蝸吞壯魅狗矛盾益渣患憂稀描猿夢暫涯畜禍緣沸搜引擎臣橫紜誰混援蒸獸獅稅剖亻亼亽亾什獻剎邡麽仂仃仄仆富怨仈仉畢昔晨殼紹仍仏仒仕宦仗欺恃腰嘆歎炬梓訖施仙后瓊逝仚仝仞仟悔仡佬償填泊拓撲簇羔購頓欽佩髮棻閫馭養億儆尤藉幀賑凌敘帖李柔剛沃眥睚戒訛取饗讀仨仫仮著泳臥躺韶夏裁仳仵唯賢憑釣誕仿似宋彿諷伀碩盼鵝伄儅伈伉儷柯始娃邁戈坦堡帕茨薩廟瑪莉莎藤霍姆伋伍奢胥廷芳豪伎倆侍汛勒希羲雛伐憩整謨閑閒伕伙伴頤伜伝伢叔恆茲恩翰伱伲侶伶俜悧鼬伸懶縮喇叭伹伺伻伽倻輻伾佀佃佇佈喬妮墨佉盧佌貸劣廉昂檔濃矮傘窪緩耗胸谷迷擋率齲宅沫舍療佐貳佑佔優據鏵嘗呢須魯曉佗佘余坪寺瓜銃僧蒙芒陀龕哼嘔坊姦孽弊揖祟繭縛誓賊佝僂瞀佟你奪趕佡佢佣佤佧賈佪佫佯佰佱潔績釀餚佴捲佶佷佸佹佺佻佼佽佾具喚窘壞娛怒慨硬習慣聾膨脹蔓駭貴痺侀侁侂侃侄侅鴻燕侇侈糜靡侉侌妾侏儒倉鼠侐侑侔侖侘侚鏈侜偎傍鈷循柳葫蘆附価侮罵蔑侯岩截蝕侷貼壺嬛宴捷攜桶箋酌俁狹膝狄俅俉俊俏俎俑俓俔諺俚俛黎健呈固墒增守康箱濕祐鏢鑣槓盒靖膜齡俞豹獵噪孚封札筒託衍鴿剪撰稿煉廠禊練繕葺俯瞰撐衝俲俳俴俵俶俷俺俻俾倀倂倅儲卒惶敷猝逃頡蓄崇隱倌倏忽刺蠟燭噍嚼坍扁抽斃蔥楣灌灶糞背藪賣賠閉霉騰倓倔倖倘倜儻倝借箸挹澆閱倡狂倢倣値倥傯倨傲倩匡嗣沖柝珍倬倭寇猩倮倶倷倹勤讚偁偃充偽吏嗓寐惺扮拱芫茜藉虢鈔偈偉晶偌宕距析濾殿疼癱註頗偓偕鴨歇滯偝偟偢忘怡旺偨偩偪偫偭偯偰偱偲偵緝蹄偷減惰漏窺竊偸偺迹傀儡傅傈僳傌籬傎奎琳迪叟芭傒傔傕傖悉荒傜傞傢傣芽逼傭婢傮睨寄檄誦謠頌傴擔辜弓慘蒿悼疤傺傻屄臆巢洩篋羨蓋軋頹傿儸僄僇僉僊働僎僑僔僖僚僝僞僣僤僥僦猴僨僩僬僭僮僯僰僱僵殖籤靜僾僿征隴儁儂儃儇儈朴薄儊儋儌儍儐儓儔儕儗儘儜儞儤儦儩汰哉寡渥裕酷儭儱罐儳儵儹儺儼儽兀臬臲鷲允勛勳宙宵帥憝彞諧嫂鬩暢沛溢盈飢赫兇悍狠猛頑愚妣斬秦遣鞭耀敏榮槃澤爆碟磁禿纜輝霽鹵朵婁孜烽醬勃汀箕裘鉗耶懞蕾徹兌軟遭黜兎児韻媳爸兕觥兗兙兛兜售鍪肚兝兞兟兡兢兣樽殮涅睡稟籍贅泌啡肽奸幕涵澇熵疚眷稃襯訌赴煥椒殲植跏沒試誤猜棲窗肋袖頰兪卦撇鬍岐廓轎疸楓茴瓏廁秩募勺噸寓斤曆畝迫筷釐最淫螺韜兮寬匪篩襄贏軛複兲詐刃堰戎痞蟻餉它冀鑄冂冃円冇冉冊嫁厲礪竭醮冏牧冑冓冔冕冖冗冘冞冢窄抑誣冥冫烘菇蟄冷凝坨橇淇淋炭餅磚磧窖醋雕雹霜冱冶爐艷嘲峻灘淡漠煖颼飲冼冽凃凄愴梗凅凇凈凊凋敝濛凔凜遵汞脢凞几凢処凰凱凵凶焰凸摺刷紋預喪嘍奔巡榜殯芙蓉租籠輯鞘萃凼鋸鑊刁蠻刂娩崩批拆攤掰櫱驟歧顆秒袂贓勿囑忌磋琢膚刈羽刎訟戮舂槳艇刓刖霹靂刜創犢刡恙墅幟筵緻刦刧刨昏默攸尿慾薰潤薰圭刪刮痧鏟刱刲刳刴刵踏磅戳柏槐繡芹莧蝟舟銘鵠鶩刼剁剃辮剄剉履鉛剋剌姻咽哨廊掠桅沿召瞻翅趙卜渺茫郭剒剔剕瀝剚愎毅訥纔剜剝啄採剞剟剡剣剤綵剮腎駛黏剰袍剴紊剷剸剺剽剿劁劂劄劈啪柴扳啦劉奭姥夼昫涓熙禪禹錫翔雁鶚劊劌弩柄蜻蛉劒劓劖劘劙瀾簣賞磯釜晉甜薪逐劦熔紂虐赤囚劬劭労劵効劻劼劾峭艮勅勇勵勍勐臘脖龐漫飼盪粥輒勖勗勘驕餒碌泮雇捐竹騎殊阱勣樸懇謹勦勧勩勯勰勱勲勷勸懲慰誡諫勹芡踐闌匁庇拯粟紮袱裹餃匆遽匈匉匊匋匍匐莖匏匕妝痰膿蛹齋苑烤蹈塘羌熊閥螳螂疆碚竿緯荷茵邙魏匚匜匝匟扶稷匣匭攏匸匹耦匽匾匿卂叮瘡禧軫堤棚迢鈞鍊卄卆遐卉瓷盲瓶噹胱腱裸卋卌卍卐怯污賤鄙齷齪陋卓溪唐梯漁陳棗泥漳潯澗梨芬譙贍轅迦鄭単驢弈洽鰲卛占筮卝卞卟吩啉屎翠厄卣卨卪卬卮榫襖璽綬鈕蚤懼殆篤聳卲帘帙繞卹卼卽厂厎厓厔厖厗奚厘厙厜厝諒厠厤厥厪膩孢厮厰厳厴厹厺粕垢蕪菁厼厾叁悟茸薯叄吵笄悌哺譏坫壟弧芯杠潛嬰芻袁詰貪諜煽饋駁収岳締災賄騙叚叡吻攔蘑蜜訣燧玩硯箏椎藺銅逗驪另覓叨嘮謁杵姓喊嚷囂咚嚀塑尋惱憎擦祇泣滲蝠叱吒咄咤喝籀黛舵舷叵叶鐸懿昭穰苴遼叻叼吁塹嫖賭瞧爬衆抒吅吆夥巹橡滌抱縱摩郡唁墜扇籃膀襪頸吋愾諮酬哭妓媛暗錶韁邇妃羿絮蕃渾拐葵暮隅吔吖啶嗪戚吜嗇噬嚥吟哦詠吠吧唧嗒咐吪雋咀徵燐苞茹鈣哧吮吰吱嘎吲哚吳棟嬌窟孟簫忠晗淞闔閭趼宇吶睛噓拂捧疵熄竽笛糠吼吽呀呂韋矇呃呆笨呇貢呉罄呋喃呎呏呔呠呡癡呣呤呦呧瑛眩扒晬淑姬瑜璇鵑呪呫嗶嚅囁呬呯呰呱呲咧噌鈍呴呶呷呸呺呻哱咻嘯嚕籲坎坷邏呿咁咂咆哮咇咈咋蟹煦珅藹咍咑咒詛咔噠嚓咾噥哩喱咗咠咡咢咣咥咦咨嗟詢咩咪咫嚙齧咭咮咱咲咳嗆嗽咴咷咸咹咺咼喉咿婉慟憫賦矜綠茗藍哂搶瞞哆嗦囉噻啾濱彗哋哌哎唷喲哏哐哞哢哤哪裏哫啼喘哰哲萎蚌哳哶哽哿唄唅唆唈唉唎唏嘩堯棣殤璜睿肅唔睇唕唚唞唣喳唪唬唰喏唲唳唵嘛唶唸唹唻唼唾唿啁啃鸚鵡啅埠棧榷祺舖鞅飆啊啍啎啐啓啕啖啗啜啞祈啢啣啤啥啫啱啲啵啺饑啽噶崑沁喁喂喆裙喈嚨喋喌喎喑喒喓喔粗喙幛慶滋鵲喟喣喤喥喦喧騷喨喩梆喫葡萄喭駝挑嚇碰樅瓣純皰藻趟鉻喵営喹喺喼喿嗀嗃嗄嗅嗈嗉嗊嗍嗐嗑嗔詬嗕嗖嗙嗛嗜痂癖嗝嗡嗤嗥嗨嗩嗬嗯嗰嗲嗵嘰嗷嗹嗾嗿嘀嘁嘂嘅惋嘈峪禾蔭嘊嘌嘏嘐嘒嘓嘖嘚嘜嘞嘟囔嘣嘥嘦嘧嘬嘭這謔嚴敞饞鬆嘵嘶嘷嘸蝦嘹嘻嘽嘿噀噂噅噇噉噎噏噔噗噘噙噚噝噞噢噤蟬皿噩噫噭噯噱噲噳嚏涌灑欲巫霏噷噼嚃嚄嚆抖嚌嚐嚔囌嚚嚜嚞嚟嚦嚬嚭嚮嚯嚲嚳飭按竣苛嚵嚶囀囅囈膪謙囍囒囓囗囘蕭酚飄濺諦囝溯眸紇鑾鶻囟殉囡団囤囥囧囨囪囫圇囬囮囯囲図囶囷囸囹圄圉擬囻囿圀圂圃圊粹蠹赦圌墾圏滾鯡鑿枘圕圛圜圞坯埂壤骸炕祠窯豚紳魠鯪鱉圧握圩圪垯圬圮圯炸岬幔毯祇窨菩溉圳圴圻圾坂坆沾坋坌舛壈昆墊墩椅坒坓坩堝坭坰坱坳坴坵坻坼楊掙涎簾垃垈垌垍垓垔垕垗垚垛垝垣垞垟垤垧垮垵垺垾垿埀畔埄埆埇埈埌殃隍埏埒埕埗埜埡埤埦埧埭埯埰埲埳埴埵埶紼埸培怖樁礎輔埼埽堀訶姪廡堃堄摧磐貞韌砌堈堉堊堋堌堍堎堖堙堞堠礁堧堨輿堭堮蜓摘堲堳堽堿塁塄塈煤塋棵塍塏塒塓綢塕鴉沽虱塙塚塝繆塡塢塤塥塩塬塱塲蟎塼塽塾塿墀墁墈墉墐夯増毀墝墠墦漬缽墫墬墮墰墺墻櫥壅壆壊壌壎壒榨蒜壔壕壖壙壚壜壝壠壡壬壭壱売壴壹壻壼寢壿夂夅夆変夊夌漱邑夓腕泄甥禦骼夗夘夙袞瑙妊娠醣梟珊鶯鷺戧幻魘夤蹀祕擂鶇姚宛閨嶼庾撻拇賛蛤裨菠氅漓撈湄蚊霆鯊箐篆篷荊肆舅荔鮃巷慚骰辟邱鎔鐮阪漂燴鯢鰈鱷鴇臚鵬妒峨譚枰晏璣癸祝秤竺牡籟恢罡螻蠍賜絨御梭夬夭砣榆怙枕夶夾餡奄崛葩譎奈賀祀贈奌奐奓奕訢詝奘奜奠奡奣陶奨奩魁奫奬奰媧孩貶隸酥宄狡猾她奼嫣妁氈荼皋膻蠅嬪妄妍嫉媚嬈妗趣妚妞妤礙妬婭妯娌妲妳妵妺姁姅姉姍姒姘姙姜姝姞姣姤姧姫姮娥姱姸姺姽婀娀誘懾脅娉婷娑娓娟娣娭娯娵娶娸娼婊婐婕婞婤婥谿孺婧婪婬婹婺婼婽媁媄媊媕媞媟媠媢媬媮媯媲媵媸媺媻媼眯媿嫄嫈嫋嫏嫕嫗嫘嫚嫜嫠嫡嫦嫩嫪毐嫫嫬嫰嫵嫺嫻嫽嫿嬀嬃嬅嬉耍嬋痴豔嬔嬖嬗嬙嬝嬡嬢嬤嬦嬬嬭幼嬲嬴嬸嬹嬾嬿孀孃孅孌孏曰癲屏孑孓雀孖斟簍謎摺孛矻鳩崮軻祜鸞孥邈毓棠臏孬孭孰孱孳孵泛罔銜孻孿宀宁宂拙株薇掣撫琪瓿榴謐彌宊濂祁瑕宍宏碁宓邸讞実潢町宥宧宨宬徵崎駿掖闕臊煮禽蠶宸豫寀寁寥寃簷庶寎暄磣寔寖寘寙寛寠苫寤肘洱濫蒗陝覈寪弘綽螽寳擅疙瘩晷対檐専尃尅贖絀繚疇釁尌峙醌襟痲碧屁昊槌淘恵瀑牝畑莓缸羚覷蔻髒躁尒尓銳尗尙尜尟尢尥尨尪尬尭尰擒尲尶尷尸尹潽蠖蛾尻釦梢蚴鰭脬蹲屇屌蚵屐屓挪屖屘屙屛屝屢屣巒嶂巖舄屧屨屩屪屭屮戍駐鉀崖嵛巔旮旯楂欖櫸芋茱萸靛麓屴屹屺屼岀岊岌岍阜岑彭鞏岒岝岢嵐岣岧岨岫岱岵岷峁峇峋峒峓峞峠嵋峩峯峱峴峹峿崀崁崆禎崋崌崍嶇崐崒崔嵬巍螢顥崚崞崟崠崢巆崤崦崧殂崬崱崳崴崶崿嵂嵇嵊泗嵌嵎嵒嵓嵗嵙嵞嵡嵩嵫嵯嵴嵼嵾嶁嶃嶄晴嶋嶌嶒嶓嶔嶗嶙嶝嶞嶠嶡嶢嶧嶨嶭嶮嶰嶲嶴嶸巂巃巇巉巋巌巓巘巛滇芎巟巠弋迴巣巤炊擘蜥蟒蠱覡巰蜀彥淖杏茂甫楞巻巽幗巿帛斐鯽蕊帑帔帗帚琉汶帟帡帣帨帬帯帰帷帹暆幃幄幇幋幌幏幘幙幚幞幠幡幢幦幨幩幪幬幭幯幰遙蹉跎餘庚鑑幵幷稚邃庀庁広庄庈庉笠庋跋庖犧庠庤庥鯨庬庱庳庴庵馨衢庹庿廃廄廆廋廌廎廏廐廑廒廕廖廛廝搏鑼廞弛袤廥廧廨廩廱綿踵髓廸廹甌鄴廻廼廾廿躔弁皺弇弌弍弎弐弒弔詭憾薦弝弢弣弤弨弭弮弰弳霖繇燾斌旭溥騫弶弸弼弾彀彄彆纍糾彊彔彖彘彟彠陌彤貽彧繪虹彪炳彫蔚鷗彰癉彲彳彴彷彷徉徨彸彽踩斂旆徂徇徊渭畬鉉裼従筌徘徙徜徠膳甦萌漸徬徭醺徯徳徴潘徻徼忀瘁胖燎怦悸顫扉犀澎湃砰恍惚絞隘忉憚挨餓忐忑忒忖応忝忞耿忡忪忭忮忱忸怩忻悠懣怏遏怔怗怚怛怞懟黍訝怫怭懦怱怲怳怵惕怸怹恁恂恇恉恌恏恒恓恔恘恚恛恝恞恟恠恣恧眄恪恫恬澹恰恿悀悁悃悄悆悊悐悒晦悚悛悜悝悤您悩悪悮悰悱悽惻悳悴悵惘悶悻悾惄愫鍾蒐惆惇惌惎惏惓惔惙惛耄惝瘧濁惥惦惪惲惴惷惸拈愀愃愆愈愊愍愐愑愒愓愔愕愙氓蠢騃昵愜赧愨愬愮愯愷愼慁慂慅慆慇靄慉慊慍慝慥慪慫慬慱慳慴慵慷慼焚憀灼鬱憃憊憋憍眺捏軾憒憔憖憙憧憬憨憪憭憮憯憷憸憹憺懃懅懆邀懊懋懌懍懐懞懠懤懥懨懫懮懰懱毖懵遁樑雍懺懽戁戄戇戉戔戕戛戝戞戠戡戢戣戤戥戦戩戭戯轟戱披菊牖戸戹戺戻戼戽鍬扂楔扃扆扈扊杖牽絹銬鐲賚扐摟攪烊盹瞌跟躉鑔靶鼾払扗玫腮扛扞扠扡扢盔押扤扦扱罾揄綏鞍郤窾扻扼扽抃抆抈抉抌抏瞎抔繯縊擻抜抝択抨摔歉躥牾抶抻搐泵菸拃拄拊髀拋拌脯拎拏拑擢秧沓曳攣迂拚拝拠拡拫拭拮踢拴拶拷攢拽掇芥橐簪摹疔挈瓢驥捺蹻挌挍挎挐揀挓挖掘浚挙揍聵挲挶挾挿捂捃捄捅捆捉捋胳膊揎捌捍捎軀蛛捗捘捙捜捥捩捫捭据捱捻捼捽掀掂掄臀膘掊掎掏掐笙掔掗掞棉芍掤搪闡掫掮掯揉掱掲掽掾揃揅揆搓揌諢揕揗揘揜揝揞揠揥揩揪揫櫫遒麈揰揲揵揶揸揹揺搆搉搊搋搌搎搔搕撼櫓搗搘搠搡搢搣搤搥搦搧搨搬楦褳訕赸搯搰搲搳搴搵搷搽搾搿摀摁摂摃摎摑摒摓跤摙摛摜摞摠摦睺羯摭摮摯摰摲摳摴摶摷摻摽撂撃撅稻撊撋撏鐧潑撕撙撚撝撟撢撣撦撧撩撬撱朔撳蚍蜉撾撿擀擄闖擉缶觚擐擕擖擗擡擣擤澡腚擧擨擩擫擭擯擰擷擸擼擽擿攃攄攆攉攥攐攓攖攙攛每攩攫轡澄攮攰攲攴軼攷砭訐攽碘敁敃敇敉敍敎筏敔敕敖閏誨敜煌敧敪敱敹敺敻敿斁衽斄牒縐謅斉斎斕鶉讕駮鱧斒筲斛斝斞斠斡斢斨斫斮晾沂潟穎絳邵斲斸釳於琅斾斿旀旂旃旄渦旌旎旐旒旓旖旛旝旟旡旣浴旰獺魃旴旹旻旼旽昀昃昄昇昉晰躲澈熹皎皓礬昑昕昜昝昞昡昤暉筍昦昨昰昱昳昴昶昺昻晁蹇隧蔬髦晄晅晒晛晜晞晟晡晢晤晥曦晩萘瑩顗晿暁暋暌暍暐暔暕煅暘暝暠暡曚暦暨暪朦朧暱暲殄馮暵暸暹暻暾曀曄曇曈曌曏曐曖曘曙曛曡曨曩駱曱甴肱曷牘禺錕曽滄耽朁朅朆杪栓誇竟粘絛朊膺朏朐朓朕朘朙瞄覲溘饔飧朠朢朣柵椆澱蝨朩朮朰朱炆璋鈺熾鹮朳槿朶朾朿杅杇杌隉欣釗湛漼楷瀍煜玟纓翱肈舜贄适逵杓杕杗杙荀蘅杝杞脩珓筊杰榔狍閦顰緬莞杲杳眇杴杶杸杻杼枋枌枒枓衾葄翹紓逋枙狸椏枟槁枲枳枴枵枷枸櫞枹枻柁柂柃柅柈柊柎某柑橘柒柘柙柚柜柞櫟柟柢柣柤柩柬柮柰柲橙柶柷柸柺査柿栃栄栒栔栘栝栟栢栩栫栭栱栲栳栴檀栵栻桀驁桁鎂桄桉桋桎梏椹葚桓桔桕桜桟桫欏桭桮桯桲桴桷桹湘溟梃梊梍梐潼梔梘梜梠梡梣梧梩梱梲梳梴梵梹棁棃櫻棐棑棕櫚簑繃蓑棖棘棜棨棩棪棫棬棯棰棱棳棸棹槨棼椀椄苕椈椊椋椌椐椑椓椗検椤椪椰椳椴椵椷椸椽椿楀楄楅篪楋楍楎楗楘楙楛楝楟楠楢楥楨楩楪楫楬楮楯楰楳楸楹楻楽榀榃榊榎槺榕榖榘榛狉莽榜笞榠榡榤榥榦榧榪榭榰榱槤霰榼榾榿槊閂槎槑槔槖様槜槢槥槧槪槭槮槱槲槻槼槾樆樊樏樑樕樗樘樛樟樠樧樨権樲樴樵猢猻樺樻罍樾樿橁橄橆橈笥龠橕橚橛輛橢橤橧豎膈跨橾橿檁檃檇檉檍檎檑檖檗檜檟檠檣檨檫檬檮檳檴檵檸櫂櫆櫌櫛櫜櫝櫡櫧櫨櫪櫬櫳櫹櫺茄櫽欀欂欃欐欑欒欙欞溴欨欬欱欵欶欷歔欸欹欻欼欿歁歃歆艎歈歊蒔蝶歓歕歘歙歛歜歟歠蹦詮鑲蹣跚陞陟歩歮歯歰歳歴璞歺瞑歾歿殀殈殍殑殗殜殙殛殞殢殣殥殪殫殭殰殳荃殷殸殹蛟殻殽謗毆毈毉餵毎毑蕈毗毘毚茛鄧毧毬毳毷毹毽毾毿氂氄氆靴氉氊氌氍氐聊氕氖気氘氙氚氛氜氝氡洶焊痙氤氳氥氦鋁鋅氪烴氬銨痤汪滸漉痘盂碾菖蒲蕹蛭螅氵氷氹氺氽燙氾氿渚汆汊汋汍汎汏汐汔汕褟汙汚汜蘺沼穢衊汧汨汩汭汲汳汴隄汾沄沅沆瀣沇沈葆浸淪湎溺痼痾沌沍沏沐沔沕沘浜畹礫沚沢沬沭沮沰沱灢沴沷籽沺烹濡洄泂肛泅泆湧肓泐泑泒泓泔泖泙泚泜泝泠漩饃濤粼濘蘚鰍泩泫泭泯銖泱泲洇洊涇琵琶荽薊箔洌洎洏洑潄濯洙洚洟洢洣洧洨洩痢滔洫洮洳洴洵洸洹洺洼洿淌蜚浄浉浙贛渫浠浡浤浥淼瀚浬浭翩萍浯浰蜃淀苔蛞蝓蜇螵蛸煲鯉浹浼浽溦涂涊涐涑涒涔滂涖涘涙涪涫涬涮涴涶涷涿淄淅淆淊淒黯淓淙漣淜淝淟淠淢淤淥淦淩猥藿褻淬淮淯淰淳詣淶紡淸淹燉癯綺渇済渉渋渓渕渙渟渢滓渤澥渧渨渮渰渲渶渼湅湉湋湍湑湓湔黔湜湝湞湟湢湣湩湫湮麟湱湲湴湼満溈溍溎溏溛舐漭溠溤溧馴溮溱溲溳溵溷溻溼溽溾滁滃滉滊滎滏稽滕滘滙滝滫滮羼耷滷滹滻煎漈漊漎繹漕漖漘漙漚漜漪漾漥漦漯漰漵漶漷濞潀潁潎潏潕潗潚潝潞潠潦祉瘍潲潵潷潸潺潾潿澁澂澃澉澌澍澐澒澔澙澠澣澦澧澨澫澬澮澰澴澶澼熏郁濆濇濈濉濊貊濔疣濜濠濩觴濬濮盥濰濲濼瀁瀅瀆瀋瀌瀏瀒瀔瀕瀘瀛瀟瀠瀡瀦瀧瀨瀬瀰瀲瀳瀵瀹瀺瀼灃灄灉灋灒灕灖灝灞灠灤灥灨灩灪蜴灮燼獴灴灸灺炁炅魷炗炘炙炤炫疽烙釺炯炰炱炲炴炷燬炻烀烋瘴鯧烓烔焙烜烝烳飪烺焃焄耆焌焐焓焗焜焞焠焢焮焯焱焼煁煃煆煇煊熠煍熬煐煒煕煗燻礆霾煚煝煟煠煢矸煨瑣煬萁煳煺煻熀熅熇熉羆熒穹熗熘熛熜稔諳爍熤熨熯熰眶螞熲熳熸熿燀燁燂燄盞燊燋燏燔隼燖燜燠燡燦燨燮燹燻燽燿爇爊爓爚爝爟爨蟾爯爰爲爻爿爿牀牁牂牄牋牎牏牓牕釉牚腩蒡虻牠雖蠣牣牤牮牯牲牳牴牷牸牼絆牿靬犂犄犆犇犉犍犎犒犖犗犛犟犠犨犩犪犮犰狳犴犵犺狁甩狃狆狎狒獾狘狙黠狨狩狫狴狷狺狻豕狽蜘猁猇猈猊猋猓猖獗猗猘猙獰獁猞猟獕猭猱猲猳猷猸猹猺玃獀獃獉獍獏獐獒獘獙獚獜獝獞獠獢獣獧鼇蹊獪獫獬豸獮獯鬻獳獷獼玀玁菟玅玆玈珉糝禛郅玍玎玓瓅玔玕玖玗玘玞玠玡玢玤玥玦玨瑰玭玳瑁玶玷玹玼珂珇珈瑚珌饈饌珔珖珙珛珞珡珣珥珧珩珪珮珶珷珺珽琀琁隕琊琇琖琚琠琤琦琨琫琬琭琮琯琰琱琲瑯琹琺琿瑀瑂瑄瑉瑋瑑瑔瑗瑢瑭瑱瑲瑳瑽瑾瑿璀璨璁璅璆璈璉璊璐璘璚璝璟璠璡璥璦璩璪璫璯璲璵璸璺璿瓀瓔瓖瓘瓚瓛臍瓞瓠瓤瓧瓩瓮瓰瓱瓴瓸瓻瓼甀甁甃甄甇甋甍甎甏甑甒甓甔甕甖甗飴蔗甙詫鉅粱盎銹糰甡褥産甪甬甭甮甯鎧甹甽甾甿畀畁畇畈畊畋畎畓畚畛畟鄂畤畦畧荻畯畳畵畷畸畽畾疃疉疋疍疎簞疐疒疕疘疝疢疥疧疳疶疿痁痄痊痌痍痏痐痒痔痗瘢痚痠痡痣痦痩痭痯痱痳痵痻痿瘀瘂瘃瘈瘉瘊瘌瘏瘐瘓瘕瘖瘙瘚瘛瘲瘜瘝瘞瘠瘥瘨瘭瘮瘯瘰癧瘳癘瘵瘸瘺瘻瘼癃癆癇癈癎癐癔癙癜癠癤癥癩蟆癪癭癰発踔紺蔫酵皙砬砒翎翳蘞鎢鑞皚鵯駒鱀粵褶皀皁莢皃鎛皈皌皐皒硃皕皖皘皜皝皞皤皦皨皪皫皭糙綻皴皸皻皽盅盋盌盍盚盝踞盦盩鞦韆盬盭眦睜瞤盯盱眙裰盵盻睞眂眅眈眊県眑眕眚眛眞眢眣眭眳眴眵眹瞓眽郛睃睅睆睊睍睎睏睒睖睙睟睠睢睥睪睪睯睽睾瞇瞈瞋瞍逛瞏瞕瞖瞘瞜瞟瞠瞢瞫瞭瞳瞵瞷瞹瞽闍瞿矓矉矍鑠矔矗矙矚矞矟矠矣矧矬矯矰矱硪碇磙罅舫阡、矼矽礓砃砅砆砉砍砑砕砝砟砠砢砦砧砩砫砮砳艏砵砹砼硇硌硍硎硏硐硒硜硤硨磲茚鋇硭硻硾碃碉碏碣碓碔碞碡碪碫碬碭碯碲碸碻礡磈磉磎磑磔磕磖磛磟磠磡磤磥蹭磪磬磴磵磹磻磽礀礄礅礌礐礚礜礞礤礧礮礱礲礵礽礿祂祄祅祆禳祊祍祏祓祔祕祗祘祛祧祫祲祻祼餌臠錮禂禇禋禑禔禕隋禖禘禚禜禝禠禡禢禤禥禨禫禰禴禸稈秈秊闈颯秌秏秕笈蘵賃秠秣秪秫秬秭秷秸稊稌稍稑稗稙稛稞稬稭稲稹稼顙稾穂穄穇穈穉穋穌貯穏穜穟穠穡穣穤穧穨穭穮穵穸窿闃窀窂窅窆窈窕窊窋窌窒窓窔窞窣窬黷蹙窰窳窴窵窶窸窻竁竃竈竑竜竝竦竪篦篾笆鮫竾笉笊笎笏笐靨笓笤籙笪笫笭笮笰笱笲笳笵笸笻筀筅筇筈筎筑筘筠筤筥筦筧筩筭筯筰筱筳筴讌筸箂箇箊箎箑箒箘箙箛箜篌箝箠箬鏃箯箴箾篁篔簹篘篙篚篛篜篝篟篠篡篢篥篧篨篭篰篲篳篴篶篹篼簀簁簃簆簉簋簌簏簜簟簠簥簦簨簬簰簸簻籊籐籒籓籔籖籚籛籜籣籥籧籩籪籫籯芾麴籵籸籹籼粁粃粋粑粔糲粛粞粢粧粨粲粳粺粻粽闢粿糅糆糈糌糍糒糔萼糗蛆蹋糢糨糬糭糯糱糴糶糸糺紃蹼鰹黴紆紈絝紉閩襻紑紕紘錠鳶鷂紝紞紟紥紩紬紱紲紵紽紾紿絁絃絅経絍絎絏縭褵絓絖絘絜絢絣螯絪絫聒絰絵絶絺絻絿綀綃綅綆綈綉綌綍綎綑綖綘継続緞綣綦綪綫綮綯綰罟蝽綷縩綹綾緁緄緅緆緇緋緌緎総緑緔緖緗緘緙緜緡緤緥緦纂緪緰緱緲緶緹縁縃縄縈縉縋縏縑縕縗縚縝縞縟縠縡縢縦縧縯縰騁縲縳縴縵縶縹縻衙縿繄繅繈繊繋繐繒繖繘繙繠繢繣繨繮繰繸繻繾纁纆纇纈纉纊纑纕纘纙纚纛缾罃罆罈罋罌罎罏罖罘罛罝罠罣罥罦罨罫罭鍰罳罶罹罻罽罿羂羃羇羋蕉51鴕羑羖羗羜羝羢羣羥羧羭羮羰羱羵羶羸藜鮐翀翃翄翊翌翏翕翛翟翡翣翥翦躚翪翫翬翮翯翺翽翾翿闆饕鴰鍁耋耇耎耏耑耒耜耔耞耡耤耨耩耪耬耰鬢耵聹聃聆聎聝聡聦聱聴聶聼閾聿肄肏肐肕腋肙肜肟肧胛肫肬肭肰肴肵肸肼胊胍胏胑胔胗胙胝胠銓胤胦胩胬胭胯胰胲胴胹胻胼胾脇脘脝脞脡脣脤脥脧脰脲脳腆腊腌臢腍腒腓腖腜腠腡腥腧腬腯踝蹬鐐腴腶蠕誹膂膃膆膇膋膔膕膗膙膟黐膣膦膫膰膴膵膷膾臃臄臇臈臌臐臑臓臕臖臙臛臝臞臧蓐詡臽臾臿舀舁鰟鮍舋舎舔舗舘舝舠舡舢舨舭舲舳舴舸舺艁艄艅艉艋艑艕艖艗艘艚艜艟艣艤艨艩艫艬艭荏艴艶艸艹艻艿芃芄芊萰陂藭芏芔芘芚蕙芟芣芤茉芧芨芩芪芮芰鰱芴芷芸蕘豢芼芿苄苒苘苙苜蓿苠苡苣蕒苤苧苪鎊苶苹苺苻苾茀茁范蠡萣茆茇茈茌茍茖茞茠茢茥茦菰茭茯茳藨茷藘茼荁荄荅荇荈菅蜢鴞荍荑荘荳荵荸薺莆莒莔莕莘莙莚莛莜莝莦莨菪莩莪莭莰莿菀菆菉菎菏菐菑菓菔菕菘菝菡菢菣菥蓂菧菫轂鎣菶菷菹醢菺菻菼菾萅萆萇萋萏萐萑萜萩萱萴萵萹萻葇葍葎葑葒葖葙葠葥葦葧葭葯葳葴葶葸葹葽蒄蒎蒓蘢薹蒞蒟蒻蒢蒦蒨蒭藁蒯蒱鉾蒴蒹蒺蒽蓀蓁蓆蓇蓊蓌蓍蓏蓓蓖蓧蓪蓫蓽跣藕蓯蓰蓱蓴蓷蓺蓼蔀蔂蔃蔆蔇蔉蔊蔋蔌蔎蔕蔘蔙蔞蔟鍔蔣雯蔦蔯蔳蔴蔵蔸蔾蕁蕆蕋蕍蕎蕐蕑蕓蕕蕖蕗蕝蕞蕠蕡蕢蕣蕤蕨蕳蕷蕸蕺蕻薀薁薃薅薆薈薉薌薏薐薔薖薘薙諤釵薜薠薢薤薧薨薫薬薳薶薷薸薽薾薿藄藇藋藎藐藙藚藟藦藳藴藶藷藾蘀蘁蘄蘋蘗蘘蘝蘤蘧蘩蘸蘼虀虆虍蟠虒虓虖虡虣虥虩虯虰蛵虵虷鱒虺虼蚆蚈蚋蚓蚔蚖蚘蚜蚡蚣蚧蚨蚩蚪蚯蚰蜒蚱蚳蚶蚹蚺蚻蚿蛀蛁蛄蛅蝮蛌蛍蛐蟮蛑蛓蛔蛘蛚蛜蛡蛣蜊蛩蛺蛻螫蜅蜆蜈蝣蜋蜍蜎蜑蠊蜛餞蜞蜣蜨蜩蜮蜱蜷蜺蜾蜿蝀蝃蝋蝌蝍蝎蝏蝗蝘蝙蝝鱝蝡蝤蝥蝯蝰蝱蝲蝴蝻螃蠏螄螉螋螒螓螗螘螙螚蟥螟螣螥螬螭螮螾螿蟀蟅蟈蟊蟋蟑蟓蟛蟜蟟蟢蟣蟨蟪蟭蟯蟳蟶蟷蟺蟿蠁蠂蠃蠆蠋蠐蠓蠔蠗蠙蠚蠛蠜蠧蠨蠩蠭蠮蠰蠲蠵蠸蠼蠽衁衂衄衇衈衉衋衎衒衕衖衚衞裳鈎衭衲衵衹衺衿袈裟袗袚袟袢袪袮袲袴袷袺袼褙袽裀裉裊裋裌裍裎裒裛裯裱裲裴裾褀褂褉褊褌褎褐褒褓褔褕褘褚褡褢褦褧褪褫褭褯褰褱襠褸褽褾襁襃襆襇襉襋襌襏襚襛襜襝襞襡襢襤襦襫襬襭襮襴襶襼襽襾覂覃覅覇覉覊覌覗覘覚覜覥覦覧覩覬覯覰観覿觔觕觖觜觽觝觡酲觩觫觭觱觳觶觷觼觾觿言賅訃訇訏訑訒詁託訧訬訳訹証訾詀詅詆譭詈詊詎詑詒詖詗詘詧詨詵詶詸詹詻詼詿誂誃誄鋤誆誋誑誒誖誙誚誥誧説読誯誶誾諂諄諆諌諍諏諑諕諗諛諝諞諟諠諡諴諵諶諼謄謆謇謌謍謏謑謖謚謡謦謪謫謳謷謼謾譁譅譆譈譊譌譒譔譖鑫譞譟譩譫譬譱譲譴譸譹譾讅讆讋讌讎讐讒讖讙讜讟谽豁豉豇豈豊豋豌豏豔豞豖豗豜豝豣豦豨豭豱豳豵豶豷豺豻貅貆貍貎貔貘貙貜貤饜貰餸貺賁賂賏賒賕賙賝賡賧賨賫鬭賮賵賸賺賻賾贇贉贐贔贕贗赬赭赱赳迄趁趂趄趐趑趒趔趡趦趫趮趯趲趴趵趷趹趺趿跁跂跅跆躓蹌跐跕跖跗跙跛跦跧跩跫跬跮跱跲跴跺跼跽踅踆踈踉踊踒踖踘踜踟躇躕踠踡踣踤踥踦踧蹺踫踮踰踱踴踶踹踺踼踽躞蹁蹂躪蹎蹐蹓蹔蹕蹚蹜蹝蹟蹠蹡蹢躂蹧蹩蹪蹯鞠蹽躃躄躅躊躋躐躑躒躘躙躛躝躠躡躦躧躩躭躰躳躶軃軆輥軏軔軘軜軝齶転軥軨軭軱軲轆軷軹軺軽軿輀輂輦輅輇輈輓輗輙輜輞輠輤輬輭輮輳輴輵輶輹輼輾轀轇轏轑轒轔轕轖轗轘轙轝轞轢轤辠辢辤辵辶辺込辿迅迋迍麿迓迣迤邐迥迨迮迸迺迻迿逄逅逌逍逑逓逕逖逡逭逯逴逶逹遄遅遉遘遛遝遢遨遫遯遰遴遶遹遻邂邅邉邋邎邕邗邘邛邠邢邧邨邯鄲邰邲邳邴邶邷邽邾邿郃郄郇郈郔郕郗郙郚郜郝郞郟郠郢郪郫郯郰郲郳郴郷郹郾郿鄀鄄鄆鄇鄈鄋鄍鄎鄏鄐鄑鄒鄔鄕鄖鄗鄘鄚鄜鄞鄠鄢鄣鄤鄦鄩鄫鄬鄮鄯鄱鄶鄷鄹鄺鄻鄾鄿酃酅酆酇酈酊酋酎酏酐酣酔酕醄酖酗酞酡酢酤酩酴酹酺醁醅醆醊醍醐醑醓醖醝醞醡醤醨醪醭醯醰醱醲醴醵醸醹醼醽醾釂釃釅釆釈鱸鎦閶釓釔釕鈀釙鼢鼴釤釧釪釬釭釱釷釸釹鈁鈃鈄鈆鈇鈈鈊鈌鈐鈑鈒鈤鈥鈧鈬鈮鈰鈳鐺鈸鈹鈽鈿鉄鉆鉈鉋鉌鉍鉏鉑鉕鉚鉢鉥鉦鉨鉬鉭鉱鉲鉶鉸鉺鉼鉿銍銎銑銕鏤銚銛銠銣銤銥銦銧銩銪銫銭銰銲銶銻銼銾鋂鋃鋆鋈鋊鋌鋍鋏鋐鋑鋕鋘鋙鋝鋟鋦鋨鋩鋭鋮鋯鋰鋱鋳鋹鋺鋻鏰鐱錀錁錆錇錈錍錏錒錔錙錚錛錞錟錡錤錩錬録錸錼鍀鍆鍇鍉鍍鍏鍐鍘鍚鍛鍠鍤鍥鍩鍫鍭鍱鍴鍶鍹鍺鍼鍾鎄鎇鎉鎋鎌鎍鎏鎒鎓鎗鎘鎚鎞鎡鎤鎩鎪鎭鎯鎰鎳鎴鎵鎸鎹鎿鏇鏊鏌鏐鏑鏖鏗鏘鏚鏜鏝鏞鏠鏦鏨鏷鏸鏹鏻鏽鏾鐃鐄鐇鐏鐒鐓鐔鐗馗鐙鐝鐠鐡鐦鐨鐩鐫鐬鐱鐳鐶鐻鐽鐿鑀鑅鑌鑐鑕鑚鑛鑢鑤鑥鑪鑭鑯鑱鑴鑵鑷钁钃镻閆閈閌閎閒閔閗閟閡関閤閤閧閬閲閹閺閻閼閽閿闇闉闋闐闑闒闓闘闚闞闟闠闤闥阞阢阤阨阬阯阹阼阽陁陑陔陛陜陡陥陬騭陴険陼陾隂隃隈隒隗隞隠隣隤隩隮隰顴隳隷隹雂雈雉雊雎雑雒雗雘雚雝雟雩雰雱驛霂霅霈霊霑霒霓霙霝霢霣霤霨霩霪霫霮靁靆靉靑靚靣靦靪靮靰靳靷靸靺靼靿鞀鞃鞄鞌鞗鞙鞚鞝鞞鞡鞣鞨鞫鞬鞮鞶鞹鞾韃韅韉馱韍韎韔韖韘韝韞韡韣韭韮韱韹韺頀颳頄頇頊頍頎頏頒頖頞頠頫頬顱頯頲頴頼顇顋顑顒顓顔顕顚顜顢顣顬顳颭颮颱颶颸颺颻颽颾颿飀飂飈飌飜飡飣飤飥飩飫飮飱飶餀餂餄餎餇餈餑餔餕餖餗餚餛餜餟餠餤餧餩餪餫餬餮餱餲餳餺餻餼餽餿饁饅饇饉饊饍饎饐饘饟饢馘馥馝馡馣騮騾馵馹駃駄駅駆駉駋駑駓駔駗駘駙駜駡駢駪駬駰駴駸駹駽駾騂騄騅騆騉騋騍騏驎騑騒験騕騖騠騢騣騤騧驤騵騶騸騺驀驂驃驄驆驈驊驌驍驎驏驒驔驖驙驦驩驫骺鯁骫骭骯骱骴骶骷髏骾髁髂髄髆髈髐髑髕髖髙髝髞髟髡髣髧髪髫髭髯髲髳髹髺髽髾鬁鬃鬅鬈鬋鬎鬏鬐鬑鬒鬖鬗鬘鬙鬠鬣鬪鬫鬬鬮鬯鬰鬲鬵鬷魆魈魊魋魍魎魑魖鰾魛魟魣魦魨魬魴魵魸鮀鮁鮆鮌鮎鮑鮒鮓鮚鮞鮟鱇鮠鮦鮨鮪鮭鮶鮸鮿鯀鯄鯆鯇鯈鯔鯕鯖鯗鯙鯠鯤鯥鯫鯰鯷鯸鯿鰂鰆鶼鰉鰋鰐鰒鰕鰛鰜鰣鰤鰥鰦鰨鰩鰮鰳鰶鰷鱺鰼鰽鱀鱄鱅鱆鱈鱎鱐鱓鱔鱖鱘鱟鱠鱣鱨鱭鱮鱲鱵鱻鲅鳦鳧鳯鳲鳷鳻鴂鴃鴄鴆鴈鴎鴒鴔鴗鴛鴦鴝鵒鴟鴠鴢鴣鴥鴯鶓鴳鴴鴷鴽鵀鵁鵂鵓鵖鵙鵜鶘鵞鵟鵩鵪鵫鵵鵷鵻鵾鶂鶊鶏鶒鶖鶗鶡鶤鶦鶬鶱鶲鶵鶸鶹鶺鶿鷀鷁鷃鷄鷇鷈鷉鷊鷏鷓鷕鷖鷙鷞鷟鷥鷦鷯鷩鷫鷭鷳鷴鷽鷾鷿鸂鸇鸊鸏鸑鸒鸓鸕鸛鸜鸝鹸鹹鹺麀麂麃麄麇麋麌麐麑麒麚麛麝麤麩麪麫麮麯麰麺麾黁黈黌黢黒黓黕黙黝黟黥黦黧黮黰黱黲黶黹黻黼黽黿鼂鼃鼅鼈鼉鼏鼐鼒鼕鼖鼙鼚鼛鼡鼩鼱鼪鼫鼯鼷鼽齁齆齇齈齉齌齎齏齔齕齗齙齚齜齞齟齬齠齢齣齧齩齮齯齰齱齵齾龎龑龒龔龖龘龝龡龢龤' + +assert len(simplified_charcters) == len(simplified_charcters) + +s2t_dict = {} +t2s_dict = {} +for i, item in enumerate(simplified_charcters): + s2t_dict[item] = traditional_characters[i] + t2s_dict[traditional_characters[i]] = item + + +def tranditional_to_simplified(text: str) -> str: + return "".join( + [t2s_dict[item] if item in t2s_dict else item for item in text]) + + +def simplified_to_traditional(text: str) -> str: + return "".join( + [s2t_dict[item] if item in s2t_dict else item for item in text]) + + +if __name__ == "__main__": + text = "一般是指存取一個應用程式啟動時始終顯示在網站或網頁瀏覽器中的一個或多個初始網頁等畫面存在的站點" + print(text) + text_simple = tranditional_to_simplified(text) + print(text_simple) + text_traditional = simplified_to_traditional(text_simple) + print(text_traditional) \ No newline at end of file diff --git a/modules/utils/zh_normalization/chronology.py b/modules/utils/zh_normalization/chronology.py new file mode 100644 index 0000000000000000000000000000000000000000..a2c703d83150aa7f43c9d32ae156bc698092fdf4 --- /dev/null +++ b/modules/utils/zh_normalization/chronology.py @@ -0,0 +1,134 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import re + +from .num import DIGITS +from .num import num2str +from .num import verbalize_cardinal +from .num import verbalize_digit + + +def _time_num2str(num_string: str) -> str: + """A special case for verbalizing number in time.""" + result = num2str(num_string.lstrip('0')) + if num_string.startswith('0'): + result = DIGITS['0'] + result + return result + + +# 时刻表达式 +RE_TIME = re.compile(r'([0-1]?[0-9]|2[0-3])' + r':([0-5][0-9])' + r'(:([0-5][0-9]))?') + +# 时间范围,如8:30-12:30 +RE_TIME_RANGE = re.compile(r'([0-1]?[0-9]|2[0-3])' + r':([0-5][0-9])' + r'(:([0-5][0-9]))?' + r'(~|-)' + r'([0-1]?[0-9]|2[0-3])' + r':([0-5][0-9])' + r'(:([0-5][0-9]))?') + + +def replace_time(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + + is_range = len(match.groups()) > 5 + + hour = match.group(1) + minute = match.group(2) + second = match.group(4) + + if is_range: + hour_2 = match.group(6) + minute_2 = match.group(7) + second_2 = match.group(9) + + result = f"{num2str(hour)}点" + if minute.lstrip('0'): + if int(minute) == 30: + result += "半" + else: + result += f"{_time_num2str(minute)}分" + if second and second.lstrip('0'): + result += f"{_time_num2str(second)}秒" + + if is_range: + result += "至" + result += f"{num2str(hour_2)}点" + if minute_2.lstrip('0'): + if int(minute) == 30: + result += "半" + else: + result += f"{_time_num2str(minute_2)}分" + if second_2 and second_2.lstrip('0'): + result += f"{_time_num2str(second_2)}秒" + + return result + + +RE_DATE = re.compile(r'(\d{4}|\d{2})年' + r'((0?[1-9]|1[0-2])月)?' + r'(((0?[1-9])|((1|2)[0-9])|30|31)([日号]))?') + + +def replace_date(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + year = match.group(1) + month = match.group(3) + day = match.group(5) + result = "" + if year: + result += f"{verbalize_digit(year)}年" + if month: + result += f"{verbalize_cardinal(month)}月" + if day: + result += f"{verbalize_cardinal(day)}{match.group(9)}" + return result + + +# 用 / 或者 - 分隔的 YY/MM/DD 或者 YY-MM-DD 日期 +RE_DATE2 = re.compile( + r'(\d{4})([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])') + + +def replace_date2(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + year = match.group(1) + month = match.group(3) + day = match.group(4) + result = "" + if year: + result += f"{verbalize_digit(year)}年" + if month: + result += f"{verbalize_cardinal(month)}月" + if day: + result += f"{verbalize_cardinal(day)}日" + return result \ No newline at end of file diff --git a/modules/utils/zh_normalization/constants.py b/modules/utils/zh_normalization/constants.py new file mode 100644 index 0000000000000000000000000000000000000000..3078874d8bd3dfbff4f05620ff05872eab44a0a9 --- /dev/null +++ b/modules/utils/zh_normalization/constants.py @@ -0,0 +1,62 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import re +import string + +from pypinyin.constants import SUPPORT_UCS4 + +# 全角半角转换 +# 英文字符全角 -> 半角映射表 (num: 52) +F2H_ASCII_LETTERS = { + ord(char) + 65248: ord(char) + for char in string.ascii_letters +} + +# 英文字符半角 -> 全角映射表 +H2F_ASCII_LETTERS = {value: key for key, value in F2H_ASCII_LETTERS.items()} + +# 数字字符全角 -> 半角映射表 (num: 10) +F2H_DIGITS = {ord(char) + 65248: ord(char) for char in string.digits} +# 数字字符半角 -> 全角映射表 +H2F_DIGITS = {value: key for key, value in F2H_DIGITS.items()} + +# 标点符号全角 -> 半角映射表 (num: 32) +F2H_PUNCTUATIONS = {ord(char) + 65248: ord(char) for char in string.punctuation} +# 标点符号半角 -> 全角映射表 +H2F_PUNCTUATIONS = {value: key for key, value in F2H_PUNCTUATIONS.items()} + +# 空格 (num: 1) +F2H_SPACE = {'\u3000': ' '} +H2F_SPACE = {' ': '\u3000'} + +# 非"有拼音的汉字"的字符串,可用于NSW提取 +if SUPPORT_UCS4: + RE_NSW = re.compile(r'(?:[^' + r'\u3007' # 〇 + r'\u3400-\u4dbf' # CJK扩展A:[3400-4DBF] + r'\u4e00-\u9fff' # CJK基本:[4E00-9FFF] + r'\uf900-\ufaff' # CJK兼容:[F900-FAFF] + r'\U00020000-\U0002A6DF' # CJK扩展B:[20000-2A6DF] + r'\U0002A703-\U0002B73F' # CJK扩展C:[2A700-2B73F] + r'\U0002B740-\U0002B81D' # CJK扩展D:[2B740-2B81D] + r'\U0002F80A-\U0002FA1F' # CJK兼容扩展:[2F800-2FA1F] + r'])+') +else: + RE_NSW = re.compile( # pragma: no cover + r'(?:[^' + r'\u3007' # 〇 + r'\u3400-\u4dbf' # CJK扩展A:[3400-4DBF] + r'\u4e00-\u9fff' # CJK基本:[4E00-9FFF] + r'\uf900-\ufaff' # CJK兼容:[F900-FAFF] + r'])+') \ No newline at end of file diff --git a/modules/utils/zh_normalization/num.py b/modules/utils/zh_normalization/num.py new file mode 100644 index 0000000000000000000000000000000000000000..3b6b7fb6b2e7241a1d5ec9e75becbe4718275812 --- /dev/null +++ b/modules/utils/zh_normalization/num.py @@ -0,0 +1,244 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Rules to verbalize numbers into Chinese characters. +https://zh.wikipedia.org/wiki/中文数字#現代中文 +""" +import re +from collections import OrderedDict +from typing import List + +DIGITS = {str(i): tran for i, tran in enumerate("零一二三四五六七八九")} +UNITS = OrderedDict( + { + 1: "十", + 2: "百", + 3: "千", + 4: "万", + 8: "亿", + } +) + +COM_QUANTIFIERS = "(封|艘|把|目|套|段|人|所|朵|匹|张|座|回|场|尾|条|个|首|阙|阵|网|炮|顶|丘|棵|只|支|袭|辆|挑|担|颗|壳|窠|曲|墙|群|腔|砣|座|客|贯|扎|捆|刀|令|打|手|罗|坡|山|岭|江|溪|钟|队|单|双|对|出|口|头|脚|板|跳|枝|件|贴|针|线|管|名|位|身|堂|课|本|页|家|户|层|丝|毫|厘|分|钱|两|斤|担|铢|石|钧|锱|忽|(千|毫|微)克|毫|厘|(公)分|分|寸|尺|丈|里|寻|常|铺|程|(千|分|厘|毫|微)米|米|撮|勺|合|升|斗|石|盘|碗|碟|叠|桶|笼|盆|盒|杯|钟|斛|锅|簋|篮|盘|桶|罐|瓶|壶|卮|盏|箩|箱|煲|啖|袋|钵|年|月|日|季|刻|时|周|天|秒|分|小时|旬|纪|岁|世|更|夜|春|夏|秋|冬|代|伏|辈|丸|泡|粒|颗|幢|堆|条|根|支|道|面|片|张|颗|块|元|(亿|千万|百万|万|千|百)|(亿|千万|百万|万|千|百|美|)元|(亿|千万|百万|万|千|百|十|)吨|(亿|千万|百万|万|千|百|)块|角|毛|分)" + +# 分数表达式 +RE_FRAC = re.compile(r"(-?)(\d+)/(\d+)") + + +def replace_frac(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + sign = match.group(1) + nominator = match.group(2) + denominator = match.group(3) + sign: str = "负" if sign else "" + nominator: str = num2str(nominator) + denominator: str = num2str(denominator) + result = f"{sign}{denominator}分之{nominator}" + return result + + +# 百分数表达式 +RE_PERCENTAGE = re.compile(r"(-?)(\d+(\.\d+)?)(%|%)") + + +def replace_percentage(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + sign = match.group(1) + percent = match.group(2) + sign: str = "负" if sign else "" + percent: str = num2str(percent) + result = f"{sign}百分之{percent}" + return result + + +# 整数表达式 +# 带负号的整数 -10 +RE_INTEGER = re.compile(r"(-)" r"(\d+)") + + +def replace_negative_num(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + sign = match.group(1) + number = match.group(2) + sign: str = "负" if sign else "" + number: str = num2str(number) + result = f"{sign}{number}" + return result + + +# 编号-无符号整形 +# 00078 +RE_DEFAULT_NUM = re.compile(r"\d{3}\d*") + + +def replace_default_num(match): + """ + Args: + match (re.Match) + Returns: + str + """ + number = match.group(0) + return verbalize_digit(number, alt_one=True) + + +# 数字表达式 +# 纯小数 +RE_DECIMAL_NUM = re.compile(r"(-?)((\d+)(\.\d+))" r"|(\.(\d+))") +# 正整数 + 量词 +RE_POSITIVE_QUANTIFIERS = re.compile(r"(\d+)([多余几\+])?" + COM_QUANTIFIERS) +RE_NUMBER = re.compile(r"(-?)((\d+)(\.\d+)?)" r"|(\.(\d+))") + + +def replace_positive_quantifier(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + number = match.group(1) + match_2 = match.group(2) + if match_2 == "+": + match_2 = "多" + match_2: str = match_2 if match_2 else "" + quantifiers: str = match.group(3) + number: str = num2str(number) + result = f"{number}{match_2}{quantifiers}" + return result + + +def replace_number(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + sign = match.group(1) + number = match.group(2) + pure_decimal = match.group(5) + if pure_decimal: + result = num2str(pure_decimal) + else: + sign: str = "负" if sign else "" + number: str = num2str(number) + result = f"{sign}{number}" + return result + + +# 范围表达式 +# match.group(1) and match.group(8) are copy from RE_NUMBER + +RE_RANGE = re.compile( + r"((-?)((\d+)(\.\d+)?)|(\.(\d+)))[-~]((-?)((\d+)(\.\d+)?)|(\.(\d+)))" +) + + +def replace_range(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + first, second = match.group(1), match.group(8) + first = RE_NUMBER.sub(replace_number, first) + second = RE_NUMBER.sub(replace_number, second) + result = f"{first}到{second}" + return result + + +def _get_value(value_string: str, use_zero: bool = True) -> List[str]: + stripped = value_string.lstrip("0") + if len(stripped) == 0: + return [] + elif len(stripped) == 1: + if use_zero and len(stripped) < len(value_string): + return [DIGITS["0"], DIGITS[stripped]] + else: + return [DIGITS[stripped]] + else: + largest_unit = next( + power for power in reversed(UNITS.keys()) if power < len(stripped) + ) + first_part = value_string[:-largest_unit] + second_part = value_string[-largest_unit:] + return _get_value(first_part) + [UNITS[largest_unit]] + _get_value(second_part) + + +def verbalize_cardinal(value_string: str) -> str: + if not value_string: + return "" + + # 000 -> '零' , 0 -> '零' + value_string = value_string.lstrip("0") + if len(value_string) == 0: + return DIGITS["0"] + + result_symbols = _get_value(value_string) + # verbalized number starting with '一十*' is abbreviated as `十*` + if ( + len(result_symbols) >= 2 + and result_symbols[0] == DIGITS["1"] + and result_symbols[1] == UNITS[1] + ): + result_symbols = result_symbols[1:] + return "".join(result_symbols) + + +def verbalize_digit(value_string: str, alt_one=False) -> str: + result_symbols = [DIGITS[digit] for digit in value_string] + result = "".join(result_symbols) + if alt_one: + result = result.replace("一", "幺") + return result + + +def num2str(value_string: str) -> str: + integer_decimal = value_string.split(".") + if len(integer_decimal) == 1: + integer = integer_decimal[0] + decimal = "" + elif len(integer_decimal) == 2: + integer, decimal = integer_decimal + else: + raise ValueError( + f"The value string: '${value_string}' has more than one point in it." + ) + + result = verbalize_cardinal(integer) + + decimal = decimal.rstrip("0") + if decimal: + # '.22' is verbalized as '零点二二' + # '3.20' is verbalized as '三点二 + result = result if result else "零" + result += "点" + verbalize_digit(decimal) + return result diff --git a/modules/utils/zh_normalization/phonecode.py b/modules/utils/zh_normalization/phonecode.py new file mode 100644 index 0000000000000000000000000000000000000000..51835112603c1a8c31052285276f138b8c5a74d6 --- /dev/null +++ b/modules/utils/zh_normalization/phonecode.py @@ -0,0 +1,63 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import re + +from .num import verbalize_digit + +# 规范化固话/手机号码 +# 手机 +# http://www.jihaoba.com/news/show/13680 +# 移动:139、138、137、136、135、134、159、158、157、150、151、152、188、187、182、183、184、178、198 +# 联通:130、131、132、156、155、186、185、176 +# 电信:133、153、189、180、181、177 +RE_MOBILE_PHONE = re.compile( + r"(? str: + if mobile: + sp_parts = phone_string.strip('+').split() + result = ','.join( + [verbalize_digit(part, alt_one=True) for part in sp_parts]) + return result + else: + sil_parts = phone_string.split('-') + result = ','.join( + [verbalize_digit(part, alt_one=True) for part in sil_parts]) + return result + + +def replace_phone(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + return phone2str(match.group(0), mobile=False) + + +def replace_mobile(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + return phone2str(match.group(0)) diff --git a/modules/utils/zh_normalization/quantifier.py b/modules/utils/zh_normalization/quantifier.py new file mode 100644 index 0000000000000000000000000000000000000000..5fc7e9f3ee1af44e4d5a37f7af1fc33c65d39e44 --- /dev/null +++ b/modules/utils/zh_normalization/quantifier.py @@ -0,0 +1,63 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import re + +from .num import num2str + +# 温度表达式,温度会影响负号的读法 +# -3°C 零下三度 +RE_TEMPERATURE = re.compile(r"(-?)(\d+(\.\d+)?)(°C|℃|度|摄氏度)") +measure_dict = { + "cm2": "平方厘米", + "cm²": "平方厘米", + "cm3": "立方厘米", + "cm³": "立方厘米", + "cm": "厘米", + "db": "分贝", + "ds": "毫秒", + "kg": "千克", + "km": "千米", + "m2": "平方米", + "m²": "平方米", + "m³": "立方米", + "m3": "立方米", + "ml": "毫升", + "m": "米", + "mm": "毫米", + "s": "秒", +} + + +def replace_temperature(match) -> str: + """ + Args: + match (re.Match) + Returns: + str + """ + sign = match.group(1) + temperature = match.group(2) + unit = match.group(3) + sign: str = "零下" if sign else "" + temperature: str = num2str(temperature) + unit: str = "摄氏度" if unit == "摄氏度" else "度" + result = f"{sign}{temperature}{unit}" + return result + + +def replace_measure(sentence) -> str: + for q_notation in measure_dict: + pattern = rf"(?<=\d){q_notation}" + sentence = re.sub(pattern, measure_dict[q_notation], sentence) + return sentence diff --git a/modules/utils/zh_normalization/text_normlization.py b/modules/utils/zh_normalization/text_normlization.py new file mode 100644 index 0000000000000000000000000000000000000000..1dbeff02a24ebef4080cc9c7c713f255c251a740 --- /dev/null +++ b/modules/utils/zh_normalization/text_normlization.py @@ -0,0 +1,155 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import re +from typing import List + +from .char_convert import tranditional_to_simplified +from .chronology import RE_DATE +from .chronology import RE_DATE2 +from .chronology import RE_TIME +from .chronology import RE_TIME_RANGE +from .chronology import replace_date +from .chronology import replace_date2 +from .chronology import replace_time +from .constants import F2H_ASCII_LETTERS +from .constants import F2H_DIGITS +from .constants import F2H_SPACE +from .num import RE_DECIMAL_NUM +from .num import RE_DEFAULT_NUM +from .num import RE_FRAC +from .num import RE_INTEGER +from .num import RE_NUMBER +from .num import RE_PERCENTAGE +from .num import RE_POSITIVE_QUANTIFIERS +from .num import RE_RANGE +from .num import replace_default_num +from .num import replace_frac +from .num import replace_negative_num +from .num import replace_number +from .num import replace_percentage +from .num import replace_positive_quantifier +from .num import replace_range +from .phonecode import RE_MOBILE_PHONE +from .phonecode import RE_NATIONAL_UNIFORM_NUMBER +from .phonecode import RE_TELEPHONE +from .phonecode import replace_mobile +from .phonecode import replace_phone +from .quantifier import RE_TEMPERATURE +from .quantifier import replace_measure +from .quantifier import replace_temperature + + +class TextNormalizer(): + def __init__(self): + self.SENTENCE_SPLITOR = re.compile(r'([:、,;。?!,;?!][”’]?)') + + def _split(self, text: str, lang="zh") -> List[str]: + """Split long text into sentences with sentence-splitting punctuations. + Args: + text (str): The input text. + Returns: + List[str]: Sentences. + """ + # Only for pure Chinese here + if lang == "zh": + text = text.replace(" ", "") + # 过滤掉特殊字符 + text = re.sub(r'[——《》【】<=>{}()()#&@“”^_|…\\]', '', text) + text = self.SENTENCE_SPLITOR.sub(r'\1\n', text) + text = text.strip() + sentences = [sentence.strip() for sentence in re.split(r'\n+', text)] + return sentences + + def _post_replace(self, sentence: str) -> str: + sentence = sentence.replace('/', '每') + sentence = sentence.replace('~', '至') + sentence = sentence.replace('~', '至') + sentence = sentence.replace('①', '一') + sentence = sentence.replace('②', '二') + sentence = sentence.replace('③', '三') + sentence = sentence.replace('④', '四') + sentence = sentence.replace('⑤', '五') + sentence = sentence.replace('⑥', '六') + sentence = sentence.replace('⑦', '七') + sentence = sentence.replace('⑧', '八') + sentence = sentence.replace('⑨', '九') + sentence = sentence.replace('⑩', '十') + sentence = sentence.replace('α', '阿尔法') + sentence = sentence.replace('β', '贝塔') + sentence = sentence.replace('γ', '伽玛').replace('Γ', '伽玛') + sentence = sentence.replace('δ', '德尔塔').replace('Δ', '德尔塔') + sentence = sentence.replace('ε', '艾普西龙') + sentence = sentence.replace('ζ', '捷塔') + sentence = sentence.replace('η', '依塔') + sentence = sentence.replace('θ', '西塔').replace('Θ', '西塔') + sentence = sentence.replace('ι', '艾欧塔') + sentence = sentence.replace('κ', '喀帕') + sentence = sentence.replace('λ', '拉姆达').replace('Λ', '拉姆达') + sentence = sentence.replace('μ', '缪') + sentence = sentence.replace('ν', '拗') + sentence = sentence.replace('ξ', '克西').replace('Ξ', '克西') + sentence = sentence.replace('ο', '欧米克伦') + sentence = sentence.replace('π', '派').replace('Π', '派') + sentence = sentence.replace('ρ', '肉') + sentence = sentence.replace('ς', '西格玛').replace('Σ', '西格玛').replace( + 'σ', '西格玛') + sentence = sentence.replace('τ', '套') + sentence = sentence.replace('υ', '宇普西龙') + sentence = sentence.replace('φ', '服艾').replace('Φ', '服艾') + sentence = sentence.replace('χ', '器') + sentence = sentence.replace('ψ', '普赛').replace('Ψ', '普赛') + sentence = sentence.replace('ω', '欧米伽').replace('Ω', '欧米伽') + # re filter special characters, have one more character "-" than line 68 + # sentence = re.sub(r'[-——《》【】<=>{}()()#&@“”^_|…\\]', '', sentence) + return sentence + + def normalize_sentence(self, sentence: str) -> str: + # basic character conversions + sentence = tranditional_to_simplified(sentence) + sentence = sentence.translate(F2H_ASCII_LETTERS).translate( + F2H_DIGITS).translate(F2H_SPACE) + + # number related NSW verbalization + sentence = RE_DATE.sub(replace_date, sentence) + sentence = RE_DATE2.sub(replace_date2, sentence) + + # range first + sentence = RE_TIME_RANGE.sub(replace_time, sentence) + sentence = RE_TIME.sub(replace_time, sentence) + + sentence = RE_TEMPERATURE.sub(replace_temperature, sentence) + sentence = replace_measure(sentence) + sentence = RE_FRAC.sub(replace_frac, sentence) + sentence = RE_PERCENTAGE.sub(replace_percentage, sentence) + sentence = RE_MOBILE_PHONE.sub(replace_mobile, sentence) + + sentence = RE_TELEPHONE.sub(replace_phone, sentence) + sentence = RE_NATIONAL_UNIFORM_NUMBER.sub(replace_phone, sentence) + + sentence = RE_RANGE.sub(replace_range, sentence) + sentence = RE_INTEGER.sub(replace_negative_num, sentence) + sentence = RE_DECIMAL_NUM.sub(replace_number, sentence) + sentence = RE_POSITIVE_QUANTIFIERS.sub(replace_positive_quantifier, + sentence) + sentence = RE_DEFAULT_NUM.sub(replace_default_num, sentence) + sentence = RE_NUMBER.sub(replace_number, sentence) + sentence = self._post_replace(sentence) + + return sentence + + def normalize(self, text: str, lang = "") -> List[str]: + sentences = self._split(text, lang) + sentences = [self.normalize_sentence(sent) for sent in sentences] + return sentences + \ No newline at end of file diff --git a/packages.txt b/packages.txt new file mode 100644 index 0000000000000000000000000000000000000000..862e49f79817882ba469b72f089779815bef92cd --- /dev/null +++ b/packages.txt @@ -0,0 +1 @@ +rubberband-cli \ No newline at end of file diff --git a/playground/client.mjs b/playground/client.mjs new file mode 100644 index 0000000000000000000000000000000000000000..22af4611d52737c46f73456d34cf85875e40c773 --- /dev/null +++ b/playground/client.mjs @@ -0,0 +1,167 @@ +import axios from "axios"; + +class APIClient { + constructor(baseURL) { + this.client = axios.create({ + baseURL: baseURL, + headers: { + "Content-Type": "application/json", + }, + }); + } + + async synthesizeTTS({ + text, + spk = "female2", + style = "chat", + temperature = 0.3, + top_P = 0.7, + top_K = 20, + seed = 34060637, + format = "mp3", + prompt1 = "", + prompt2 = "", + prefix = "", + }) { + try { + const response = await this.client.get("/v1/tts", { + params: { + text, + spk, + style, + temperature, + top_P, + top_K, + seed, + format, + prompt1, + prompt2, + prefix, + }, + responseType: "blob", // Important for handling binary data + }); + return response.data; + } catch (error) { + console.error("Error synthesizing TTS:", error); + throw error; + } + } + + /** + * + * @param {string} ssml - The SSML text to synthesize + * @param {string} format - The format of the synthesized audio (e.g. "mp3") + */ + async synthesizeSSML({ ssml, format = "mp3" }) { + try { + const response = await this.client.post( + "/v1/ssml", + { + ssml, + format, + }, + { + responseType: "blob", // Important for handling binary data + } + ); + return response.data; + } catch (error) { + console.error("Error synthesizing SSML:", error); + throw error; + } + } + + async openaiSpeechAPI({ + input, + model = "chattts-4w", + voice = "female2", + response_format = "mp3", + speed = 1, + }) { + try { + const response = await this.client.post( + "/v1/audio/speech", + { + input, + model, + voice, + response_format, + speed, + }, + { + responseType: "blob", // Important for handling binary data + } + ); + return response.data; + } catch (error) { + console.error("Error generating speech audio:", error); + throw error; + } + } + + async refineText({ + text, + prompt = "[oral_2][laugh_0][break_6]", + seed = -1, + top_P = 0.7, + top_K = 20, + temperature = 0.7, + repetition_penalty = 1.0, + max_new_token = 384, + }) { + try { + const response = await this.client.post("/v1/prompt/refine", { + text, + prompt, + seed, + top_P, + top_K, + temperature, + repetition_penalty, + max_new_token, + }); + return response.data; + } catch (error) { + console.error("Error refining text:", error); + throw error; + } + } + + async listStyles() { + try { + const response = await this.client.get("/v1/styles/list"); + return response.data; + } catch (error) { + console.error("Error listing styles:", error); + throw error; + } + } + + async listSpeakers() { + try { + const response = await this.client.get("/v1/speakers/list"); + return response.data; + } catch (error) { + console.error("Error listing speakers:", error); + throw error; + } + } + + async createSpeaker({ name, seed }) { + try { + const response = await this.client.post("/v1/speaker/create", { + name, + seed, + }); + return response.data; + } catch (error) { + console.error("Error creating speaker:", error); + throw error; + } + } +} + +export const client = new APIClient( + localStorage.getItem("__chattts_playground_api_base__") || + `${window.location.origin}` +); diff --git a/playground/index.html b/playground/index.html new file mode 100644 index 0000000000000000000000000000000000000000..ddd637cd56c3f0b08c0014119f2ad651d37ffaf8 --- /dev/null +++ b/playground/index.html @@ -0,0 +1,80 @@ + + + + + + + + ChatTTS Forge Playground + + + + + +
+ + + + + \ No newline at end of file diff --git a/playground/index.mjs b/playground/index.mjs new file mode 100644 index 0000000000000000000000000000000000000000..08222376479ac128b94b72297c77fe9ad21cfa0a --- /dev/null +++ b/playground/index.mjs @@ -0,0 +1,113 @@ +import { render } from "preact"; +import { html, create, styled } from "./misc.mjs"; + +import { pages } from "./pages.mjs"; + +const useStore = create((set, get) => ({ + page: Object.keys(pages).includes(location.hash.slice(1)) + ? location.hash.slice(1) + : Object.keys(pages)[0], + setPage: (page) => { + set({ page }); + location.hash = page; + }, +})); + +const NotFound = () => html`
Not Found
`; + +const Content = () => { + const { page } = useStore(); + const Page = pages[page]; + return Page ? html`<${Page} />` : html`<${NotFound} />`; +}; + +const NavButton = styled.button` + background-color: transparent; + border: none; + color: white; + cursor: pointer; + font-size: 1rem; + padding: 0.5rem 1rem; + border-bottom: 1px solid transparent; + + &:hover { + background-color: #444; + } + + &.--active { + border-bottom: 1px solid blue; + } +`; + +const HeaderNav = styled.nav` + display: flex; + padding: 4px 8px; + background-color: #333; + + gap: 8px; + + user-select: none; + + .nav-icon { + display: flex; + align-items: center; + justify-content: center; + } + + .nav-title { + display: flex; + align-items: center; + justify-content: center; + } + + .divider { + flex: 1; + } +`; + +const PageNav = () => { + const { setPage, page: current } = useStore(); + return html` + <${HeaderNav}> + + + ${Object.keys(pages).map( + (page) => + html` + <${NavButton} + onClick=${() => setPage(page)} + className=${current === page ? "--active" : ""} + > + ${page} + + ` + )} +
+ <${NavButton} + onClick=${() => { + window.open("https://github.com/lenML/ChatTTS-Forge", "_blank"); + }} + > + github + + + `; +}; + +const AppContent = styled.div` + padding: 8px; + flex: 1; + overflow: auto; +`; + +const App = () => { + const { page } = useStore(); + return html` + <${PageNav} /> + <${AppContent} className="pg-scrollbar"> + <${Content} /> + + `; +}; + +render(html`<${App} />`, document.getElementById("app")); diff --git a/playground/misc.mjs b/playground/misc.mjs new file mode 100644 index 0000000000000000000000000000000000000000..2408cb9857c57d23cc876876d6ad5c79e5415e2d --- /dev/null +++ b/playground/misc.mjs @@ -0,0 +1,21 @@ +import { h } from "preact"; +import * as React from "preact/hooks"; +import htm from "htm"; +import { bindReact } from "@quik-fe/stand"; + +import * as goober from "goober"; + +goober.setup(h); + +export const html = htm.bind(h); +export const create = bindReact(React); + +/** + * @type {Record} + */ +export const styled = new Proxy( + {}, + { + get: (target, key) => goober.styled.call({}, key), + } +); diff --git a/playground/pages.mjs b/playground/pages.mjs new file mode 100644 index 0000000000000000000000000000000000000000..87854928821d70aec31ead114f720c10dd62af96 --- /dev/null +++ b/playground/pages.mjs @@ -0,0 +1,9 @@ +import { TTSPage } from "./tts.page.mjs"; +import { SSMLPage } from "./ssml.page.mjs"; +import { SpeakerPage } from "./speakers.page.mjs"; + +export const pages = { + tts: TTSPage, + ssml: SSMLPage, + speakers: SpeakerPage, +}; diff --git a/playground/speakers.page.mjs b/playground/speakers.page.mjs new file mode 100644 index 0000000000000000000000000000000000000000..3babcfa7369185a4592ed63eca3ebdd0cc7b0426 --- /dev/null +++ b/playground/speakers.page.mjs @@ -0,0 +1,219 @@ +import { client } from "./client.mjs"; +import { html, create, styled } from "./misc.mjs"; + +/** + * 管理 speaker + * + * 1. 显示 speaker 列表 + * 2. 创建 speaker + * 3. 可以删除修改 speaker + */ +const useStore = create((set, get) => ({ + /** + * @type {{ name: string, params: string }[]} + */ + speakers: [], + + setSpeakers: (speakers) => set({ speakers }), + + formData: { + seed: 42, + name: "", + }, + setFormData: (data) => set({ formData: data }), +})); + +window.addEventListener("load", async () => { + const speakers = await client.listSpeakers(); + useStore.get().setSpeakers(speakers.data); +}); + +const SpeakerFactory = () => { + // 调用接口创建 speaker + // 创建speaker需要设定seed和name + const { setSpeakers, formData, setFormData } = useStore(); + return html` + +
+ + + + +
+
+ `; +}; + +const SpeakerList = () => { + // 显示 speaker 列表 + // 只是可以列出来,没有其他操作 + const { speakers } = useStore(); + // 以table + return html` +
+ Speakers + + + + + + + + + + ${speakers.map( + (speaker) => html` + + + + + ` + )} + +
idname
${speaker.id}${speaker.name}
+
+ `; +}; + +const SpeakerPageContainer = styled.div` + display: flex; + flex-direction: row; + + textarea { + width: 100%; + height: 10rem; + margin-bottom: 1rem; + + min-height: 10rem; + + resize: vertical; + } + + button { + padding: 0.5rem 1rem; + background-color: #007bff; + color: white; + border: none; + cursor: pointer; + } + + button:hover { + background-color: #0056b3; + } + + button:disabled { + background-color: #6c757d; + cursor: not-allowed; + } + + fieldset { + margin-top: 1rem; + padding: 1rem; + border: 1px solid #333; + } + + legend { + font-weight: bold; + } + + label { + display: block; + margin-bottom: 0.5rem; + } + + select, + input[type="range"], + input[type="number"] { + width: 100%; + margin-top: 0.25rem; + } + + input[type="range"] { + width: calc(100% - 2rem); + } + + input[type="number"] { + width: calc(100% - 2rem); + padding: 0.5rem; + } + + input[type="text"] { + width: 100%; + padding: 0.5rem; + } + + audio { + margin-top: 1rem; + } + + textarea, + input, + select { + background-color: #333; + color: white; + border: 1px solid #333; + border-radius: 0.25rem; + padding: 0.5rem; + } + + table { + width: 100%; + border-collapse: collapse; + } + + th, + td { + padding: 0.5rem; + border: 1px solid #333; + } + + th { + background-color: #333; + color: white; + } + + th:nth-child(2), + td:nth-child(2) { + width: 60%; + } + + .speaker-factory { + flex: 1; + } + + .spekaer-list { + width: 256px; + } +`; + +export const SpeakerPage = () => { + return html` + <${SpeakerPageContainer}> + <${SpeakerList} /> + <${SpeakerFactory} /> + + `; +}; diff --git a/playground/ssml.page.mjs b/playground/ssml.page.mjs new file mode 100644 index 0000000000000000000000000000000000000000..51206d59b08aab3fe86d50dc5b0351ab0c40df44 --- /dev/null +++ b/playground/ssml.page.mjs @@ -0,0 +1,269 @@ +import { client } from "./client.mjs"; +import { html, create, styled } from "./misc.mjs"; + +const default_ssml = ` + + + 这里是一个简单的 SSML 示例。 + + +`.trim(); + +const useStore = create((set, get) => ({ + params: { + ssml: default_ssml, + format: "mp3", + }, + setParams: (params) => set({ params }), + + loading: false, + + /** + * @type {Array<{ id: number, params: { ssml: string; format: string }, url: string }>} + */ + history: [], + setHistory: (history) => set({ history }), +})); + +const SSMLFormContainer = styled.div` + display: flex; + flex-direction: column; + + textarea { + width: 100%; + height: 10rem; + margin-bottom: 1rem; + + min-height: 10rem; + + resize: vertical; + } + + button { + padding: 0.5rem 1rem; + background-color: #007bff; + color: white; + border: none; + cursor: pointer; + } + + button:hover { + background-color: #0056b3; + } + + button:disabled { + background-color: #6c757d; + cursor: not-allowed; + } + + fieldset { + margin-top: 1rem; + padding: 1rem; + border: 1px solid #333; + } + + legend { + font-weight: bold; + } + + label { + display: block; + margin-bottom: 0.5rem; + } + + select, + input[type="range"], + input[type="number"] { + width: 100%; + margin-top: 0.25rem; + } + + input[type="range"] { + width: calc(100% - 2rem); + } + + input[type="number"] { + width: calc(100% - 2rem); + padding: 0.5rem; + } + + input[type="text"] { + width: 100%; + padding: 0.5rem; + } + + audio { + margin-top: 1rem; + } + + textarea, + input, + select { + background-color: #333; + color: white; + border: 1px solid #333; + border-radius: 0.25rem; + padding: 0.5rem; + } + + .ssml-body { + display: flex; + gap: 1rem; + } + + table { + width: 100%; + border-collapse: collapse; + } + + th, + td { + padding: 0.5rem; + border: 1px solid #333; + } + + th { + background-color: #333; + color: white; + } + + .btn-danger { + background-color: #dc3545; + color: white; + border: none; + cursor: pointer; + } + + .btn-danger:hover { + background-color: #bd2130; + } +`; + +const SSMLOptions = () => { + const { params, setParams } = useStore(); + return html` +
+ Options + +
+ `; +}; + +const SSMLHistory = () => { + const { history } = useStore(); + return html` +
+ History + + + + + + + + + + + ${[...history].reverse().map( + (item) => html` + + + + + + ` + )} + +
indexSSMLAudio
${item.id} + + + +
+
+ `; +}; + +let generate_index = 0; + +const SSMLForm = () => { + const { params, setParams, loading } = useStore(); + const request = async () => { + useStore.set({ loading: true }); + try { + const blob = await client.synthesizeSSML(params); + const blob_url = URL.createObjectURL(blob); + useStore.set({ + history: [ + ...useStore.get().history, + { + id: generate_index++, + params, + url: blob_url, + }, + ], + }); + } finally { + useStore.set({ loading: false }); + } + }; + return html` + <${SSMLFormContainer}> + + + + + + +
+
+ Options + + + + + + + + + + +
+ +
+ History + + + + + + + + + + ${[...ui.history].reverse().map( + (item, index) => html` + + + + + + ` + )} + +
idParamsAudio
${item.id} +
${JSON.stringify(item.params, null, 2)}
+
+ +
+
+
+ + `; +}; diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..bcdc929822057c8fb31cfb8f587aa990e45f1aaa --- /dev/null +++ b/requirements.txt @@ -0,0 +1,25 @@ +numpy +scipy +lxml +pydub +fastapi +soundfile +pyrubberband +omegaconf +pypinyin +pandas +vector_quantize_pytorch +einops +omegaconf~=2.3.0 +tqdm +huggingface_hub>=0.22.2,<1.0 +vocos==0.0.1 +transformers==4.41.2 +torch +torchvision +torchaudio +gradio +emojiswitch +python-dotenv +zhon +mistune \ No newline at end of file diff --git a/webui.py b/webui.py new file mode 100644 index 0000000000000000000000000000000000000000..8d35de10370b2212b855f0258814b7bf40273b70 --- /dev/null +++ b/webui.py @@ -0,0 +1,918 @@ +import spaces +import os +import logging + +from numpy import clip + +logging.basicConfig( + level=os.getenv("LOG_LEVEL", "INFO"), + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", +) + + +import gradio as gr +import io +import re +import numpy as np + +import torch + +from modules.ssml import parse_ssml +from modules.SynthesizeSegments import SynthesizeSegments, combine_audio_segments +from modules.generate_audio import generate_audio, generate_audio_batch + +from modules.speaker import speaker_mgr +from modules.data import styles_mgr + +from modules.api.utils import calc_spk_style + +from modules.normalization import text_normalize +from modules import refiner, config + +from modules.utils import env +from modules.SentenceSplitter import SentenceSplitter + +torch._dynamo.config.cache_size_limit = 64 +torch._dynamo.config.suppress_errors = True +torch.set_float32_matmul_precision("high") + +webui_config = { + "tts_max": 1000, + "ssml_max": 5000, + "spliter_threshold": 100, + "max_batch_size": 12, +} + + +def get_speakers(): + return speaker_mgr.list_speakers() + + +def get_styles(): + return styles_mgr.list_items() + + +def segments_length_limit(segments, total_max: int): + ret_segments = [] + total_len = 0 + for seg in segments: + total_len += len(seg["text"]) + if total_len > total_max: + break + ret_segments.append(seg) + return ret_segments + + +@torch.inference_mode() +@spaces.GPU +def synthesize_ssml(ssml: str, batch_size=8): + try: + batch_size = int(batch_size) + except Exception: + batch_size = 8 + + ssml = ssml.strip() + + if ssml == "": + return None + + segments = parse_ssml(ssml) + max_len = webui_config["ssml_max"] + segments = segments_length_limit(segments, max_len) + + if len(segments) == 0: + return None + + synthesize = SynthesizeSegments(batch_size=batch_size) + audio_segments = synthesize.synthesize_segments(segments) + combined_audio = combine_audio_segments(audio_segments) + + buffer = io.BytesIO() + combined_audio.export(buffer, format="wav") + + buffer.seek(0) + + return buffer.read() + + +@torch.inference_mode() +@spaces.GPU +def tts_generate( + text, + temperature, + top_p, + top_k, + spk, + infer_seed, + use_decoder, + prompt1, + prompt2, + prefix, + style, + disable_normalize=False, + batch_size=8, +): + try: + batch_size = int(batch_size) + except Exception: + batch_size = 8 + + max_len = webui_config["tts_max"] + text = text.strip()[0:max_len] + + if text == "": + return None + + if style == "*auto": + style = None + + if isinstance(top_k, float): + top_k = int(top_k) + + params = calc_spk_style(spk=spk, style=style) + + spk = params.get("spk", spk) + infer_seed = infer_seed or params.get("seed", infer_seed) + temperature = temperature or params.get("temperature", temperature) + prefix = prefix or params.get("prefix", prefix) + prompt1 = prompt1 or params.get("prompt1", "") + prompt2 = prompt2 or params.get("prompt2", "") + + infer_seed = clip(infer_seed, -1, 2**32 - 1) + infer_seed = int(infer_seed) + + if not disable_normalize: + text = text_normalize(text) + + if batch_size == 1: + sample_rate, audio_data = generate_audio( + text=text, + temperature=temperature, + top_P=top_p, + top_K=top_k, + spk=spk, + infer_seed=infer_seed, + use_decoder=use_decoder, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + ) + + return sample_rate, audio_data + else: + spliter = SentenceSplitter(webui_config["spliter_threshold"]) + sentences = spliter.parse(text) + sentences = [text_normalize(s) for s in sentences] + audio_data_batch = generate_audio_batch( + texts=sentences, + temperature=temperature, + top_P=top_p, + top_K=top_k, + spk=spk, + infer_seed=infer_seed, + use_decoder=use_decoder, + prompt1=prompt1, + prompt2=prompt2, + prefix=prefix, + ) + sample_rate = audio_data_batch[0][0] + audio_data = np.concatenate([data for _, data in audio_data_batch]) + + return sample_rate, audio_data + + +@torch.inference_mode() +@spaces.GPU +def refine_text(text: str, prompt: str): + text = text_normalize(text) + return refiner.refine_text(text, prompt=prompt) + + +def read_local_readme(): + with open("README.md", "r", encoding="utf-8") as file: + content = file.read() + content = content[content.index("# 🗣️ ChatTTS-Forge") :] + return content + + +# 演示示例文本 +sample_texts = [ + { + "text": "大🍌,一条大🍌,嘿,你的感觉真的很奇妙 [lbreak]", + }, + { + "text": "天气预报显示,今天会有小雨,请大家出门时记得带伞。降温的天气也提醒我们要适时添衣保暖 [lbreak]", + }, + { + "text": "公司的年度总结会议将在下周三举行,请各部门提前准备好相关材料,确保会议顺利进行 [lbreak]", + }, + { + "text": "今天的午餐菜单包括烤鸡、沙拉和蔬菜汤,大家可以根据自己的口味选择适合的菜品 [lbreak]", + }, + { + "text": "请注意,电梯将在下午两点进行例行维护,预计需要一个小时的时间,请大家在此期间使用楼梯 [lbreak]", + }, + { + "text": "图书馆新到了一批书籍,涵盖了文学、科学和历史等多个领域,欢迎大家前来借阅 [lbreak]", + }, + { + "text": "电影中梁朝伟扮演的陈永仁的编号27149 [lbreak]", + }, + { + "text": "这块黄金重达324.75克 [lbreak]", + }, + { + "text": "我们班的最高总分为583分 [lbreak]", + }, + { + "text": "12~23 [lbreak]", + }, + { + "text": "-1.5~2 [lbreak]", + }, + { + "text": "她出生于86年8月18日,她弟弟出生于1995年3月1日 [lbreak]", + }, + { + "text": "等会请在12:05请通知我 [lbreak]", + }, + { + "text": "今天的最低气温达到-10°C [lbreak]", + }, + { + "text": "现场有7/12的观众投出了赞成票 [lbreak]", + }, + { + "text": "明天有62%的概率降雨 [lbreak]", + }, + { + "text": "随便来几个价格12块5,34.5元,20.1万 [lbreak]", + }, + { + "text": "这是固话0421-33441122 [lbreak]", + }, + { + "text": "这是手机+86 18544139121 [lbreak]", + }, +] + +ssml_example1 = """ + + + 下面是一个 ChatTTS 用于合成多角色多情感的有声书示例[lbreak] + + + 黛玉冷笑道:[lbreak] + + + 我说呢 [uv_break] ,亏了绊住,不然,早就飞起来了[lbreak] + + + 宝玉道:[lbreak] + + + “只许和你玩 [uv_break] ,替你解闷。不过偶然到他那里,就说这些闲话。”[lbreak] + + + “好没意思的话![uv_break] 去不去,关我什么事儿? 又没叫你替我解闷儿 [uv_break],还许你不理我呢” [lbreak] + + + 说着,便赌气回房去了 [lbreak] + + +""" +ssml_example2 = """ + + + 使用 prosody 控制生成文本的语速语调和音量,示例如下 [lbreak] + + + 无任何限制将会继承父级voice配置进行生成 [lbreak] + + + 设置 rate 大于1表示加速,小于1为减速 [lbreak] + + + 设置 pitch 调整音调,设置为6表示提高6个半音 [lbreak] + + + 设置 volume 调整音量,设置为2表示提高2个分贝 [lbreak] + + + 在 voice 中无prosody包裹的文本即为默认生成状态下的语音 [lbreak] + + +""" +ssml_example3 = """ + + + 使用 break 标签将会简单的 [lbreak] + + + + 插入一段空白到生成结果中 [lbreak] + + +""" + +ssml_example4 = """ + + + temperature for sampling (may be overridden by style or speaker) [lbreak] + + 温度值用于采样,这个值有可能被 style 或者 speaker 覆盖 [lbreak] + + temperature for sampling ,这个值有可能被 style 或者 speaker 覆盖 [lbreak] + + 温度值用于采样,(may be overridden by style or speaker) [lbreak] + + +""" + +default_ssml = """ + + + 这里是一个简单的 SSML 示例 [lbreak] + + +""" + + +def create_tts_interface(): + speakers = get_speakers() + + def get_speaker_show_name(spk): + if spk.gender == "*" or spk.gender == "": + return spk.name + return f"{spk.gender} : {spk.name}" + + speaker_names = ["*random"] + [ + get_speaker_show_name(speaker) for speaker in speakers + ] + + styles = ["*auto"] + [s.get("name") for s in get_styles()] + + history = [] + + with gr.Row(): + with gr.Column(scale=1): + with gr.Group(): + gr.Markdown("🎛️Sampling") + temperature_input = gr.Slider( + 0.01, 2.0, value=0.3, step=0.01, label="Temperature" + ) + top_p_input = gr.Slider(0.1, 1.0, value=0.7, step=0.1, label="Top P") + top_k_input = gr.Slider(1, 50, value=20, step=1, label="Top K") + batch_size_input = gr.Slider( + 1, + webui_config["max_batch_size"], + value=8, + step=1, + label="Batch Size", + ) + + with gr.Row(): + with gr.Group(): + gr.Markdown("🎭Style") + gr.Markdown("- 后缀为 `_p` 表示带prompt,效果更强但是影响质量") + style_input_dropdown = gr.Dropdown( + choices=styles, + # label="Choose Style", + interactive=True, + show_label=False, + value="*auto", + ) + with gr.Row(): + with gr.Group(): + gr.Markdown("🗣️Speaker (Name or Seed)") + spk_input_text = gr.Textbox( + label="Speaker (Text or Seed)", + value="female2", + show_label=False, + ) + spk_input_dropdown = gr.Dropdown( + choices=speaker_names, + # label="Choose Speaker", + interactive=True, + value="female : female2", + show_label=False, + ) + spk_rand_button = gr.Button( + value="🎲", + # tooltip="Random Seed", + variant="secondary", + ) + spk_input_dropdown.change( + fn=lambda x: x.startswith("*") + and "-1" + or x.split(":")[-1].strip(), + inputs=[spk_input_dropdown], + outputs=[spk_input_text], + ) + spk_rand_button.click( + lambda x: str(torch.randint(0, 2**32 - 1, (1,)).item()), + inputs=[spk_input_text], + outputs=[spk_input_text], + ) + with gr.Group(): + gr.Markdown("💃Inference Seed") + infer_seed_input = gr.Number( + value=42, + label="Inference Seed", + show_label=False, + minimum=-1, + maximum=2**32 - 1, + ) + infer_seed_rand_button = gr.Button( + value="🎲", + # tooltip="Random Seed", + variant="secondary", + ) + use_decoder_input = gr.Checkbox( + value=True, label="Use Decoder", visible=False + ) + with gr.Group(): + gr.Markdown("🔧Prompt engineering") + prompt1_input = gr.Textbox(label="Prompt 1") + prompt2_input = gr.Textbox(label="Prompt 2") + prefix_input = gr.Textbox(label="Prefix") + + infer_seed_rand_button.click( + lambda x: int(torch.randint(0, 2**32 - 1, (1,)).item()), + inputs=[infer_seed_input], + outputs=[infer_seed_input], + ) + with gr.Column(scale=3): + with gr.Row(): + with gr.Column(scale=4): + with gr.Group(): + input_title = gr.Markdown( + "📝Text Input", + elem_id="input-title", + ) + gr.Markdown("- 每个batch最长30s") + gr.Markdown("- batch size设置为1,即不使用批处理") + gr.Markdown("- 开启batch请配合设置Inference Seed") + gr.Markdown( + f"- 字数限制{webui_config['tts_max']:,}字,超过部分截断" + ) + gr.Markdown("- 如果尾字吞字不读,可以试试结尾加上 `[lbreak]`") + gr.Markdown( + "- If the input text is all in English, it is recommended to check disable_normalize" + ) + text_input = gr.Textbox( + show_label=False, + label="Text to Speech", + lines=10, + placeholder="输入文本或选择示例", + elem_id="text-input", + ) + # TODO 字数统计,其实实现很好写,但是就是会触发loading...并且还要和后端交互... + # text_input.change( + # fn=lambda x: ( + # f"📝Text Input ({len(x)} char)" + # if x + # else ( + # "📝Text Input (0 char)" + # if not x + # else "📝Text Input (0 char)" + # ) + # ), + # inputs=[text_input], + # outputs=[input_title], + # ) + with gr.Row(): + contorl_tokens = [ + "[laugh]", + "[uv_break]", + "[v_break]", + "[lbreak]", + ] + + for tk in contorl_tokens: + t_btn = gr.Button(tk) + t_btn.click( + lambda text, tk=tk: text + " " + tk, + inputs=[text_input], + outputs=[text_input], + ) + with gr.Column(scale=1): + with gr.Group(): + gr.Markdown("🎶Refiner") + refine_prompt_input = gr.Textbox( + label="Refine Prompt", + value="[oral_2][laugh_0][break_6]", + ) + refine_button = gr.Button("✍️Refine Text") + # TODO 分割句子,使用当前配置拼接为SSML,然后发送到SSML tab + # send_button = gr.Button("📩Split and send to SSML") + + with gr.Group(): + gr.Markdown("🔊Generate") + disable_normalize_input = gr.Checkbox( + value=False, label="Disable Normalize" + ) + tts_button = gr.Button( + "🔊Generate Audio", + variant="primary", + elem_classes="big-button", + ) + + with gr.Group(): + gr.Markdown("🎄Examples") + sample_dropdown = gr.Dropdown( + choices=[sample["text"] for sample in sample_texts], + show_label=False, + value=None, + interactive=True, + ) + sample_dropdown.change( + fn=lambda x: x, + inputs=[sample_dropdown], + outputs=[text_input], + ) + + with gr.Group(): + gr.Markdown("🎨Output") + tts_output = gr.Audio(label="Generated Audio") + + refine_button.click( + refine_text, + inputs=[text_input, refine_prompt_input], + outputs=[text_input], + ) + + tts_button.click( + tts_generate, + inputs=[ + text_input, + temperature_input, + top_p_input, + top_k_input, + spk_input_text, + infer_seed_input, + use_decoder_input, + prompt1_input, + prompt2_input, + prefix_input, + style_input_dropdown, + disable_normalize_input, + batch_size_input, + ], + outputs=tts_output, + ) + + +def create_ssml_interface(): + examples = [ + ssml_example1, + ssml_example2, + ssml_example3, + ssml_example4, + ] + + with gr.Row(): + with gr.Column(scale=3): + with gr.Group(): + gr.Markdown("📝SSML Input") + gr.Markdown(f"- 最长{webui_config['ssml_max']:,}字符,超过会被截断") + gr.Markdown("- 尽量保证使用相同的 seed") + gr.Markdown( + "- 关于SSML可以看这个 [文档](https://github.com/lenML/ChatTTS-Forge/blob/main/docs/SSML.md)" + ) + ssml_input = gr.Textbox( + label="SSML Input", + lines=10, + value=default_ssml, + placeholder="输入 SSML 或选择示例", + elem_id="ssml_input", + show_label=False, + ) + ssml_button = gr.Button("🔊Synthesize SSML", variant="primary") + with gr.Column(scale=1): + with gr.Group(): + # 参数 + gr.Markdown("🎛️Parameters") + # batch size + batch_size_input = gr.Slider( + label="Batch Size", + value=8, + minimum=1, + maximum=webui_config["max_batch_size"], + step=1, + ) + with gr.Group(): + gr.Markdown("🎄Examples") + gr.Examples( + examples=examples, + inputs=[ssml_input], + ) + + ssml_output = gr.Audio(label="Generated Audio") + + ssml_button.click( + synthesize_ssml, + inputs=[ssml_input, batch_size_input], + outputs=ssml_output, + ) + + return ssml_input + + +def split_long_text(long_text_input): + spliter = SentenceSplitter(webui_config["spliter_threshold"]) + sentences = spliter.parse(long_text_input) + sentences = [text_normalize(s) for s in sentences] + data = [] + for i, text in enumerate(sentences): + data.append([i, text, len(text)]) + return data + + +def merge_dataframe_to_ssml(dataframe, spk, style, seed): + if style == "*auto": + style = None + if spk == "-1" or spk == -1: + spk = None + if seed == -1 or seed == "-1": + seed = None + + ssml = "" + indent = " " * 2 + + for i, row in dataframe.iterrows(): + ssml += f"{indent}\n" + return f"\n{ssml}" + + +# 长文本处理 +# 可以输入长文本,并选择切割方法,切割之后可以将拼接的SSML发送到SSML tab +# 根据 。 句号切割,切割之后显示到 data table +def create_long_content_tab(ssml_input, tabs): + speakers = get_speakers() + + def get_speaker_show_name(spk): + if spk.gender == "*" or spk.gender == "": + return spk.name + return f"{spk.gender} : {spk.name}" + + speaker_names = ["*random"] + [ + get_speaker_show_name(speaker) for speaker in speakers + ] + + styles = ["*auto"] + [s.get("name") for s in get_styles()] + + with gr.Row(): + with gr.Column(scale=1): + # 选择说话人 选择风格 选择seed + with gr.Group(): + gr.Markdown("🗣️Speaker") + spk_input_text = gr.Textbox( + label="Speaker (Text or Seed)", + value="female2", + show_label=False, + ) + spk_input_dropdown = gr.Dropdown( + choices=speaker_names, + interactive=True, + value="female : female2", + show_label=False, + ) + spk_rand_button = gr.Button( + value="🎲", + variant="secondary", + ) + with gr.Group(): + gr.Markdown("🎭Style") + style_input_dropdown = gr.Dropdown( + choices=styles, + interactive=True, + show_label=False, + value="*auto", + ) + with gr.Group(): + gr.Markdown("🗣️Seed") + infer_seed_input = gr.Number( + value=42, + label="Inference Seed", + show_label=False, + minimum=-1, + maximum=2**32 - 1, + ) + infer_seed_rand_button = gr.Button( + value="🎲", + variant="secondary", + ) + + send_btn = gr.Button("📩Send to SSML", variant="primary") + + with gr.Column(scale=3): + with gr.Group(): + gr.Markdown("📝Long Text Input") + gr.Markdown("- 此页面用于处理超长文本") + gr.Markdown("- 切割后,可以选择说话人、风格、seed,然后发送到SSML") + long_text_input = gr.Textbox( + label="Long Text Input", + lines=10, + placeholder="输入长文本", + elem_id="long-text-input", + show_label=False, + ) + long_text_split_button = gr.Button("🔪Split Text") + + with gr.Row(): + with gr.Column(scale=3): + with gr.Group(): + gr.Markdown("🎨Output") + long_text_output = gr.DataFrame( + headers=["index", "text", "length"], + datatype=["number", "str", "number"], + elem_id="long-text-output", + interactive=False, + wrap=True, + value=[], + ) + + spk_input_dropdown.change( + fn=lambda x: x.startswith("*") and "-1" or x.split(":")[-1].strip(), + inputs=[spk_input_dropdown], + outputs=[spk_input_text], + ) + spk_rand_button.click( + lambda x: int(torch.randint(0, 2**32 - 1, (1,)).item()), + inputs=[spk_input_text], + outputs=[spk_input_text], + ) + infer_seed_rand_button.click( + lambda x: int(torch.randint(0, 2**32 - 1, (1,)).item()), + inputs=[infer_seed_input], + outputs=[infer_seed_input], + ) + long_text_split_button.click( + split_long_text, + inputs=[long_text_input], + outputs=[long_text_output], + ) + + infer_seed_rand_button.click( + lambda x: int(torch.randint(0, 2**32 - 1, (1,)).item()), + inputs=[infer_seed_input], + outputs=[infer_seed_input], + ) + + send_btn.click( + merge_dataframe_to_ssml, + inputs=[ + long_text_output, + spk_input_text, + style_input_dropdown, + infer_seed_input, + ], + outputs=[ssml_input], + ) + + def change_tab(): + return gr.Tabs(selected="ssml") + + send_btn.click(change_tab, inputs=[], outputs=[tabs]) + + +def create_readme_tab(): + readme_content = read_local_readme() + gr.Markdown(readme_content) + + +def create_interface(): + + js_func = """ + function refresh() { + const url = new URL(window.location); + + if (url.searchParams.get('__theme') !== 'dark') { + url.searchParams.set('__theme', 'dark'); + window.location.href = url.href; + } + } + """ + + head_js = """ + + """ + + with gr.Blocks(js=js_func, head=head_js, title="ChatTTS Forge WebUI") as demo: + css = """ + + """ + + gr.HTML(css) + with gr.Tabs() as tabs: + with gr.TabItem("TTS"): + create_tts_interface() + + with gr.TabItem("SSML", id="ssml"): + ssml_input = create_ssml_interface() + + with gr.TabItem("Long Text"): + create_long_content_tab(ssml_input, tabs=tabs) + + with gr.TabItem("README"): + create_readme_tab() + + gr.Markdown( + "此项目基于 [ChatTTS-Forge](https://github.com/lenML/ChatTTS-Forge) " + ) + return demo + + +if __name__ == "__main__": + import argparse + import dotenv + + dotenv.load_dotenv( + dotenv_path=os.getenv("ENV_FILE", ".env.webui"), + ) + + parser = argparse.ArgumentParser(description="Gradio App") + parser.add_argument("--server_name", type=str, help="server name") + parser.add_argument("--server_port", type=int, help="server port") + parser.add_argument( + "--share", action="store_true", help="share the gradio interface" + ) + parser.add_argument("--debug", action="store_true", help="enable debug mode") + parser.add_argument("--auth", type=str, help="username:password for authentication") + parser.add_argument( + "--half", + action="store_true", + help="Enable half precision for model inference", + ) + parser.add_argument( + "--off_tqdm", + action="store_true", + help="Disable tqdm progress bar", + ) + parser.add_argument( + "--tts_max_len", + type=int, + help="Max length of text for TTS", + ) + parser.add_argument( + "--ssml_max_len", + type=int, + help="Max length of text for SSML", + ) + parser.add_argument( + "--max_batch_size", + type=int, + help="Max batch size for TTS", + ) + + args = parser.parse_args() + + server_name = env.get_env_or_arg(args, "server_name", "0.0.0.0", str) + server_port = env.get_env_or_arg(args, "server_port", 7860, int) + share = env.get_env_or_arg(args, "share", False, bool) + debug = env.get_env_or_arg(args, "debug", False, bool) + auth = env.get_env_or_arg(args, "auth", None, str) + half = env.get_env_or_arg(args, "half", False, bool) + off_tqdm = env.get_env_or_arg(args, "off_tqdm", False, bool) + + webui_config["tts_max"] = env.get_env_or_arg(args, "tts_max_len", 1000, int) + webui_config["ssml_max"] = env.get_env_or_arg(args, "ssml_max_len", 5000, int) + webui_config["max_batch_size"] = env.get_env_or_arg(args, "max_batch_size", 12, int) + + demo = create_interface() + + if auth: + auth = tuple(auth.split(":")) + + if half: + config.model_config["half"] = True + + if off_tqdm: + config.disable_tqdm = True + + demo.queue().launch( + server_name=server_name, + server_port=server_port, + share=share, + debug=debug, + auth=auth, + show_api=False, + )