中文名如何转换正确英文名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文名如何转换正确英文名相关的知识,希望对你有一定的参考价值。
我的中文名:隋高旭志,单姓父亲姓隋,母亲姓高.一直没有找到合适自己的英文名.先因工作需要烦请各位帮忙出一个符合我中文名的谐音英文名! Thanks
中文名转换正确英文名有四种情况,详细如下:
1、中国人的名字在英语中用汉语拼音拼写,姓与名要分开写,不能连在一起,姓与名的第一个字母都要大写,姓氏在前面,名字在后面。
例如:我是王丽。译文:I'm Wang Li.
2、在姓氏和名字都是一个字时,在英语中姓和名的拼音首字母分别大写。
例如:李明。英文:Li Ming.
3、在姓氏是一个字、名字是两个字时,姓氏写法不变,名字为两个字,这名字的两个字的拼音要连起来写,只大写第一个字的拼音首字母。
例如:赵一亮。英文:Zhao Yiliang.
4、在中国姓氏中有复姓,也就是两个字,这样要把姓氏两个字的拼音连起来一起写第一个字母大写。
例如:诸葛亮。英文:Zhuge Liang.
扩展资料:
在名字里含有造成发音混淆的拼写字时,一般要用“’”来区分隔开。例如:张喜傲。Zhang Xi'ao.中文姓名与英文姓名在写法上是有区别的,中国人的名字是姓在前,名在后;英文姓名是名在前,姓在后。
中文名用英文还要一种写法,名在前,姓在后,姓和名分开写,姓和名的开头字母均大写,注意不要把名字分开,即名字+空格+姓氏,例如:单姓单字:白居易-Juyi Bai(居易+空格+白)。
英语姓名的一般结构为:教名+自取名+姓,如 William·Jefferson·Clinton,但在很多场合中间名往往略去不写,如 George·Bush,而且许多人更喜欢用昵称取代正式教名,如 Bill·Clinton。
上述教名和中间名又称个人名,英文名与中文名不同,中文名是姓在前名在后,英文名恰恰相反。例如:(中)李,小明;(英)Jake·Wood.
参考技术A 中文名转换正确英文名有四种情况,详细如下:1、中国人的名字在英语中用汉语拼音拼写,姓与名要分开写,不能连在一起,姓与名的第一个字母都要大写,姓氏在前面,名字在后面。
例如:我是王丽。译文:I\'m Wang Li.
2、在姓氏和名字都是一个字时,在英语中姓和名的拼音首字母分别大写。
例如:李明。英文:Li Ming.
3、在姓氏是一个字、名字是两个字时,姓氏写法不变,名字为两个字,这名字的两个字的拼音要连起来写,只大写第一个字的拼音首字母。
例如:赵一亮。英文:Zhao Yiliang.
4、在中国姓氏中有复姓,也就是两个字,这样要把姓氏两个字的拼音连起来一起写第一个字母大写。
例如:诸葛亮。英文:Zhuge Liang.
想要掌握英语学习技巧或者知识,推荐报班跟着外教学英语,或者先免费试听课程了解。
免费试听课分享:【点击领取真人外教一对一免费体验课】试听完之后,还可以免费获得一次英语能力水平测试和一份详细的报告,以及公开课免费看。
阿卡索是在线一对一教学,有固定外教的机构,可以让学员天天在家留学一样跟外教学英语,学习过程分级考试,并发相应证书,且价格亲民,一年学费才几千块钱,一堂课才20元左右。
希望可以帮到你啦!
想要找到合适英语培训机构,百度搜下“阿卡索vivi老师”即可。
百度搜下“阿卡索官网论坛”免费获取全网最齐全英语资源。
参考技术B 回答
中文名改成英文名有直译或意译两种。前者是根据字面意思来搭配含义相同的英文名。后者根据中文名字的含义或引申义选择同义或近义的英文名,还可以根据整个名字读音、根据其中一个字的读音,以及根据类似谐音的方法来选英文名。英文名的.英文意思是English name,各国比较流行英文名,因为世界各国交流多了,有了英文名更方便交流。英语姓名的一般结构为:教名 自取名 姓。如 William·Jefferson·Clinton。但在很多场合中间名往往略去不写,如 George·Bush,而且许多人更喜欢用昵称取代正式教名,如 Bill·Clinton。上述教名和中间名又称个人名。英文名与中文名不同,中文名是姓在前名在后,英文名恰恰相反。例如:中----李,小明;英----Jake·Wood。
参考技术C 事实上很多外国人对中国人的英文名常“无力吐槽”,因为他们大都盲目参考或选择英文名而显得不符合他们自身本来的特点。此处有一个想法,不一定与你名字完全谐音,看一看你是否喜欢。‘首先因为你的父亲姓隋,母亲姓高。家族的姓氏一定程度上是这个人独特的标志。姓建议直接拼音书写。即为“Suigao”或者省去母亲的姓为“Sui”。
其次你的名字中“旭”字为一亮点,所以我选择了“Samson”这个英文名,意为“像太阳一样的男子“,且其”S“开头,与你的”隋“姓拼音有一定相似。 参考技术D 中文名转换正确英文名有四种情况,详细如下:
1、中国人的名字在英语中用汉语拼音拼写,姓与名要分开写,不能连在一起,姓与名的第一个字母都要大写,姓氏在前面,名字在后面。
例如:我是王丽。译文:I'm Wang Li.
2、在姓氏和名字都是一个字时,在英语中姓和名的拼音首字母分别大写。
例如:李明。英文:Li Ming.
3、在姓氏是一个字、名字是两个字时,姓氏写法不变,名字为两个字,这名字的两个字的拼音要连起来写,只大写第一个字的拼音首字母。
例如:赵一亮。英文:Zhao Yiliang.
4、在中国姓氏中有复姓,也就是两个字,这样要把姓氏两个字的拼音连起来一起写第一个字母大写。
例如:诸葛亮。英文:Zhuge Liang.
如何正确地将 MIDI 刻度转换为毫秒?
【中文标题】如何正确地将 MIDI 刻度转换为毫秒?【英文标题】:How to correctly convert MIDI ticks to milliseconds? 【发布时间】:2015-12-08 21:28:48 【问题描述】:我正在尝试将 MIDI 节拍/增量时间转换为毫秒,并且已经找到了一些有用的资源:
-
MIDI Delta Time Ticks to Seconds
How to convert midi timeline into the actual timeline that should be played
MIDI Time Code spec
MTC
问题是我认为我没有正确使用这些信息。 我尝试应用 Nik 扩展的公式:
[ 1 min 60 sec 1 beat Z clocks ]
| ------- * ------ * -------- * -------- | = seconds
[ X beats 1 min Y clocks 1 ]
使用来自this test MIDI file的元数据:
<meta message set_tempo tempo=576923 time=0>
<meta message key_signature key='Ab' time=0>
<meta message time_signature numerator=4 denominator=4 clocks_per_click=24 notated_32nd_notes_per_beat=8 time=0>
像这样:
self.toSeconds = 60.0 * self.t[0][2].clocks_per_click / (self.t[0][0].tempo * self.t[0][2].denominator) * 10
这最初看起来不错,但后来似乎漂移了。 这是一个使用Mido 和pygame 的基本可运行示例(假设pygame 正确播放):
import threading
import pygame
from pygame.locals import *
from mido import MidiFile,MetaMessage
music_file = "Bee_Gees_-_Stayin_Alive-Voice.mid"
#audio setup
freq = 44100 # audio CD quality
bitsize = -16 # unsigned 16 bit
channels = 2 # 1 is mono, 2 is stereo
buffer = 1024 # number of samples
pygame.mixer.init(freq, bitsize, channels, buffer)
pygame.mixer.music.set_volume(0.8)
class MIDIPlayer(threading.Thread):
def __init__(self,music_file):
try:
#MIDI parsing
self.mid = MidiFile(music_file)
self.t = self.mid.tracks
for i, track in enumerate(self.mid.tracks):
print('Track : '.format(i, track.name))
for message in track:
if isinstance(message, MetaMessage):
if message.type == 'time_signature' or message.type == 'set_tempo' or message.type == 'key_signature':
print message
self.t0 = self.t[0][3:len(self.t[0])-1]
self.t0l = len(self.t0)
self.toSeconds = 60.0 * self.t[0][2].clocks_per_click / (self.t[0][0].tempo * self.t[0][2].denominator) * 10
print "self.toSeconds",self.toSeconds
#timing setup
self.event_id = 0
self.now = pygame.time.get_ticks()
self.play_music(music_file)
except KeyboardInterrupt:
pygame.mixer.music.fadeout(1000)
pygame.mixer.music.stop()
raise SystemExit
def play_music(self,music_file):
clock = pygame.time.Clock()
try:
pygame.mixer.music.load(music_file)
print "Music file %s loaded!" % music_file
except pygame.error:
print "File %s not found! (%s)" % (music_file, pygame.get_error())
return
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
# check if playback has finished
millis = pygame.time.get_ticks()
deltaMillis = self.t0[self.event_id].time * self.toSeconds * 1000
# print millis,deltaMillis
if millis - self.now >= deltaMillis:
print self.t0[self.event_id].text
self.event_id = (self.event_id + 1) % self.t0l
self.now = millis
clock.tick(30)
MIDIPlayer(music_file)
上面的代码应该做的是根据midi文件在正确的时间打印正确的歌词,但它会随着时间的推移而漂移。
将 MIDI 增量时间转换为秒/毫秒的正确方法是什么?
更新
根据 CL 的有用答案,我已更新代码以使用标题中的 ticks_per_beat。由于只有一条 set_tempo
元消息,我一直使用这个值:
import threading
import pygame
from pygame.locals import *
from mido import MidiFile,MetaMessage
music_file = "Bee_Gees_-_Stayin_Alive-Voice.mid"
#audio setup
freq = 44100 # audio CD quality
bitsize = -16 # unsigned 16 bit
channels = 2 # 1 is mono, 2 is stereo
buffer = 1024 # number of samples
pygame.mixer.init(freq, bitsize, channels, buffer)
pygame.mixer.music.set_volume(0.8)
class MIDIPlayer(threading.Thread):
def __init__(self,music_file):
try:
#MIDI parsing
self.mid = MidiFile(music_file)
self.t = self.mid.tracks
for i, track in enumerate(self.mid.tracks):
print('Track : '.format(i, track.name))
for message in track:
# print message
if isinstance(message, MetaMessage):
if message.type == 'time_signature' or message.type == 'set_tempo' or message.type == 'key_signature' or message.type == 'ticks_per_beat':
print message
self.t0 = self.t[0][3:len(self.t[0])-1]
self.t0l = len(self.t0)
self.toSeconds = 60.0 * self.t[0][2].clocks_per_click / (self.t[0][0].tempo * self.t[0][2].denominator) * 10
print "self.toSeconds",self.toSeconds
# append delta delays in milliseconds
self.delays = []
tempo = self.t[0][0].tempo
ticks_per_beat = self.mid.ticks_per_beat
last_event_ticks = 0
microseconds = 0
for event in self.t0:
delta_ticks = event.time - last_event_ticks
last_event_ticks = event.time
delta_microseconds = tempo * delta_ticks / ticks_per_beat
microseconds += delta_microseconds
print event.text,microseconds/1000000.0
self.delays.append(microseconds/1000)
#timing setup
self.event_id = 0
self.now = pygame.time.get_ticks()
self.play_music(music_file)
except KeyboardInterrupt:
pygame.mixer.music.fadeout(1000)
pygame.mixer.music.stop()
raise SystemExit
def play_music(self,music_file):
clock = pygame.time.Clock()
try:
pygame.mixer.music.load(music_file)
print "Music file %s loaded!" % music_file
except pygame.error:
print "File %s not found! (%s)" % (music_file, pygame.get_error())
return
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
# check if playback has finished
millis = pygame.time.get_ticks()
# deltaMillis = self.t0[self.event_id].time * self.toSeconds * 1000
deltaMillis = self.delays[self.event_id]
# print millis,deltaMillis
if millis - self.now >= deltaMillis:
print self.t0[self.event_id].text
self.event_id = (self.event_id + 1) % self.t0l
self.now = millis
clock.tick(30)
MIDIPlayer(music_file)
我根据转换为毫秒的时间打印消息的时间看起来要好得多。然而,几秒钟后,它仍然漂移。
我是否正确地将 MIDI 节拍转换为毫秒并跟踪更新 while 循环中经过的毫秒数?
转换的方式如下: self.delays = []
tempo = self.t[0][0].tempo
ticks_per_beat = self.mid.ticks_per_beat
last_event_ticks = 0
microseconds = 0
for event in self.t0:
delta_ticks = event.time - last_event_ticks
last_event_ticks = event.time
delta_microseconds = tempo * delta_ticks / ticks_per_beat
microseconds += delta_microseconds
print event.text,microseconds/1000000.0
self.delays.append(microseconds/1000)
这就是随着时间的推移检查是否遇到“提示”:
millis = pygame.time.get_ticks()
deltaMillis = self.delays[self.event_id]
if millis - self.now >= deltaMillis:
print self.t0[self.event_id].text
self.event_id = (self.event_id + 1) % self.t0l
self.now = millis
clock.tick(30)
我不确定此实现是否错误地将 MIDI 增量滴答转换为毫秒,是否错误地检查基于毫秒的延迟是否通过或两者兼而有之。
【问题讨论】:
【参考方案1】:首先,您必须合并所有音轨,以确保正确处理速度变化事件。 (如果您首先将增量时间转换为绝对刻度值,这可能会更容易;否则,每当在另一个轨道的事件之间插入事件时,您都必须重新计算增量时间。)
然后您必须为每个事件计算到最后一个事件的相对时间,如下面的伪代码所示。计算必须使用相对时间很重要,因为速度可能随时发生变化:
tempo = 500000 # default: 120 BPM
ticks_per_beat = ... # from the file header
last_event_ticks = 0
microseconds = 0
for each event:
delta_ticks = event.ticks - last_event_ticks
last_event_ticks = event.ticks
delta_microseconds = tempo * delta_ticks / ticks_per_beat
microseconds += delta_microseconds
if event is a tempo event:
tempo = event.new_tempo
# ... handle event ...
【讨论】:
感谢您的回答。待会儿会试试这个。只是想仔细检查一下:clocks_per_click
是否与 ticks_per_beat
相同? (我似乎在元消息中找不到ticks_per_beat
)
时间签名事件不需要来确定事件的时间;它们仅对符号有用。在 Mido 中,指定每拍节拍的属性称为 ticks_per_beat
。
对不起,我觉得我解释的不是很好。您可以看到我正在使用的测试 MIDI 文件的 MIDI 消息作为文本 here。看起来没有任何名为ticks_per_beat
的消息。 MIDI 文件是否有可能丢失此信息?如果是这样,可以做什么?谢谢(+1)
我完全错过了您到目前为止一直在清楚解释的内容:没有带有 ticks_per_beat 的元消息。此信息位于标头中,Mido 已经对其进行了解析。谢谢你让我明白了。我现在正在使用 ticks_per_beat,但随着时间的推移,我似乎仍然有点偏离,尽管最初它看起来非常准确。
@Stephane 合并后,节奏事件来自哪个轨道并不重要。是的。将它们加起来(每首曲目)。所有曲目。【参考方案2】:
您可能希望提高帧速率。在我的系统上,将clock.tick(30)
增加到clock.tick(300)
会得到很好的结果。您可以通过打印您的时间偏离了多少来衡量这一点:
print self.t0[self.event_id].text, millis - self.now - deltaMillis
在 30 个滴答声中,提示滞后 20 到 30 毫秒。在 300 个滴答声中,它们最多落后 2 毫秒。您可能希望进一步增加此值。
为了安全起见,您应该使用-u
开关运行python,以防止stdout
缓冲(这可能是不必要的,因为行以换行符结尾)。
我很难确定时间,但从“啊哈哈哈哈”来看,这些变化似乎是正确的。
【讨论】:
天哪!我是如此接近(但到目前为止)如此简单!感谢您为我分解它。如果没有 CL,我就不会来到这里。和你的帮助以上是关于中文名如何转换正确英文名的主要内容,如果未能解决你的问题,请参考以下文章